Tajniki tworzenia aplikacji mobilnych. Co to jest „aplikacja natywna”? Tworzenie aplikacji natywnych na Androida

💖 Podoba Ci się? Udostępnij link swoim znajomym

Rynek aplikacji mobilnych ma już kilkanaście lat, ale wciąż prężnie się rozwija. Popyt ze strony przedsiębiorstw stale rośnie i nadal znacznie przewyższa podaż, co powoduje stały wzrost kosztów rozwoju. Jednym z rozwiązań pozwalających obniżyć koszty tego procesu jest rozwój wieloplatformowy, gdy na wszystkich platformach używany jest ten sam kod.

Ostatnim razem poruszyliśmy kwestię wieloplatformowego rozwoju urządzeń mobilnych i od tego czasu wiele się zmieniło. Pora znów porozmawiać o metodach i narzędziach.

Najpierw jeszcze raz omówmy terminologię.

Rodzinny

Jeśli programiści w trakcie pisania aplikacji skorzystają z języka programowania przyjętego dla konkretnej platformy, czy to Objective-C i Swift dla iOS, czy też taka aplikacja będzie nazywana natywną (od angielskiego native - native, natural).

Zalety aplikacji natywnych:

  • szybkość i reakcję interfejsu. Aplikacja natychmiast reaguje na kliknięcia, praktycznie nie ma opóźnień w animacji, przewijaniu, odbieraniu i wysyłaniu danych;
  • przejrzysty i łatwy dostęp do funkcji urządzenia i czujników. Dla programisty praca z geolokalizacją, powiadomieniami push, robieniem zdjęć i filmów za pomocą aparatu, dźwięku, akcelerometru i innych czujników nie stanowi problemu;
  • możliwość dogłębnej pracy z funkcjami smartfona. Podobnie jak w poprzednim akapicie, takie rzeczy jak animacje, tworzenie złożonych interfejsów i działanie sieci neuronowych bezpośrednio na urządzeniach są realizowane, być może nie prosto, ale przewidywalnie;
  • . Aplikacje natywne zazwyczaj działają z elementami interfejsu „platformowego”: menu, nawigacja, formularze i wszystkie inne elementy projektu są pobierane z systemu operacyjnego i dlatego są znajome i zrozumiałe dla użytkownika.

Jest tylko jedna wada - wysoki koszt rozwoju i wsparcia. Dla każdej platformy musisz napisać własny kod. Wraz z rozwojem rynku aplikacji mobilnych programiści stali się nie tylko drodzy, ale i bardzo drodzy.

A nie krewni

Aplikacje wieloplatformowe pisane są na kilka platform jednocześnie w jednym języku innym niż natywny. Jak taki kod może działać na różnych urządzeniach? Tutaj również istnieją dwa podejścia.

Po pierwsze, na etapie przygotowania aplikacji do publikacji zostaje ona zamieniona na natywną dla konkretnej platformy za pomocą transpilera. W rzeczywistości jeden wieloplatformowy język programowania jest „tłumaczony” na inny.

Po drugie, do powstałego kodu dodawany jest pewien wrapper, który pracując już na urządzeniu, na bieżąco tłumaczy wywołania z kodu obcego na natywne funkcje systemowe.

Zakłada się, że większość tego kodu można przenosić pomiędzy platformami – oczywiste jest, że nie zmienia się np. logika dokonywania zakupów, zapisywania towaru do koszyka, obliczania trasy taksówki, pisania wiadomości w komunikatorze w zależności od tego czy klient posiada system Android czy iOS. Musimy tylko ulepszyć interfejs użytkownika i UX platform, ale teraz, w pewnych granicach, nawet to można połączyć - na przykład menu hamburgera jest aktywnie wykorzystywane zarówno na Androidzie, jak i iOS. Zatem nawet wprowadzenie poprawek w interfejsie tak, aby aplikacja odpowiadała duchowi i literze pożądanej platformy, jest kwestią pragnień, wymaganej szybkości i jakości rozwoju.

Zalety:

  • koszt i szybkość rozwoju. Ponieważ trzeba napisać znacznie mniej kodu, koszty pracy są zmniejszone;
  • umiejętność wykorzystania zasobów wewnętrznych firmy. Jak pokażemy później, tworzeniem wieloplatformowych aplikacji mobilnych często mogą zajmować się obecni programiści.

Wady:

  • nienatywny interfejs lub przynajmniej konieczność pracy z interfejsem każdej platformy osobno. Każdy system ma swoje wymagania dotyczące projektowania elementów i czasami się one wykluczają. Należy to wziąć pod uwagę podczas opracowywania;
  • problemy we wdrażaniu złożonych funkcji lub możliwe problemy w pracy nawet z prostymi procedurami z powodu błędów w samych frameworkach programistycznych. Środowisko wieloplatformowe tłumaczy jedynie żądania do wywołań systemowych i interfejsów na format zrozumiały dla systemu, dlatego na tym etapie mogą wystąpić zarówno trudności ze zrozumieniem, jak i błędy w samym frameworku;
  • szybkość pracy. Ponieważ środowisko wieloplatformowe stanowi „nadbudowę” nad kodem (nie zawsze, ale w niektórych sytuacjach), ma swoje własne opóźnienia i przerwy w przetwarzaniu działań użytkownika i wyświetlaniu wyników. Było to szczególnie zauważalne kilka lat temu na smartfonach, które miały mniejszą moc w porównaniu do dzisiejszych, jednak teraz, przy wzroście wydajności urządzeń mobilnych, można to już pominąć.

Jak widać, te dwie metody są praktycznie lustrzanym odbiciem siebie - zalety programowania natywnego, wady programowania międzyplatformowego i odwrotnie.

Popularne wieloplatformowe platformy i narzędzia programistyczne

Jak pisaliśmy powyżej, są dwa podejścia – zamiana kodu na natywny na etapie montażu lub dodanie pewnego wrappera, który tłumaczy wywołania do i z systemu.

Cordova i PWA to dwa narzędzia, które sprawdzają się właśnie w ideologii wrappera.


Kordowa i HTML5

Jeden z najpopularniejszych obszarów programowania wieloplatformowego, często nazywany popularnie PhoneGap. Tak naprawdę powstaje mobilna witryna internetowa, która jest „opakowana” w niewielki kod platformy, który przekazuje wywołania z systemu do aplikacji i z powrotem.

Wszystkie wady i zalety są tutaj wyrażone wyraźniej niż gdziekolwiek indziej. Możesz skorzystać z usług programistów internetowych (HTML, CSS i JavaScript jako podstawowe technologie) i stworzyć pierwszą wersję aplikacji w ciągu miesiąca lub nawet kilku tygodni za stosunkowo niewielkie pieniądze. Tak, spowolni działanie, może nie będzie mieć w pełni dokładnej geolokalizacji, ale będzie działać na wszystkich urządzeniach i pozwoli przynajmniej przetestować zapotrzebowanie ze strony klientów na urządzeniach mobilnych.

