{"id":3193,"date":"2016-09-09T15:44:24","date_gmt":"2016-09-09T13:44:24","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=3193"},"modified":"2023-08-22T20:39:50","modified_gmt":"2023-08-22T18:39:50","slug":"xamarin-czyli-jak-dotrzec-do-100-rynku-mobilnego","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/xamarin-czyli-jak-dotrzec-do-100-rynku-mobilnego\/","title":{"rendered":"Xamarin, czyli jak dotrze\u0107 do 100% rynku mobilnego."},"content":{"rendered":"\n<p><strong>Witaj<\/strong> w <strong>\u015awiecie<\/strong> mobilnym! Zapraszam Ci\u0119 do poznania Xamarina, jako jednego z kilku podej\u015b\u0107 tworzenia wieloplatformowych aplikacji mobilnych.<\/p>\n\n\n\n<p>Ale zanim zaczniemy, sp\u00f3jrz na poni\u017cszy wykres.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/08\/smartphone_market_share.png\"><img decoding=\"async\" width=\"840\" height=\"397\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/08\/smartphone_market_share.png\" alt=\"Rynek system\u00f3w mobilnych\" class=\"wp-image-3194\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/08\/smartphone_market_share.png 840w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/08\/smartphone_market_share-300x142.png 300w\" sizes=\"(max-width: 840px) 100vw, 840px\" \/><\/a><figcaption class=\"wp-element-caption\">\u0179r\u00f3d\u0142o: <a href=\"http:\/\/www.idc.com\/\" target=\"_blank\" rel=\"noreferrer noopener\" rel=\"nofollow\" >www.idc.com<\/a><\/figcaption><\/figure>\n\n\n\n<p>Jak widzisz, rynkiem mobilnym rz\u0105dz\u0105 dwie platformy &#8211; Android i iOS. Windows Phone, mimo ma\u0142ego udzia\u0142u, jest r\u00f3wnie\u017c brany pod uwag\u0119 przy tworzeniu nowych aplikacji.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Co\u015b dla .NETowc\u00f3w<\/h2>\n\n\n\n<p>Si\u0119gaj\u0105c par\u0119 lat wstecz, programi\u015bci .NET w \u015bwiecie mobilnym mogli mie\u0107 wp\u0142yw tylko na jeden system &#8211; Windows Phone. Ten niestety nie przyj\u0105\u0142 zbyt dobrze. Aktualnie Windows Phone ma 2-3% rynku smartfon\u00f3w. Naprzeciw oczekiwaniom wielu programist\u00f3w pojawi\u0142 si\u0119 Xamarin, jako platforma umo\u017cliwiaj\u0105ca obj\u0119cie prawie 100% mobilnych system\u00f3w. To wszystko dzi\u0119ki aplikacjom tworzonym w C#, kt\u00f3re s\u0105 kompilowane na systemy Android, iOS oraz Windows Phone jako natywne, w 100% wspieraj\u0105ce specyficzne dla platform funkcjonalno\u015bci.<\/p>\n\n\n\n<p>C# zamiast Javy, Objective-C (Swift)?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Xamarin &#8211; co i jak?<\/h2>\n\n\n\n<p>W du\u017cym uproszczeniu &#8211; <a href=\"http:\/\/sii.pl\/landing-page-offer\/xamarin\/\">Xamarin<\/a> to darmowy ekosystem pozwalaj\u0105cy na tworzenie wieloplatformowych aplikacji w C#, w sk\u0142ad kt\u00f3rego wchodz\u0105:<br>Xamarin.iOS i Xamarin.Android, kt\u00f3re s\u0105 .NETowymi implementacjami Mono dla wiod\u0105cych system\u00f3w mobilnych. Jako programi\u015bci Xamarina, mamy dost\u0119p do 100% API, wi\u0119c mo\u017cna stwierdzi\u0107, \u017ce &#8222;wszystko co mo\u017cemy napisa\u0107 natywnie w Javie czy w Objective-C, mo\u017ce by\u0107 stworzone w C#&#8221;.<\/p>\n\n\n\n<p>Jak to si\u0119 dzieje?<br>Kompilator Xamarin.iOS kompiluje AOT(Ahead of time) aplikacje do natywnego kodu dla ARM, kt\u00f3ry jest uruchamiany bezpo\u015brednio na iPhone&#8217;ach.<br>Natomiast kompilator Xamarin.Android kompiluje do j\u0119zyka IL (Intermediate Language), nast\u0119pnie by uruchomi\u0107 aplikacj\u0119, korzysta z JIT (Just in time).<br>Dzi\u0119ki tym zabiegom, Xamarin jest transparentny dla docelowych system\u00f3w mobilnych, tworz\u0105c natywne, w pe\u0142ni funkcjonalne aplikacje.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Warto\u015b\u0107 komercyjna<\/h2>\n\n\n\n<p>Znane s\u0105 trzy podej\u015bcia do tworzenia wieloplatformowych aplikacji. R\u00f3\u017cni\u0105 si\u0119 one jako\u015bci\u0105 ko\u0144cowego produktu, kosztami wytworzenia oprogramowania oraz sposobami utrzymywania takich aplikacji.<\/p>\n\n\n\n<p>Pierwszym sposobem, zarazem najpopularniejszym, jest tworzenie trzech niezale\u017cnych aplikacji na ka\u017cd\u0105 z platform. Ka\u017cdy projekt jest rozwiany w innej technologii i w innym j\u0119zyku &#8211; Android w Javie, iOS w Objective-C lub Swift Windows Phone w C#. Minusem takiego rozwi\u0105zania s\u0105 koszty wytworzenia aplikacji, poniewa\u017c zazwyczaj musimy zaanga\u017cowa\u0107 trzy niezale\u017cne zespo\u0142y programist\u00f3w. W tym przypadku nie mamy r\u00f3wnie\u017c mo\u017cliwo\u015bci wsp\u00f3\u0142dzielenia kodu pomi\u0119dzy platformami, co mo\u017ce by\u0107 kluczowe przy bardziej zaawansowanych aplikacjach. Utrzymuj\u0105c takie aplikacje, dodaj\u0105c nowe funkcjonalno\u015bci, zmieniamy kod w trzech miejscach, zamiast w jednym &#8211; zasada DRY (Don&#8217;t Repeat Yourself) \ud83d\ude42<\/p>\n\n\n\n<p>Drugim sposobem s\u0105 aplikacje hybrydowe, kt\u00f3re tworzone przy pomocy HTML, CSS i JavaScript, s\u0105 z pozoru najta\u0144szym rozwi\u0105zaniem. Kod aplikacji jest wsp\u00f3\u0142dzielony, napisany raz. Dodatkowo, przy minimalnym nak\u0142adzie pracy, dzia\u0142aj\u0105 na ka\u017cdej z licz\u0105cych si\u0119 platform. Za\u0142o\u017cenia obiecuj\u0105ce, lecz realizacja\u2026 kiepska. Tego typu aplikacje s\u0105 z za\u0142o\u017cenia stronami internetowymi, kt\u00f3re umieszczone w odpowiednie kontrolki &#8222;symuluj\u0105&#8221; zachowanie i wygl\u0105d natywnych aplikacji. Niestety w znakomitej wi\u0119kszo\u015bci, tego typu aplikacje nie spe\u0142niaj\u0105 oczekiwa\u0144 coraz bardziej wymagaj\u0105cych u\u017cytkownik\u00f3w. Dodatkowo, programi\u015bci ubolewaj\u0105 nad ograniczonym dost\u0119pem do pe\u0142nego API system\u00f3w mobilnych.<\/p>\n\n\n\n<p>I w ko\u0144cu &#8211; co w przypadku, gdy klient oczekuje najwy\u017cszej jako\u015bci aplikacji przy mniejszym bud\u017cecie, ni\u017c w przypadku rozwi\u0105za\u0144 natywnych?<\/p>\n\n\n\n<p>Naprzeciw przychodzi Xamarin, jako trzeci spos\u00f3b tworzenia wieloplatformowych aplikacji. Tworz\u0105c aplikacje w tej technologii, zapewniamy u\u017cytkownikom natywny wygl\u0105d, wydajno\u015b\u0107 i u\u017cyteczno\u015b\u0107 aplikacji.<br>Xamarin pozwala na wsp\u00f3\u0142dzielenie kodu logiki aplikacji, dzi\u0119ki czemu unikamy powielania pracy programist\u00f3w. Dodatkowo nie potrzebujemy trzech zespo\u0142\u00f3w developer\u00f3w. Jeden zesp\u00f3\u0142 jest w stanie stworzy\u0107 trzy aplikacje, na ka\u017cdy z system\u00f3w. Ta mo\u017cliwo\u015b\u0107 czyni Xamarina ta\u0144szym sposobem tworzenia natywnych aplikacji!<br>Gdy zdecydujemy si\u0119 na wyb\u00f3r dodatkowych framework\u00f3w, kt\u00f3re przyk\u0142adowo implementuj\u0105 wzorzec MVVM, mamy szans\u0119 stworzy\u0107 u\u017cyteczne, skalowalne aplikacje, kt\u00f3re s\u0105 \u0142atwe w utrzymaniu. A to wszystko w C#!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Podsumowuj\u0105c<\/h2>\n\n\n\n<p>Xamarin, jako nowe podej\u015bcie do tworzenia natywnych aplikacji jest niew\u0105tpliwie ciekawym wyborem.<br>Dodaj\u0105c odrobin\u0119 goryczy do pokrytych lukrem zalet, warto wspomnie\u0107, \u017ce proces tworzenia aplikacji w Xamarinie jest nie jest a\u017c trzy razy ta\u0144szy, ni\u017c w przypadku rozwi\u0105za\u0144 natywnych. Dodatkowo, w dalszym ci\u0105gu niezb\u0119dna jest wiedza osoby znaj\u0105cej natywne API danej platformy mobilnej. Jest jeszcze wiele innych zmiennych, kt\u00f3re decyduj\u0105 o wyborze w\u0142a\u015bciwego rozwi\u0105zania. Na przedstawienie kolejnych przyjdzie jeszcze pora \ud83d\ude42<\/p>\n\n\n\n<p>Na koniec, kr\u00f3tko o mojej przygodzie z Xamarinem:<br>Od ko\u0144ca 2014 roku, Xamarin jest g\u0142\u00f3wn\u0105 technologi\u0105 zespo\u0142u tworz\u0105cego aplikacje mobilne w Praktyce Digital w <a href=\"http:\/\/sii.pl\/\">Sii<\/a>. Zrealizowali\u015bmy wiele projekt\u00f3w tworz\u0105c dobrej jako\u015bci, u\u017cyteczne aplikacje dla system\u00f3w iOS, Android i Windows Phone. My podj\u0119li\u015bmy decyzj\u0119. Teraz czas na Ciebie \ud83d\ude42<\/p>\n\n\n\n<p>Je\u015bli interesuje Ciebie Xamarin, chcesz dowiedzie\u0107 si\u0119 wi\u0119cej o studiach przypadk\u00f3w naszych projekt\u00f3w, b\u0105d\u017a pozna\u0107 nasze praktyki tworzenia aplikacji &#8211; daj zna\u0107! Mamy jeszcze wiele do powiedzenia \ud83d\ude42<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;3193&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;1&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;5\\\/5 ( vote: 1)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Xamarin, czyli jak dotrze\u0107 do 100% rynku mobilnego.&quot;,&quot;width&quot;:&quot;139.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 139.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            5\/5 ( vote: 1)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Witaj w \u015awiecie mobilnym! Zapraszam Ci\u0119 do poznania Xamarina, jako jednego z kilku podej\u015b\u0107 tworzenia wieloplatformowych aplikacji mobilnych. Ale zanim &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/xamarin-czyli-jak-dotrzec-do-100-rynku-mobilnego\/\">Continued<\/a><\/p>\n","protected":false},"author":107,"featured_media":3235,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1314],"tags":[275,413],"class_list":["post-3193","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-twardo","tag-mobile","tag-xamarin"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/09\/Xamarin-blogersii-sii.jpg","category_names":["Development na twardo"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/3193"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/107"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=3193"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/3193\/revisions"}],"predecessor-version":[{"id":23760,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/3193\/revisions\/23760"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/3235"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=3193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=3193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=3193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}