Dla tego podejścia stworzono ogromną liczbę frameworków, ale wszystkie robią zasadniczo to samo. Różnica między nimi polega na tym, że Cordova (PhoneGap) nie nakłada ograniczeń i szablonów na logikę i UI dla Twojego projektu HTML5, a frameworki działają z własnymi, gotowymi elementami UI, które imitują platformy mobilne i własną logikę programistyczną. Przykładem takiego podejścia jest: Ionic Framework - opakowanie; Framework7, Mobile Angular UI, Sencha Touch, Kendo UI - frameworki interfejsów.

PWA

Modna technologia od Google to same aplikacje webowe, tyle że poprzez zastosowanie określonych technologii (przede wszystkim tzw. Service Worker – skrypty działające w tle oraz Web App Manifest – opis aplikacji webowej w formie zrozumiałej dla telefonu komórkowego system ) mogą działać jak natywne bez opakowania PhoneGap. Można je zainstalować na ekranie głównym z pominięciem sklepu z aplikacjami, pracować w trybie offline, pracować z powiadomieniami push i funkcjami natywnymi.

Problem w tym, że nie wszystkie platformy nawet teraz obsługują te „pewne technologie”. Dotyczy to przede wszystkim Apple’a, któremu najwyraźniej bardzo nie podoba się możliwość dystrybucji aplikacji z pominięciem App Store.

Biorąc pod uwagę wszystkie mankamenty rozwiązań HTML5, wiele firm stworzyło narzędzia, które pozwalają na pisanie kodu w jednym, nienatywnym języku, a następnie jego tłumaczenie na natywny. To upiecze dwie pieczenie na jednym ogniu: baza kodu jest tylko jedna, a aplikacje są jak najbardziej zbliżone do natywnych.


Xamarin

Platforma Microsoftu. Standardem języka programowania dla rozwoju przedsiębiorstw jest C#, a wieloplatformowym środowiskiem programistycznym jest Visual Studio. Wynikiem są natywne aplikacje dla systemów iOS, Android i Windows. To prawda, stosunkowo duży rozmiar.

Reaguj natywnie

Platforma z - aplikacje są pisane w JavaScript i przy użyciu stylów przypominających CSS. Interfejs okazuje się natywny, a kod jest interpretowany na platformie, co daje mu niezbędną elastyczność.

Będąc stosunkowo młodą platformą, React Native nadal oczywiście (choć nie katastrofalnie) cierpi na brak narzędzi programistycznych i dokumentacji.

Trzepotanie

Naturalnie taki gigant jak Google nie mógł zignorować tematu wieloplatformowego tworzenia aplikacji na Androida i iOS. Flutter, choć obecnie tylko w wersji beta, przyjmuje inne podejście niż React Native i Xamarin. Nie zamienia kodu źródłowego na kod natywny, który jest wykonywany przez platformę, ale tak naprawdę rysuje okno na ekranie smartfona i samodzielnie renderuje wszystkie elementy. Używany język to „zastrzeżony” Dart, który Google stworzył jako ulepszoną wersję JavaScript.

Ma to zarówno zalety (na przykład zewnętrznie identyczne interfejsy), jak i wady (na przykład przerysowanie interfejsu wymaga pewnej ilości pamięci i czasu procesora).

Platforma szybko się rozwija, a Google inwestuje w nią wiele wysiłku i pieniędzy. Jednak w porównaniu z Flutterem nawet React Native wydaje się bardzo ugruntowanym i imponującym ekosystemem.

Co wybrać

Pewnie już Ci się kręci w głowie, ale nadal nie masz pojęcia, co wybrać. Przedstawiamy prostą listę pytań, które mogą Ci pomóc:

  • Czy powinno to w jakiś sposób działać na dowolnym urządzeniu? Wybierać HTML jako podstawa;
  • Masz wystarczające środki, nie spieszysz się i zależy Ci na aplikacji najwyższej jakości? Masz bezpośrednią ścieżkę do rodzimy rozwój;
  • Czy masz „wbudowanego” programistę internetowego, czy po prostu chcesz szybko i łatwo wypróbować aplikację mobilną w działaniu? Tutaj możemy polecić Cordova/HTML lub PWA;
  • Czy masz własny system CRM i wspierającego go programistę C#? Weź to Xamarin;
  • „chcesz spróbować”, ale chcesz, aby wszystko było piękne i modne? Odwracać wzrok Reaguj natywnie lub Flutter.

Można też przejść od drugiej strony. Przyjrzyj się funkcjom, których będziesz potrzebować w swojej aplikacji, i wykonaj następujące czynności:

  • prosta aplikacja do wizytówek? Brać Reaguj natywnie lub HTML5 a otrzymasz dwie platformy za minimalną cenę;
  • Masz stronę internetową o dużym ruchu i chcesz przetestować swoją obecność w przestrzeni mobilnej? HTML5;
  • złożone aplikacje z dostępem do pożądanych funkcji urządzenia? Rozwój natywny, Xamarin, React Native.

Rozwój międzyplatformowy nie jest panaceum

Wybierając, musisz kontynuować przydzielone zadania i istniejące zasoby. Rozwój wieloplatformowy to dobry i zrozumiały kierunek, jednak mający swoje zalety i wady, o których należy pamiętać przed uruchomieniem projektu. Ukończona aplikacja wieloplatformowa jest oczywiście lepsza niż nieutworzona aplikacja natywna. Możesz szybko i tanio ją opracować, wgrać do sklepu i po prostu sprawdzić zapotrzebowanie użytkowników - czy ktoś szuka Twojej aplikacji, czy ją instaluje, z jakich funkcji korzysta. Na podstawie wyników takiego eksperymentu będzie można zadecydować o losach kierunku mobile w Twojej firmie i inwestycjach w nią.

Czy nadal masz wątpliwości i pytania dotyczące aplikacji wieloplatformowych? Przeczytaj, jak stworzyliśmy aplikację umożliwiającą szybkie uzyskanie abonamentu w jednej z miejskich instytucji sportowych i wypróbuj aplikację do płacenia za wszelkiego rodzaju usługi - od usług mieszkaniowych i komunalnych po zamówienia w sklepach internetowych. Jeszcze lepiej, zapisz się na bezpłatną konsultację, podając przybliżony budżet i krótki opis pomysłu lub skontaktuj się telefonicznie z naszą menadżerką Katią

Smartfony zyskują coraz więcej miejsca na słońcu, nie tylko jako narzędzie do konsumowania zdjęć kotów i filmów XXX, ale także jako narzędzie pracy. Dlatego rośnie zapotrzebowanie na rozwój mobilny. Ogólnie przyjmuje się, że praca i chłodzenie to Objective-C/Swift dla iOS i Java/Kotlin dla Androida. Bez wątpienia jest to ciężka praca i fajna, ale istnieje wiele rzeczywistych scenariuszy, w których korzystanie z frameworków wieloplatformowych jest bardziej preferowane w porównaniu z narzędziami natywnymi.

Niektórzy programiści oczekują, że frameworki wieloplatformowe rozwiążą wszystkie ich problemy życiowe, podczas gdy inni są do nich wrogo nastawieni. Obydwa „walczące obozy” mają swoje własne błędne przekonania spowodowane brakiem zrozumienia, jak i co działa. To dodaje oliwy do ognia, bo zamiast technicznych argumentów używane są emocje.

Również wśród programistów, zwłaszcza początkujących, istnieje wiele mitów na temat wieloplatformowych frameworków mobilnych. W naszym artykule przeanalizujemy najpopularniejsze z nich. Ale najpierw spójrzmy na rozwój urządzeń mobilnych oczami firmy, która zapewnia pieniądze na cały blackjack IT.

Dlaczego potrzebujemy narzędzi wieloplatformowych?

Historycznie rzecz biorąc, na rynku komputerów zawsze istniała konkurencja, a każdy producent zapewniał optymalny zestaw tzw. natywnych narzędzi do tworzenia aplikacji dla swoich systemów operacyjnych i urządzeń.

Narzędzia natywne = dostarczane przez właściciela ekosystemu.

Wszystkie inne oznaki „natywności” są DRUGIE - zachowanie i interfejs aplikacji, dostęp do możliwości systemu operacyjnego, wydajność itp.

Poza tym prawie zawsze okazywało się, że narzędzia natywne są ze sobą niekompatybilne nie tylko na poziomie języków programowania, przyjętych konwencji i architektur, ale także na poziomie mechanizmów pracy z systemem operacyjnym i bibliotekami. W rezultacie, aby zaimplementować te same algorytmy i interfejsy, konieczne było napisanie aplikacji dla kilku środowisk w różnych językach programowania, a następnie obsługa jej w oparciu o zasadę „jednego polecenia na platformę”. Jednocześnie możliwości i wygląd aplikacji na różnych platformach są prawie zawsze w 90% identyczne. Dla zabawy porównaj implementację swoich ulubionych programów na iOS i Androida.

Drugą ważną kwestią jest obecność niezbędnej wiedzy i doświadczenia w zespole: jeśli ich nie ma, nauka zajmie trochę czasu.

Aby rozwiązać oba te problemy, na rynku od dawna pojawiają się wieloplatformowe narzędzia programistyczne (nie tylko mobilne), oferujące:

  • zmaksymalizować wspólną bazę kodu w jednym języku programowania, dzięki czemu produkt jest łatwiejszy w rozwoju i utrzymaniu;
  • wykorzystać istniejące kompetencje i specjalistów do wdrażania aplikacji na nowych platformach.

Ponieważ obecnie istnieje wiele języków programowania (i środowisk) (oraz specjalistów posługujących się tymi językami), istnieje spora liczba narzędzi do programowania międzyplatformowego. Jako przykład skupimy się na tych popularnych w naszym regionie PhoneGap, Xamarin, React Native i Qt.


Teraz możemy porozmawiać o mitach.

Mit 1. Magia

Najczęstszy mit, który straszy początkujących programistów, związany jest z wiarą w superalgorytmy (i superprogramistów, którzy je stworzyli), które w magiczny sposób zamieniają aplikacje wieloplatformowe w natywne. Coś na wzór „konwertowania kodu JavaScript na Swift, a następnie kompilowania aplikacji Swift”. Mit ten podsycają sami twórcy narzędzi wieloplatformowych, obiecując w rezultacie powstanie „aplikacji natywnych”. I nie chodzi o to, że ktoś tu kłamie, ale bogata wyobraźnia i niezrozumienie podstawowych mechanizmów skłaniają czasami programistów do myślenia o technikach szamańskich.

Główną zasadą leżącą u podstaw rozwiązań wieloplatformowych jest podzielenie kodu na dwie części:

  • wieloplatformowe, żyjąc w środowisku wirtualnym i mając ograniczony dostęp do możliwości platformy docelowej poprzez specjalny most;
  • rodzinny, który zapewnia inicjalizację aplikacji, zarządzanie cyklem życia kluczowych obiektów oraz ma pełny dostęp do systemowych API.


Aby połączyć świat „natywny” ze światem „międzyplatformowym”, konieczne jest użycie specjalnego most, to on określa możliwości i ograniczenia frameworków wieloplatformowych.

Podczas korzystania z mostu wydajność jest zawsze zmniejszona ze względu na konwersję danych pomiędzy „światami”, a także konwersję wywołań API i bibliotek.

Dlatego wszystkie aplikacje wieloplatformowe muszą mieć część natywną, w przeciwnym razie system operacyjny po prostu nie będzie w stanie ich uruchomić. Przyjrzyjmy się więc bliżej, jakie systemowe API i mechanizmy udostępniają same iOS, Android i Windows. Przejdźmy do kolejnego mitu.

Mit 2. Nie rodzimy!

Mamy więc wieloplatformową część aplikacji, żyjącą w środowisku wirtualnym i wchodzącą w interakcję z systemem operacyjnym za pośrednictwem infrastruktury frameworkowej i mostu.

Wszystkie systemy operacyjne: iOS, Android i Windows UWP zapewniają dostęp do następujących podsystemów (zestawów systemowych API):

  • WebView (przeglądarka internetowa w aplikacji) jest używana w mashupach opartych na PhoneGap i zasadniczo działa jako środowisko wykonawcze dla lokalnej witryny internetowej;
  • Silniki JavaScript są wykorzystywane w React Native i analogach do szybkiego wykonywania kodu JS i wymiany danych pomiędzy Native i JS;
  • OpenGL ES (lub DirectX) jest używany w silnikach gier i aplikacjach opartych na Qt/QML lub analogach do renderowania interfejsu;
  • Podsystem UI odpowiada za natywny interfejs użytkownika aplikacji, który jest istotny dla React Native i Xamarin.


Aplikacje wieloplatformowe posiadają część natywną i taki sam pełny dostęp do systemowych API, jak aplikacje natywne. Różnica polega na tym, że metoda systemowa jest wywoływana poprzez most i infrastrukturę frameworka:

Widok sieciowy- aplikacja działa w przeglądarce internetowej, podobnie jak jednostronicowa witryna internetowa. Nie ma dostępu do natywnych kontrolek (przycisków, list itp.), wszystko opiera się na HTML/CSS/JavaScript. Z drugiej strony twórca stron internetowych będzie czuł się jak ryba w wodzie.

Silniki JavaScript stał się popularny stosunkowo niedawno, gdyż podobny mechanizm dodano do iOS dopiero w wersji 7.0. Jedną z cech wartych rozważenia jest konieczność serializacji złożonych struktur danych przesyłanych pomiędzy środowiskami JavaScript i Native w formacie JSON. Krótko opisując tę ​​klasę rozwiązań, kod JS sterujący aplikacją natywną wykonywany jest w środowisku JavaScript.

OpenGL ES i DirectX są podsystemami niskiego poziomu i służą do renderowania interfejsu użytkownika w grach i na przykład Qt/QML. Oznacza to, że korzystając z OpenGL/DirectX, programiści sami rysują elementy sterujące i animacje, które mogą być podobne tylko do natywnych. Z drugiej strony jest to podsystem niskiego poziomu o bardzo dużej wydajności, dlatego wykorzystuje się go także w wieloplatformowych silnikach gier.

Wszystkie aplikacje wieloplatformowe posiadają część natywną, a zatem potencjalnie taki sam pełny dostęp do systemowych API, jak aplikacje natywne. Ponadto aplikacje wieloplatformowe są budowane i pakowane przy użyciu natywnych narzędzi w natywne pakiety instalacyjne. Kluczowym pytaniem jest to, jak zorganizowana jest interakcja pomiędzy częścią wieloplatformową a natywną. Na przykład w WebView lub przy użyciu Open GL ES / DirectX nie ma możliwości stworzenia interfejsu użytkownika o całkowicie natywnym wyglądzie, ale jednocześnie jest pełny dostęp do GPS, powiadomień push i innych funkcjonalności. A kod w JavaScript lub C# może w miarę swobodnie kontrolować natywną aplikację i jej zachowanie, zapewniając całkowicie natywny wygląd.

Podsumowując, tak, jest „nienatywny” pod względem zastosowanych narzędzi programistycznych (nie od Apple, Google). Ale aplikacja może być całkowicie natywna pod względem dostępu do systemowych API i zapewniać całkowicie natywny wygląd i działanie. I przechodzimy do kolejnego mitu.

Mit 3. Kula na kuli

Tutaj warto zrozumieć, że natywne API nie są domyślnie uważane za kule (choć są tu różne opinie), więc całe oburzenie skierowane jest w stronę części wieloplatformowej. Oczywiście środowisko wykonawcze (np. WebView, silnik JavaScript czy Mono) również trudno nazwać kulą – dojrzałymi, dojrzałymi rozwiązaniami z długą historią.

Wydaje się, że podstawą jest integracja części wieloplatformowej z natywną. Aby lepiej zrozumieć działanie różnych frameworków, na przykładzie PhoneGap, Xamarin, Qt i React Native przyjrzymy się mechanizmom systemów operacyjnych, które służą do łączenia części międzyplatformowych i „natywnych”.

Zaczniemy od PhoneGap. Poniżej znajduje się architektura najwyższego poziomu aplikacji opartej na tym frameworku.



Aplikacja na PhoneGap jest w rzeczywistości aplikacją natywną, która wyświetla WebView jako jedyną kontrolkę interfejsu użytkownika. To dzięki niemu następuje interakcja z częścią natywną. Wszystkie standardowe widoki WebView w systemach iOS, Android i Windows UWP obsługują możliwość dodawania własnych natywnych procedur obsługi właściwości i metod JS. Jednocześnie kod JS żyje we własnym izolowanym środowisku i nie wie nic o części natywnej - po prostu pobiera niezbędne metody JS lub zmienia niezbędne właściwości JS. Wszystko mieści się wewnątrz standardowego webowego DOM-u, do którego po prostu dodawane są nowe elementy związane z natywną implementacją.



Tworząc aplikacje w React Native, programista prawie zawsze będzie musiał zaimplementować część natywną w Objective-C, Java lub C#, a zarządzanie samą aplikacją natywną będzie pochodzić z JavaScript. W rzeczywistości silnik JavaScript jest elementem WebView, który jest dostępny osobno. Interakcja odbywa się poprzez ten sam most JS, co w przypadku PhoneGap. Jednak w React Native kod JS nie kontroluje drzewa DOM sieci Web, ale natywną aplikację.

Należy pamiętać, że ze względu na ograniczenia iOS (nie ma możliwości wdrożenia JIT), kod JavaScript jest interpretowany na bieżąco, a nie kompilowany. Generalnie nie ma to istotnego wpływu na wydajność w rzeczywistych zastosowaniach, jednak warto o tym pamiętać.

Przyjrzyjmy się teraz klasycznym Xamarin.iOS i Xamarin.Android, ponieważ Xamarin.Forms (który obsługuje Windows UWP) jest nadzbiorem na nich.



Xamarin używa biblioteki Mono do interakcji z docelowym systemem operacyjnym, co umożliwia wywoływanie kodu natywnego przy użyciu mechanizmu P/Invoke. Służy również do komunikacji z natywnymi interfejsami API w systemie iOS/Android. Oznacza to, że dla wszystkich publicznych natywnych metod API w języku C# tworzone są opakowania, które z kolei wywołują systemowe interfejsy API. W ten sposób możesz uzyskać dostęp do wszystkich systemowych interfejsów API z aplikacji platformy Xamarin.

I na koniec spójrzmy na Qt, ponieważ jest wiele pytań na ten temat od doświadczonych programistów.



Qt jest „rzeczą samą w sobie”, ma to zarówno zalety, jak i ograniczenia. Biblioteki Qt po prostu łączą się z interfejsami API systemu C++, które można znaleźć we wszystkich systemach operacyjnych. Do renderowania interfejsu użytkownika używane są mechanizmy niskiego poziomu, ale własny silnik graficzny obsługuje natywną stylizację. W takim przypadku na Androidzie musisz uzyskać dostęp do API Java poprzez specjalny most (most JNI), a w przypadku Windows UWP użyj konwertera wywołań Open GL ES na DirectX, ponieważ Open GL nie jest dostępny dla UWP.

Podsumowując: wszystkie frameworki wieloplatformowe korzystają ze standardowych natywnych możliwości systemów operacyjnych, są dojrzałe i tworzone są przez doświadczone zespoły oraz społeczność open source przy wsparciu gigantów branży IT. I wreszcie czas na „najsilniejszy” argument.

Mit 4. Powolny

Ważną kartą atutową, którą ludzie lubią wykorzystywać w sporach dotyczących frameworków wieloplatformowych, jest niska wydajność. Znowu zależy to od tego, z czym porównać i jakie papugi liczyć.

Przypomnijmy, że osobliwością aplikacji wieloplatformowych jest równoległe istnienie dwóch światów połączonych mostem:

  • PhoneGap: HTML/JS i natywna Java / Objective-C / C#;
  • Reaguj natywnie: JS i natywna Java / Objective-C / C#;
  • Xamarin: Mono i natywna Java/Objective-C;
  • Qt: C++ i natywna Java/Objective-C.

Dlatego porównując wydajność, należy wziąć pod uwagę szybkość działania:

  • część wieloplatformowa;
  • część rodzima;
  • most.

Jeśli na przykład wpiszesz w wyszukiwarce, zareagujesz na wydajność natywną lub szybką, możesz przyjrzeć się wielu różnym testom i wiele z nich zauważy, że wydajność gwałtownie spada przy aktywnym użyciu mostu, w tym aktywnej manipulacji interfejsem użytkownika z poziomu krzyżówki kod platformy. W przypadku Xamarina sytuacja wygląda tak samo - część wieloplatformowa jest bardzo szybka i porównywalna z natywną w przetwarzaniu danych, jednak przy korzystaniu z mostu wydajność może spaść. Qt ogólnie działa na poziomie C++, który sam w sobie jest szybki. Jeśli weźmiemy pod uwagę rozwiązania oparte na PhoneGap, to wydajność będzie w dużym stopniu zależała od WebView, ale mimo to nie należy aktywnie zmieniać interfejsu użytkownika w kodzie JavaScript ani przeprowadzać obliczeń naukowych.

Powoli? Tak, możliwe są spadki wydajności z powodu nieudolnej interakcji z systemem operacyjnym przez most. Jednak same światy wieloplatformowe są tak samo szybkie jak światy natywne.

Od czego zaczynasz swój poranek? Wcześniej ludzie uwielbiali czytać przy śniadaniu najnowszą gazetę, z której dowiadywali się o najświeższych wiadomościach, wydarzeniach na świecie, znajdowali reklamy i czytali dowcipy. Jednak świetlana przyszłość science-fiction już nadeszła, gazety zostały zastąpione smartfonami i tabletami, a sekcja żartów przekształciła się w całą aplikację. Z aplikacji dowiadujemy się o pogodzie, kursach walut, aktualnościach, sprawdzamy, gdzie są korki, śledzimy poczynania naszych ulubionych artystów, przeglądamy plakaty i tak dalej. Mocno wkroczyli w życie współczesnego człowieka. A współczesny człowiek często podejmuje się ich rozwijania. A często zdarza się, że nie ma pojęcia, że ​​istnieją aplikacje natywne, a są aplikacje hybrydowe i webowe, nie wie jak je rozróżnić i jaki typ lepiej pasuje do koncepcji jego projektu.

Dzisiaj o aplikacjach natywnych i hybrydowych porozmawiamy z Denisem Altukhovem, programistą Androida w Anadea.

Cześć Denis!
Cześć!

Powiedz mi jak profesjonalista: czym różnią się aplikacje natywne od hybrydowych?
Cóż, spójrz: natywne są tworzone pod konkretną platformę, czy to Android, iOS, czy Windows. Są napisane w językach natywnych – Java w przypadku Androida i Objective C w przypadku iOS. Pobierane wyłącznie z oficjalnych sklepów.

Lubisz PlayMarket?
Tak, dla nas jest to PlayMarket i AppStore dla Apple. Instalacja i dystrybucja odbywa się za pośrednictwem tych sklepów. Otwiera się jako osobna aplikacja i ma własne okna. Nienatywna, napisana w JavaScript, jest w zasadzie aplikacją otwieraną w przeglądarce i mającą jakiś układ mobilny.

Czy jest to zasadniczo aplikacja internetowa?
Tak. Jego zaletą jest to, że jest wieloplatformowy - piszesz na wszystkie platformy jednocześnie, Windows, Android i iPhone lub cokolwiek innego, co je otworzy. Ale tutaj nałożone jest takie ograniczenie, że nie będziesz mieć dostępu do wielu funkcji technicznych wymaganych przez klienta. Na przykład chce aktywnej pracy z aparatem - nie można tego zrobić w języku obcym. Nie da się wykonać projektu korzystając z poradników dostępnych na iOS i Androida.

Czy aplikacja hybrydowa może wyświetlać się inaczej w różnych przeglądarkach?
Może „unosić się”, ale globalnie wszystko będzie wyglądać tak samo. Ale na przykład, jeśli dana osoba jest przyzwyczajona do korzystania z Androida, spodziewa się zobaczyć pewne standardowe rzeczy „Androida”. A jeśli aplikacja przeglądarki nie jest zaprojektowana tak, jak tego oczekujesz, jest to, szczerze mówiąc, denerwujące.

Wszystkie duże aplikacje są w większości natywne. Dlaczego?
Głównym powodem jest brak jakichkolwiek ograniczeń. Możesz uzyskać dostęp do dowolnej funkcjonalności udostępnianej przez system operacyjny. Taka aplikacja jest bardziej elastyczna i ma znacznie lepszą żywotność baterii dzięki poprawnej architekturze języka natywnego. Sam system operacyjny sprawdza Twoją aplikację i organizuje prawidłową pracę z baterią, ekranem i tak dalej. Znacznie trudniej będzie zrealizować tę samą pracę z mapami w aplikacji hybrydowej bez wykorzystania natywnych narzędzi Google’a i Apple’a.

Czy spotkałeś się w swojej praktyce z zastosowaniami hybrydowymi?
Tak. Przykładowo rok temu pojawił się projekt współpracujący z mapami - był napisany w JavaScript, trudno było go uruchomić w specjalnym studiu, sam projekt był zepsuty. Jakoś udało mi się go uruchomić tylko na emulatorze iPhone'a!

O mój Boże!
A to po to, żeby chociaż coś zobaczyć! I dość trudno było zrozumieć, co się tam dzieje. Ostatecznie klient doszedł do wniosku, że zamiast jednej hybrydowej zamówił dwie aplikacje natywne – na iOS i na Androida.

Więc po prostu marnował czas?
Tak. Ale nie można go za to winić – aplikacje hybrydowe są zarówno tańsze, jak i szybsze w rozwoju. Cóż, wybór programistów jest znacznie szerszy – specjalista od platform mobilnych nie jest już konieczny; wystarczy zwrócić się do programisty front-endowego, który dysponuje odpowiednią znajomością JavaScript. Znając składnię języka, będzie w stanie zrealizować zamówienie, jednak bez głębokiej znajomości platformy może wiele mu brakować, a poziom aplikacji będzie niski.

Czy z tego powodu aplikacje nienatywne są często niskiej jakości?
Tak - „ulegają awarii” lub nie działają poprawnie, ponieważ ktoś przyszedł z zewnątrz. Kolejnym problematycznym aspektem „hybryd” jest organizacja powiadomień. Może te usługi jakoś tam działają, ale np. pracujemy teraz nad aplikacją społecznościową do udostępniania zdjęć, a powiadomienia tam w iOS i Androidzie są zbudowane zupełnie inaczej. Oto znacząca różnica dla Ciebie. Jak będą wyglądać powiadomienia w aplikacji internetowej na zapowiadane trzy platformy (iOS, Android, Windows), z których każda ma swoją indywidualną charakterystykę… ale kto wie?

A co z bezpieczeństwem?
Hybrydy też tutaj przegrywają. Plik Apk możesz pobrać tylko z jednego miejsca – ze sklepu. Dodatkowo, zanim opublikujesz aplikację przy użyciu standardowych narzędzi, masz możliwość zaszyfrowania wszystkiego, ukrycia implementacji i tak dalej. Oprócz szyfrowania używana jest inna rzecz zwana proguard - łamie linki i usuwa nazwy. Non-native tego nie ma, co oznacza, że ​​każdy może go zdemontować, ukraść Twój kod, pobrać z innego miejsca.

To znaczy, że teraz aplikacje hybrydowe są nadal bardzo, bardzo dalekie od natywnych?
Oczywiście. Mają sens, jeśli tworzysz coś bardzo prostego, uogólnionego, jeśli budżet jest niski, a terminy napięte. Coś, co nie wymaga całej mocy urządzenia i nie jest powiązane ze sprzętem. Jeśli wymagana jest cała funkcjonalność, to natywne systemy operacyjne Google i Apple mają już wbudowaną całą górę metod i sposobów pracy z aparatem, mapami, bluetooth i innymi rzeczami. I oczywiście będzie lepszy i wyższej jakości niż rower wymyślony na nowo od zewnętrznych programistów.

Całkowicie się z Tobą zgadzam. Dziękujemy za poświęcenie czasu na rozmowę!
Nie ma za co.

Podsumujmy naszą rozmowę z Denisem:

  • jeśli potrzebujesz dużej prędkości, a Twoja aplikacja będzie bezpośrednio korzystać ze sprzętu (aparat, pamięć RAM, chip wideo, bluetooth, Wi-Fi, ekran itp.) urządzenia - opracuj aplikację natywną;
  • jeśli interesuje Cię wysoki poziom bezpieczeństwa, opracuj aplikację natywną;
  • jeśli pracujesz nad naprawdę dużym projektem, opracuj aplikację natywną;
  • jeśli potrzebujesz czegoś bardzo prostego, a Twój projekt nie potrzebuje powyższych punktów, to możesz sobie poradzić z aplikacją hybrydową.

Rozwój hybrydowy i natywny: porównywalny?


Aplikacje hybrydowe czy natywne (z języka angielskiego – natywne)? Jest to jedno z najważniejszych pytań, jakie zadaje sobie klient oprogramowania, gdy musi wypuścić nową aplikację do użytku konsumenckiego.

Zacznijmy od zdefiniowania każdego z nich. Aplikacja hybrydowa, jak się wydaje, łączy w sobie elementy aplikacji natywnej (aplikacja działa bez zewnętrznego wsparcia) i sieciowej (aplikacja działa przy użyciu przeglądarki i jest zazwyczaj napisana w HTML5). Aplikacja czerpie z kompatybilnych technologii internetowych, takich jak HTML5, CSS i JavaScript, i wykorzystuje część własnego kodu, aby lepiej reagować na urządzenie użytkownika. Aplikacje hybrydowe umieszczane są wewnątrz własnej aplikacji, w której znajduje się WebView platformy mobilnej (że tak powiem, przeglądarka zawarta wewnątrz aplikacji mobilnej). Mówiąc najprościej, aplikacja hybrydowa to strona internetowa zapakowana w oryginalne opakowanie. Przykłady marek korzystających z mashupów to Amazon App Store, Gmail i Yelp.

Aplikacja natywna jest stworzona dla konkretnego mobilnego systemu operacyjnego (Objective-C /Swift dla iOS lub Java dla Androida) i jest zoptymalizowana tak, aby w pełni wykorzystać wszystkie możliwości platformy (aparat, lista kontaktów, GPS itp.). Zasadniczo aplikacja natywna jest wdrażana przy użyciu własnych narzędzi platformy. Przykładami takich aplikacji są Starbuck, Home Depot, Facebook (choć niektórzy nie zgadzają się z tym drugim).

Przyjrzyjmy się kilku ważnym czynnikom, które pomogą Ci wybrać pomiędzy aplikacją natywną a hybrydową.

Koszty deweloperskie

Aplikacje hybrydowe są opracowywane na wiele platform. Identyczny kod HTML można zastosować i ponownie wykorzystać w więcej niż jednym mobilnym systemie operacyjnym. Mówiąc najprościej, gdy zlecisz opracowanie aplikacji hybrydowej, Twój produkt końcowy będzie działał od razu na większości nowoczesnych smartfonów i tabletów. W ten sposób koszty rozwoju zostaną znacznie obniżone.

Z kolei tworzenie aplikacji natywnych wymaga pisania zupełnie innych programów dla każdego unikalnego urządzenia. W przeciwieństwie do programowania hybrydowego, które czerpie z wcześniejszych doświadczeń HTML5 w Internecie, programowanie natywne jest często uważane za bardziej wyspecjalizowane. Tym samym wzrasta koszt, co jest niepraktyczne dla małych firm i osób prywatnych.

Czas

Aplikacje hybrydowe są często popularne wśród firm, które chcą jak najszybciej wprowadzić coś na rynek masowy. Ponownie, ponieważ ten sam kod HTML jest ponownie używany w różnych systemach operacyjnych i tylko część złożonego kodu maszynowego wymaga przepisania, aplikacja będzie gotowa do uruchomienia na wielu urządzeniach tak szybko, jak to możliwe.

Jeśli czas nie jest priorytetem, rozwój natywny może być dla Ciebie odpowiedni. W przeciwnym razie lepsza byłaby hybryda.

Aktualizacje

Rozwój hybrydowy umożliwia aktualizację treści bezpośrednio z Internetu. Jeśli nie nastąpi nagła zmiana funkcjonalności, aktualizacje są prawie niezauważalne. Wiele z tych aktualizacji może nie zostać zainstalowanych za pośrednictwem sklepu App Store. Dzięki temu naprawianie błędów i dodawanie aktualizacji jest wydajniejsze i mniej frustrujące dla użytkownika. Istnieje jednak jedno zastrzeżenie związane z aktualizacjami internetowymi.

Może zaistnieć sytuacja, gdy aplikacja celuje w funkcje platformy mobilnej, które przestają działać ze względu na nieaktualną wtyczkę. Gdy tak się stanie, stajesz przed dylematem – musisz albo usunąć funkcję aplikacji, albo zatrudnić programistę do napisania wtyczki. Ten sam scenariusz ma miejsce w przypadku wypuszczenia nowych wersji platformy mobilnej. Jeśli chcesz, aby Twoja aplikacja mogła korzystać z nowych funkcji, ponownie zlecaj programiście utworzenie wtyczki do hostowania aktualizacji lub możesz poczekać, aż społeczność ją utworzy.

Dzięki programowaniu natywnemu możesz aktualizować aplikację, aby obsługiwała zmiany platformy i korzystała z nowych funkcji, bez konieczności polegania na stałym wsparciu społeczności dla swoich wtyczek lub uzależnienia od cyklów wydawniczych społeczności. W przypadku rozwoju hybrydowego konieczne jest kompleksowe rozważenie niezawodności wtyczek, aby uniknąć przykrych niespodzianek w najbliższej przyszłości.

Użytkownicy

Z natywnej aplikacji możesz łatwo korzystać z szerokiej funkcjonalności swojego urządzenia mobilnego: kamery, mikrofonu, GPS i wielu innych. Jednak krzywa uczenia się użytkownika jest niewielka.

Aplikacje natywne są też zwykle tworzone z myślą o zastosowaniu, gdy nie ma Wi-Fi lub możliwości odbioru danych z zewnątrz. Hybryda może także pracować w trybie autonomicznym, będziesz miał po prostu nieco mniej opcji.

Warto zauważyć, że szybkość reakcji, przy innych czynnikach niezmienionych, jest zwykle wyższa w przypadku aplikacji natywnych. Jest to często odczuwalne przez użytkownika w środowisku gier zależnym od wydajności grafiki. Dzieje się tak nawet wtedy, gdy aplikacja hybrydowa korzysta z HTML5 Canvas i WebGL. Różnica w prędkości to ułamek sekundy – od Ciebie zależy, czy jest to krytyczne, czy nie.

Bezpieczeństwo

Krytycy hybrydy mogą powoływać się na zastrzyki JavaScript lub luki w zabezpieczeniach SSL, ale jeśli zabezpieczyłeś swoją witrynę, nie jest to twoje zmartwienie. Jednak aplikacje hybrydowe zawierają więcej publicznie dostępnych informacji, co zwiększa prawdopodobieństwo zastosowania procesu inżynierii odwrotnej. Zależą one również od wtyczek, które stanowią dodatkową warstwę kodu, w której potencjalnie można znaleźć lukę w zabezpieczeniach.

Aplikacje natywne korzystają z własnych funkcji bezpieczeństwa bez wtyczek. Dlatego w przypadku aplikacji wymagających wysokiego poziomu bezpieczeństwa bardziej preferowane może być tworzenie natywne. W przypadku wszystkich innych potrzeb aplikacji biznesowych rozwój hybrydowy oferuje całkowicie zadowalający poziom bezpieczeństwa.

Kompatybilność między platformami

Tutaj sprawa jest prosta – tutaj wygrywają aplikacje hybrydowe: natywna aplikacja stworzona dla iPhone'a nie będzie działać na Androidzie i odwrotnie.

Wniosek

Szukasz ostatecznej odpowiedzi? Jedyne, co mogę Ci powiedzieć, to to, że najlepszą formą tworzenia aplikacji jest ta, która odpowiada Twoim unikalnym potrzebom. Będzie to zależeć od Twoich zasobów i potrzeb użytkownika końcowego. Przypominam, że zawsze możesz się ze mną skontaktować w sprawie rozwoju programu; Potrafię stworzyć aplikację w języku Java lub C#. Mam również doświadczenie w programowaniu dla J2ME i Androida.

W tym artykule porównamy 6 wieloplatformowych rozwiązań programistycznych, które były popularne w 2016 roku i spróbujemy znaleźć najlepsze rozwiązanie.

Frameworki wieloplatformowe PhoneGap, Xamarin, Unity, Qt i Appcelerator Titanium, Telerik Platform zajmują obecnie 80% rynku rozwoju wieloplatformowego na urządzenia mobilne.



Poniższa tabela przedstawia główne cechy każdego frameworka:

TelefonGap Xamarin Jedność Qt Tytanowy akcelerator Konstruktor aplikacji Telerik
Języki JavaScript, HTML5, CSS3 i języki natywne (Java, Objective-C, C#) C#, Xaml C#, UnityScript, Boo QML-a C++ JavaScript, Python, Ruby, PHP .Net, JavaScript, HTML5, Java, PHP
Obsługiwane platformy Android, iOS, Windows Phone, Blackberry, WebOS, Symbian, Bada, Ubuntu, Firefox OS. iOS, Android, Windows Phone i Windows 8/RT, Tizen Android, iOS, Windows Phone, Tizen, PS 4, Xbox One Android, iOS, WinRT, Windows, Symbian, Linux, QNX iOS, Android, BlackBerry, Windows, Tizen, Denso iOS, Android, BlackBerry, Windows, Windows Phone
Ceny Ceny PhoneGap

Wersja płatna: od 9,99 USD

Wersja darmowa: dostępna

Członkostwo Adobe Creative Cloud: dostępne

Ceny
Xamarin

Społeczność Xamarin Studio: bezpłatna

Społeczność programu Visual Studio: bezpłatna

Visual Studio Professional: dostępne

Visual Studio Enterprise: Dostępne

Ceny
Jedność

Wersja osobista: bezpłatna

Wersja profesjonalna: od 75 USD miesięcznie

Ceny
Qt

Istnieje darmowa wersja. Wersje płatne zaczynają się od 79 dolarów.

Ceny
Akcelerator

Indie: 39 dolarów miesięcznie

Dostępny jest bezpłatny okres próbny

Cena od 39 dolarów miesięcznie

Otwarte źródło + - - + + -
Interfejs użytkownika Sieć Rodzinny Płótno interfejsu użytkownika Rodzinny Rodzinny Sieć

TelefonGap

PhoneGap umożliwia tworzenie aplikacji mobilnych z wykorzystaniem standardowych technologii webowych (HTML5, JavaScript i CSS3). W rezultacie doprowadziło to do szybkiego wzrostu popularności frameworka; przy jego pomocy można obejść się bez programowania w językach takich jak Java dla Androida, Objective-C dla iOS i C#.

PhoneGap Build pozwala na jednoczesne tworzenie kompilacji dla iOS, Androida i Windows Phone, bez konieczności instalowania jakichkolwiek narzędzi SDK (oczywiście jest w tym pewien podstęp - podczas programowania nadal lepiej jest budować lokalnie, przynajmniej na Androidzie , przed wysłaniem go do testów). Ale co ważniejsze, ta usługa umożliwia tworzenie systemu iOS w chmurze bez konieczności posiadania komputera Mac.

Instalacja PhoneGap wymaga niesamowitego wysiłku, dlatego radzę zarezerwować sobie pół dnia... Żartuję. Instalacja XCode trwała około 3 minut - polegała na pobraniu archiwum, rozpakowaniu i instalacji. To wszystko.

PhoneGap zapewnia możliwość wykorzystania natywnych funkcji urządzenia mobilnego do pracy z:

  • akcelerometr,
  • kamera,
  • kompas,
  • Łączność,
  • nośnik danych,
  • geolokalizacja,
  • Baza danych
  • wydarzenia, powiadomienia,
  • mediach itp.
Jeśli aplikacja nie wyjdzie poza te punkty, to prędkość rozwoju z wykorzystaniem frameworku PhoneGap będzie o rząd wielkości większa niż stworzenie aplikacji natywnej na każdą platformę. Film z rozwojem aplikacji i opisem PhoneGap.

Zalety:

  • PhoneGap posiada proste API, które ułatwia rozpoczęcie programowania osobom, które zetknęły się z HTML, CSS i JavaScript.
  • Możliwość wykorzystania dowolnych istniejących bibliotek JavaScript (JQuery, Prototype, Sencha Touch)
  • Obsługuje wszystkie platformy mobilne
Wady:
  • Interfejs użytkownika renderowany jest za pomocą wbudowanej przeglądarki. Utrudnia to uzyskanie opinii w porównaniu z aplikacją natywną.
  • Często istniejące wtyczki okazują się przestarzałe, dlatego czasami trzeba napisać własne.

Xamarin

Xamarin to drugi wieloplatformowy framework na naszej liście. Xamarin umożliwia utworzenie jednej logiki aplikacji przy użyciu języków C# i .NET.

Funkcjonalnie platforma Xamarin reprezentuje wiele podplatform. Te podplatformy odgrywają dużą rolę - za ich pośrednictwem aplikacje mogą kierować żądania do interfejsów aplikacji na urządzeniach. Interfejs wizualny jest zdefiniowany, logika jest związana w języku C#, a wszystko to będzie działać na systemach Android, iOS i Windows Phone. Film przedstawiający tworzenie aplikacji w platformie Xamarin.

Zalety:

  • Duża i rozwijająca się społeczność.
  • Programiści mogą używać TestCloud do automatycznego testowania aplikacji.
  • Jeśli znasz już C# i .NET, nie będziesz musiał spędzać dużo czasu na nauce kilku nowych frameworków.
  • Możesz ponownie wykorzystać już napisany kod.
  • Aplikacje w różnych systemach będą wyglądać bardzo podobnie.
  • Układ dynamiczny dla iOS jest nieskończenie łatwiejszy niż ręczne używanie ograniczeń.
  • Dzięki CustomRenderers standardowe elementy sterujące można łatwo uzupełnić o dowolne właściwości (na przykład wypełnienie gradientem przycisków zajmuje kilka minut, chociaż nie działa od razu po wyjęciu z pudełka).

Wady:

  • Niektóre wzorce interfejsów są trudne do zaimplementowania na monodroidzie i bardzo trudne na monodotyku, ponieważ domyślne rozwiązania dla tej lub innej funkcji opierają się na kulach platformy, które mogą po prostu nie działać w Xamarin.
  • Występują problemy z platformami mono, monotouch i monodroid. Twoja aplikacja musi spełniać określone wymagania dotyczące stabilności.
  • Stron Androida nie można umieszczać jako części istniejącego działania/fragmentu.
  • Nie wszystkie kontrole są wdrożone.

Konstruktor aplikacji Telerik

Jednym z głównych powodów korzystania z AppBuilder jest pełnoprawne internetowe IDE. Umożliwia tworzenie, testowanie, a nawet publikowanie aplikacji hybrydowych z dowolnego komputera lub urządzenia mobilnego, bez konieczności ich pobierania.

Kolejną zaletą jest możliwość tworzenia aplikacji iOS działających w systemie Windows lub Linux.

Zalety:

  • Telerik zapewnia wtyczki Visual Studio i Sublime Text dla AppBuilder.
  • AppBuilder oferuje szybki sposób importowania wtyczek Cordova.
  • Pełnoprawne IDE online.
  • Łatwy w użyciu i nauce

Wady:

  • Mała społeczność

Jedność

Unity, wieloplatformowe narzędzie do tworzenia aplikacji i gier 2D i 3D, jest także jednym z najlepszych narzędzi do demonstrowania treści 3D. Aplikacje tworzone przy użyciu Unity działają pod systemami operacyjnymi Windows, OS X, Linux, Android, Apple iOS, Windows Phone, BlackBerry, a także na konsolach do gier Wii, PlayStation 3 i Xbox 360. Film z tworzenia gry mobilnej na Unity .

Zalety:

  • Świetna opcja do tworzenia gier mobilnych na różne urządzenia
  • Silnik 3D zapewnia wysoką jakość wyników bez skomplikowanych konfiguracji
  • Jest wiele dobrych darmowych wtyczek
  • Unity pozwala programiście tworzyć własne shadery i zmieniać sposób, w jaki Unity renderuje grę.

Wady:

  • Interfejs użytkownika i trudność obsługi dla początkujących
  • Kod źródłowy niedostępny
  • Kompilatory Unity nie są zoptymalizowane pod kątem procesorów ARM na niektórych urządzeniach mobilnych.


Biblioteka Qt do tworzenia wieloplatformowych aplikacji okienkowych w C++. Qt należy traktować nie tyle jako zestaw klas do tworzenia GUI, ile raczej jako pełnoprawny zestaw klas na każdą okazję. Programy można tworzyć nie tylko w C++, ale także w języku QML, który jest bardzo podobny do JavaScript. Jest to specjalna gałąź rozwoju Qt mająca na celu szybkie prototypowanie i rozwój aplikacji mobilnych. Film przedstawiający rozwój Tiled Map Editor w Qt.


Zalety:
  • Qt ma wiele dobrych narzędzi pomagających w rozwoju, na przykład: IDE QT Creator, Qt Designer i profilowanie kodu.
  • Posiada biblioteki zawierające intuicyjne interfejsy API dla elementów takich jak sieci, animacje i inne.

Wady:

  • Qt jest trudny dla początkujących

Tytanowy akcelerator

Titanium to całkowicie otwarta platforma do tworzenia, wdrażania, dystrybucji i ostatecznie uruchamiania aplikacji internetowych. Appcelerator Titanium umożliwia tworzenie aplikacji mobilnych w JavaScript, HTML i CSS.

Możesz tworzyć nowoczesne i co najważniejsze natywne aplikacje korzystając z dowolnego aktualnie popularnego systemu operacyjnego: Windows, GNU/Linux czy MacOS X.

Aplikacje utworzone przy użyciu tego SDK będą prawdziwie natywne. Kontroler nawigacyjny w systemie Android będzie wyglądał znajomo i różnił się od tego w systemie iOS. Co więcej, nie tylko wygląd, ale także sam kod aplikacji również będzie natywny. Nawiasem mówiąc, nie przeszkadza to w utworzeniu klasycznego WebView i wypełnieniu go żądaną treścią internetową.

Zalety:

  • JavaScript ułatwia tworzenie aplikacji bez używania języków platformy.
  • Appcelerator umożliwia przeprowadzanie analiz w czasie rzeczywistym
  • Korzystanie z natywnego API zapewni lepszą wydajność w przypadku niezbyt dużych aplikacji.

Wady:

  • Występują opóźnienia podczas uruchamiania aplikacji ze względu na ładowanie biblioteki
  • Tworzenie złożonych aplikacji jest trudne, ponieważ użycie JavaScript ma negatywny wpływ na wydajność aplikacji.

Reaguj natywnie

Co to jest React Native? Jest to framework JS oparty na JS i React - bibliotece JS do tworzenia interfejsu użytkownika (poziom widoku).

Technologia jest bardzo obiecująca, ale młoda, więc platforma w niektórych miejscach jest wciąż surowa. Wersja na Androida pojawiła się później, więc na razie jest więcej komponentów do aplikacji na iOS. Warto też wziąć pod uwagę, że po wdrożeniu aplikacji cały JS trafi na urządzenie użytkownika, dlatego nie warto trzymać w tajemnicy logiki biznesowej na poziomie prezentacji. Można powiedzieć, że teraz React Native można wykorzystać do szybkiego prototypowania mobilnych wersji aplikacji internetowych. Co więcej, jeśli aplikacja internetowa jest już napisana w ReactJS, wówczas prędkość transferu znacznie wzrasta. Przykład rozwoju z wykorzystaniem React Native.

Zalety:

  • Ujednolicony przepływ pracy i narzędzia: nie ma znaczenia, czy pracujesz na wersji Android czy iOS, nadal korzystasz z tych samych narzędzi.
  • Z tego powodu - szybkość i łatwość rozwoju.
  • Łączenie starszej aplikacji z JS API i aplikacjami hybrydowymi: Załóżmy, że masz już gotową aplikację na iOS i chcesz przejść na React Native. Następnie możesz zawinąć komponenty natywne, aby były dostępne w React Native. Możesz więc stopniowo przechodzić na React, a efektem będzie aplikacja hybrydowa – połowa natywna, połowa w React i kilka starszych komponentów w API JS.
Nie ma rozwiązania idealnego, każdy framework ma swoje wady i zalety. W przypadku bardzo prostych aplikacji zalecałbym używanie PhoneGap, dopóki responsywność nie stanie się kluczowym kryterium. W przypadku poważniejszego rozwoju lepiej jest używać Xamarin, ale nawet w przypadku Xamarin lepiej jest połączyć rozwój natywny dla większości elementów interfejsu użytkownika.
Powiedz przyjaciołom