Tworzenie wieloplatformowych aplikacji mobilnych. Rozwój wieloplatformowy: za czy przeciw? Niskie koszty operacyjne

Dom / Laptopy

Wydawać by się mogło, że mamy rozwój wieloplatformowy, co umożliwia tworzenie uniwersalnych aplikacji na różne platformy. Szybciej napisałem aplikację, od razu ją wypuściłem wszędzie - zysk! I nie jest potrzebny żaden natywny rozwój. Czy jest to nadal potrzebne? O niuansach obu podejść do rozwoju aplikacje mobilne zapytaliśmy naszych ekspertów.

„Programista mobilny” to szerokie pojęcie. Programista wdrażający części mobilne system operacyjny, jest także programistą mobilnym. A jeśli Twoim celem jest zostać właśnie takim programistą, musisz zacząć od nauki C++, mobilnego systemu operacyjnego i sprzętu. urządzenia mobilne.

Jeśli masz na myśli programistę wdrażającego niestandardowe aplikacje mobilne, to musisz zacząć od programowania natywnego.

Dlaczego tak jest? Rozwój natywny pozwala lepiej i głębiej badać możliwości konkretnych systemów operacyjnych (i aplikacji dla nich) oraz sprzętu mobilnego.

Z punktu widzenia użytkownika zdecydowanie wygrywa rozwój natywny. Aplikacje natywne działają szybciej, ich interfejs jest bardziej responsywny i bardziej znajomy użytkownikom konkretnego mobilnego systemu operacyjnego, lepiej wykorzystują możliwości sprzętowe urządzenia, lepiej działają w trybie offline i są mniej zabugowane.

Oryginalną ideą rozwoju wieloplatformowego jest zmniejszenie kosztów pracy programistów. Można to krótko wyrazić w następujący sposób: „Zrobione raz, działa na wszystko”. Pomysł jest dobry i poprawny (z punktu widzenia dewelopera), ale są problemy z jakością. Każda wszechstronność wiąże się z kompromisem, a dziedzina rozwoju urządzeń mobilnych nie jest tu wyjątkiem.

Wybierając rodzaj programowania dla konkretnego zadania, programista musi ocenić, jak akceptowalny jest ten kompromis. Jest szereg zadań, w których zastosowanie programowania wieloplatformowego będzie całkiem uzasadnione, np. w projektach testowych, mobilnych wersjach stron internetowych, grach wykorzystujących frameworki typu Unity 3D.

Jednocześnie w przypadku projektów rozwiązujących mobilne problemy biznesowe (przy dużym obciążeniu, konieczności obsługi trybu offline, nastawionych na długotrwały rozwój) rozwój natywny wydaje się jedynym optymalnym (a dla niektórych zadań jedynym możliwym) ) opcja.

Jednocześnie głównymi wadami programowania natywnego są czas programowania (potrzeba więcej) i potrzeba różnorodnych zasobów (programiści w różnych natywnych językach programowania). Istnieją sposoby na złagodzenie tych niedociągnięć - na przykład wykorzystanie do rozwoju jakiejś platformy aplikacji mobilnych (klasy MEAP), która pozwala na tworzenie aplikacji natywnych.

Promuj Demot

, Dyrektor ds. Rozwoju Technologicznego firmy informatycznej „ID – Management Technologies”

Każda wieloplatformowa biblioteka lub framework opiera się na tych samych natywnych mechanizmach, na których bezpośrednio wdrażany jest natywny rozwój. Tyle, że w przypadku rozwiązań cross-platformowych procesy pracy budowane są w taki sposób, aby „wygładzić rogi” pod kątem sprowadzenia interfejsu finalnego rozwiązania do pewnego wspólnego mianownika.

Z reguły uniwersalizm nie zawsze jest odpowiedzią na zadanie stworzenia działającego rozwiązania mobilnego: programista pracuje lepiej, im lepiej rozumie mechanizmy różnych procesów od wewnątrz, jak to mówią „pod maską”.

Również całkiem działający model Nastąpi jednoczesne opanowanie podstawowych elementów obu podejść; w takim zadaniu edukacyjnym na początkowym etapie nie ma rzeczy niemożliwych. Na przykład taki scenariusz może okazać się całkiem realny i obiecujący: zacznij pracować w paradygmacie wieloplatformowym, a jednocześnie samodzielnie lub z pomocą współpracowników przestudiuj, jakie istnieją natywne możliwości tworzenia obecnych rozwiązań i w jaki sposób można je zastosować w praktyce.

W takim przypadku łatwiej jest uzyskać kompleksowe zrozumienie tego, jak w zasadzie działa proces tworzenia aplikacji mobilnych, co nazywa się end-to-end. Jest to przydatne również dlatego, że każda, nawet najbardziej zaawansowana, uniwersalna platforma odstaje w swoich możliwościach od natywnej: producenci sprzętu i mobilnych systemów operacyjnych często współpracują ze sobą i stale zwiększają możliwości finalnych rozwiązań - możliwości mobilnych platform programistycznych, szczególnie cross -rozwiązania platformowe nieuchronnie pozostają w tyle.

Na rynku stale pojawiają się nowości z segmentu urządzeń mobilnych, niektóre z nich znacząco wyprzedzają swoją epokę – weźmy Samsunga i jego rozwój urządzenia z wyginanym ekranem: widać, że ze względu na radykalnie odmienny front-end , istniejące platformy programistyczne nie są gotowe na takie rzeczy.

Tutaj przydaje się głęboka znajomość platform natywnych: tylko programista posiadający głęboką, systemową wiedzę na temat programowania mobilnego, czyli platform natywnych, jest w stanie zrekompensować naturalne opóźnienia w stosunku do sprzętu i systemu operacyjnego. Tylko taki specjalista będzie w stanie zwiększyć funkcjonalność swojego rozwiązania dla najnowszych urządzeń mobilnych w oparciu o dostępne obecnie nie do końca zaawansowane platformy deweloperskie.

Programowanie międzyplatformowe doskonale nadaje się do prototypowania, szybki test pomysły itp. Gdy tylko przychodzi do tworzenia naprawdę podstawowych produktów, deweloper nieuchronnie dochodzi do konieczności dogłębnego przestudiowania podstawowych elementów procesu, czyli rozwoju natywnego.

Promuj Demot

, Dziekan Wydziału Rozwoju iOS GeekUniversity, portal edukacyjny GeekBrains

Krótka odpowiedź: jeśli nie masz doświadczenia w programowaniu, to oczywiście musisz wybrać programowanie natywne. Rozwój wieloplatformowy jest dobry dla specjalistów, którzy przechodzą z pokrewnych dziedzin na rozwój mobilny. Na przykład, jeśli jesteś programistą frontendowym z dobrą znajomością JavaScriptu i korzystasz z frameworku React Native (zbudowanego na bazie frameworka React), możesz szybko i bezboleśnie spróbować opanować programowanie mobilne. Podobnie programiście .NET łatwiej będzie opanować platformę Xamarin.

Rozwój międzyplatformowy jest także korzystny dla klienta – łatwiej jest znaleźć jeden zespół programistów, który według wspólnego modelu będzie rozwijał aplikację na dwie platformy jednocześnie.

Zalety są oczywiste, ale jakie są wady rozwoju wieloplatformowego?! Uważa się, że im bardziej złożona i subtelna jest funkcjonalność aplikacji mobilnej, tym trudniejsze, jeśli nie niemożliwe, jej wdrożenie przy użyciu narzędzi wieloplatformowych – często przewyższa to wszystkie zalety narzędzi uniwersalnych. Z mojego doświadczenia wynika, że ​​jest kilka dużych firm, które wraz z rozwojem swoich aplikacji zostały zmuszone porzucić wieloplatformowość na rzecz rozwoju natywnego. Zatem w przypadku małych projektów i ewentualnie zadań niezależnych wystarczą rozwiązania ogólne, ale w przypadku dużych projektów lepiej nadają się rozwiązania natywne.

Zapotrzebowanie na oba obszary jest dość wysokie, ale na rozwój natywny jest nieco wyższy: na żądanie Swifta na hh.ru w Rosji - 369 wolnych stanowisk, Kotlin - 397, React Native - 111, Flutter - 13 Xamarin - 18. Ale bądźcie pewni , dobry specjalista W żadnej branży nie będzie już pracy.

Promuj Demot

Na początek należy zauważyć, że każda aplikacja mobilna składa się z kilku warstw:

  • Interfejs użytkownika to to, co widzi użytkownik;
  • aplikacja jest napisana dla logiki biznesowej;
  • inne komponenty platformy – praca z siecią, bazami danych i innymi komponentami systemu, z których korzysta logika biznesowa.

W zależności od konkretnego zastosowania, wielkość komponentów na tych warstwach może się znacznie różnić. Na przykład aplikacja do czytania wiadomości na stronie internetowej będzie bardzo różnić się od klienta VPN.

Sam rozwój można podzielić na trzy typy: natywny, w pełni wieloplatformowy i hybrydowy.

Rozwój natywny

W programowaniu natywnym wszystkie trzy warstwy są pisane przy użyciu tego samego zestawu narzędzi. Dlatego mogą wchodzić w interakcje ze sobą bez dodatkowej złożoności.

Zalety rozwoju natywnego:

Rozwój hybrydowy

Ten typ rozwoju łączy w sobie oba poprzednie podejścia. Warstwa logiki biznesowej jest budowana jako komponent „przenośny”, a interfejs użytkownika i integracja platformy tworzone są przy użyciu standardowych narzędzi. Istnieje kilka języków do pisania ogólnej logiki: C/C++ (dojrzałe i wydajne rozwiązanie), KotlinNative (bardzo aktywnie rozwijany) i JavaScript (najrzadziej).

Zalety:

  • najbardziej odpowiednie do tego komponenty pozostają natywne;
  • ogólna logika jest tworzona raz.

Wady:

  • jeśli wspólny komponent będzie tworzony przez mobilny zespół, wówczas konieczne jest zdobycie wiedzy z jeszcze jednego języka;
  • Integracja komponentów wieloplatformowych wiąże się z dodatkowymi kosztami.

Od jakiego rodzaju rozwoju najlepiej zacząć?

Aby odpowiedzieć na to pytanie, musisz zrozumieć, jakiego rodzaju projekty chcesz tworzyć. Małe projekty mogą być czysto wieloplatformowe i będzie to w pełni uzasadnione. Tutaj radzę przyjrzeć się bliżej Flutterowi.

Ale dzisiaj zacząłbym od rozwoju natywnego. Po pierwsze, większość współczesnych projektów tworzona jest natywnie. Oznacza to, że będziesz mieć więcej możliwości zmiany projektów/firm. Po drugie, z czasem możliwe będzie przejście na hybrydowy rozwój wieloplatformowy. Dzięki temu będziesz mógł rozwijać się w kwestiach technicznych.

Promuj Demot

Moim zdaniem najlepiej zacząć od natywnego, a potem jeśli naprawdę chcesz opanować jedno lub więcej narzędzi wieloplatformowych. Jedynym wyjątkiem może być tworzenie gier, ponieważ są one pisane głównie w Unity, a jest to silnik wieloplatformowy.

Jeśli mówimy o zaletach rozwoju natywnego, to dla programisty oznacza to mniej przeszkód i większą liczbę różnych narzędzi do pracy. Będzie miał także więcej źródeł informacji do rozwiązywania skomplikowanych problemów pojawiających się w procesie tworzenia aplikacji - nie jest tajemnicą, że w przypadku programowania natywnego w Internecie jest wielokrotnie więcej porad i trików niż w przypadku tworzenia aplikacji międzyplatformowych.

Dla użytkownika końcowego rozwój natywny oznacza, że ​​aplikacja będzie miała znajome, przewidywalne interfejsy i wzorce zachowań – pod warunkiem, że aplikacja zostanie napisana zgodnie ze wszystkimi poradnikami.

Aplikacja wieloplatformowa może nie zawsze być w pełni zgodna z wytycznymi obu platform, co może powodować dodatkowe trudności dla programisty i użytkownika. Najprostszy przykład- sytuacja z przyciskiem „Wstecz”: w Androidzie jest on obecny na prawie wszystkich ekranach, natomiast w iOS nie. Jeśli utworzysz aplikację wieloplatformową bez tego przycisku, niektórzy użytkownicy Androida mogą odczuć dyskomfort.

Warto także wspomnieć o różnicach w kosztach rozwoju. Jeśli projekt nie jest skomplikowany, wybór rozwoju wieloplatformowego pozwala zaoszczędzić budżet, ponieważ w rzeczywistości nie tworzysz oddzielnych produktów dla różnych platform, ale jeden dla wszystkich. Jeśli jednak projekt się rozrośnie, wówczas szala zacznie się przechylać w drugą stronę i rozwój natywny może okazać się bardziej opłacalny.

Jeśli chodzi o szybkość aplikacji, produkty wieloplatformowe są wolniejsze. Przykładowo te oparte na technologiach webowych posiadają przeglądarkę jako warstwę, co znacząco spowalnia działanie aplikacji.

Promuj Demot

Wybór podejścia wieloplatformowego lub natywnego zależy w rzeczywistości od dwóch czynników: charakteru rozwoju mobilnego, który osobiście chcesz wykonać, lub prośby pracodawców, z którymi jesteś zainteresowany współpracą. Jeśli więc spojrzysz np. na Upwork (platformę do wyszukiwania zdalnych specjalistów do projektów i zadań), zauważysz wyraźną przewagę ofert w stronę Xamarin i React Native. Zalety są tutaj oczywiste: jest tani, szybki i pozwoli na realizację projektów na wszystkich platformach jednocześnie. Jeśli jednak weźmiemy pod uwagę duże firmy IT poszukujące pracowników we własnym zakresie, wówczas duży nacisk kładzie się na rozwój natywny, mimo że ten typ wymaga więcej czasu i jest droższy.

W naszej firmie priorytetowo traktujemy i wybieramy rozwój natywny, ponieważ pozwala projektantom i programistom stworzyć płynniejszy, bardziej intuicyjny UX/UI. Dodatkowo natywny rozwój daje bardziej elastyczną kontrolę nad funkcjami systemu.

Promuj Demot

Jeśli chcesz zostać programistą mobilnym, odpowiedź jest oczywista: musisz wybrać dowolne z natywnych środowisk programistycznych i polegać na Objective-C/Swift na iOS lub Javie/Kotlin na Androidzie. W tym przypadku wszystkie możliwości systemu są do Twojej dyspozycji; możesz kontrolować prawie każdy niuans.

Jeśli chcesz po prostu napisać program, który będzie działał także na telefonach, to nie musisz za dużo myśleć i wybrać to, co Cię najbardziej pasjonuje lub w czym masz zauważalne doświadczenie: C++, React Native, Xamarin lub pięćset tysięcy frameworków JS do programowania międzyplatformowego. Lub nawet kontynuuj tworzenie własnych [responsywnych] stron internetowych.

Przyznam, że jestem dość sceptycznie nastawiony do całej idei rozwoju międzyplatformowego na platformach tak różnych (i rozbieżnych), jak Android i iOS. Żaden z dostawców nie lubi, gdy „niewłaściwi” programiści próbują usiąść na dwóch krzesłach jednocześnie. Wszyscy starają się wiązać programistów z narzędziami i środowiskami i w dającej się przewidzieć przyszłości nie należy spodziewać się tendencji do konwergencji. Cóż mogę powiedzieć, Apple w tym wyścigu porzuciło nawet OpenGL, najbardziej wieloplatformową ze wszystkich bibliotek po Curlu, ale teraz mają swój własny Metal, który wydaje się robić to samo, tylko lepiej i w innym języku.

Z drugiej strony bardzo często rozwój urządzeń mobilnych oznacza stworzenie dwóch identycznie wyglądających aplikacji dla jakiejś usługi sieciowej. Klienci nie zawsze są skłonni płacić za dwa produkty, które wyglądają zupełnie nie do odróżnienia, dlatego zapotrzebowanie na technologie rozwoju wieloplatformowego istnieje i trzeba przyznać, że jest dość duże. Programiści również nie są przeciwni oszczędzaniu, zwłaszcza jeśli chcą sprzedać aplikację mobilną i nie mają ochoty uczyć się Swifta/Kotlina, ale JS/C# jest już na wyciągnięcie ręki.

Oczywiście rozwój międzyplatformowy niesie ze sobą wiele nieoczywistych niuansów. Wszystkie uniwersalne rozwiązania zmuszone są do budowania zamków na piasku: albo bazując na skomplikowanych i kruchych rozwiązaniach technologicznych (jak Xamarin), albo na mobilnych silnikach JavaScript, jak React Native. Jednocześnie dostawcy platform nawet nie myślą o wsparciu któregokolwiek z rozwiązań, a każda aktualizacja natywnego SDK to duży ból głowy dla każdego wieloplatformowego frameworka. Nie mówiąc już o takich specyficznych dla systemu funkcjach jak dostęp do aparatu, pęku kluczy czy nawet banalnej galerii zdjęć, które każdy z różnym skutkiem stara się ominąć. Deweloperzy, którzy wybiorą uniwersalną ścieżkę, stają się zakładnikami swojego frameworka i często rozwój obiecujący znaczne oszczędności zamienia się w walkę z prowizją.

Często zdarza się, że rozwiązania wieloplatformowe rezygnują z tego, co nazywa się doświadczeniem użytkownika (UX): wiele frameworków stara się używać jak najbardziej ogólnych elementów sterujących dla obu systemów, a to rozwiązanie jest prawie zawsze równie niewygodne dla wszystkich. Albo spowalnia. Lub wyróżnia się na tle ogólnego stylu. Albo wyczerpuje baterię. Kontynuuj listę samodzielnie.

Wyróżniają się aplikacje wieloplatformowe, których jądro jest napisane na niskim poziomie, tak powszechnym, jak to możliwe dla wszystkich systemów operacyjnych: w językach takich jak C/C++. W takim przypadku zwyczajowo uogólnia się zastosowanie logiki biznesowej obsługującej kod, a interfejs jest pisany dla każdej platformy osobno. Idealnie byłoby uniknąć powielania krytycznej części aplikacji, zachowując jednocześnie doświadczenie użytkownika specyficzne dla platformy. Jednak w prawdziwym życiu wszystko jest bardziej skomplikowane. Na przykład Dropbox przez kilka lat z rzędu próbował żyć z jądrem niskiego poziomu, ale w końcu z wielu powodów zrezygnował i teraz jest zadowolony z aplikacji na platformie natywnej. Zainteresowanych odsyłam do ciekawego artykułu na ten temat.

Moim zdaniem oszczędności na frameworkach wieloplatformowych są zawsze iluzoryczne. Prawdopodobnie w niektórych trywialnych projektach, gdzie aplikacja jest po prostu wersją strony głównej, super zoptymalizowaną pod kątem urządzeń mobilnych, sprawdza się podejście uogólnione. W innych przypadkach ryzykujesz powtórzeniem losu Dropbox. Moja rada jest taka, że ​​jeśli chcesz zostać programistą mobilnym, włóż wysiłek w naukę platformy. Zawsze się opłacią, nawet jeśli będziesz musiał uczestniczyć w projekcie wieloplatformowym.

Promuj Demot

, starszy programista w Accenture Tver Technology Center

Rynek aplikacji mobilnych aktywnie się rozwija, a zakres technologii umożliwiających ich rozwój odpowiednio rośnie. Istnieje naprawdę wiele narzędzi, z których możesz skorzystać.

Do natywnego rozwoju na Platforma Androida Na maszynie JVM znajduje się Java lub opakowanie - Kotlin. W przypadku iOS możesz użyć Objective-C lub jego opakowania - Swift. Wszystkie te języki są językami OOP, które wiele odziedziczyły po Smalltalku i C.

Do programowania międzyplatformowego używają obecnie Fluttera od Google, do obsługi którego musisz znać Darta. Lub zareaguj natywnie z Facebooka.

Dla początkującego programisty mobilnego czynnikiem decydującym będzie najprawdopodobniej jego wcześniejsze doświadczenie i znajomość języków. Jeśli jego zestaw narzędzi będzie oparty na Javie, będzie mógł znacznie szybciej poznawać świat programowania mobilnego poprzez platformę Android, korzystając z tej samej Javy lub Kotlina.

Jednocześnie rozwój Objective-C dla iOS przejął wiele od Smalltalk, np. Java, więc jeśli chcesz, możesz dokonać wyboru na korzyść iOS. Warto jednak wziąć pod uwagę, że rozwój dla Androida może odbywać się w systemie Windows lub Linux, ale iOS wymaga MacOS X. Jednak dla programisty JavaScript ze znajomością React, React Native jest oczywiście najszybszym sposobem. Podobnie jak w przypadku twórców Darta, wybór padnie na korzyść Fluttera.

Kiedy początkujący programista zrozumie, czym jest rozwój mobilny, jakie zalety i wady niesie wybrana ścieżka, sam zdecyduje, czy pracować jednym podejściem, czy rozwiązywać problemy za pomocą rozwiązań wieloplatformowych.

To podejście ma swoje zalety: metoda wieloplatformowa umożliwia nieco szybsze wypuszczenie projektu do środowiska produkcyjnego, przy mniejszym zużyciu zasobów. Ponadto jest łatwiejszy w utrzymaniu. Ale ma to również oczywiste wady zarówno dla programisty, jak i użytkownika. Przykładowo programista nie musi znać technologii natywnych, ale trzeba wziąć pod uwagę wytyczne platformy, gdyż aplikacja napisana według wytycznych iOS będzie sprawiała trudności Użytkownicy Androida i odwrotnie.

Aplikacje wieloplatformowe nie mogą osiągnąć tego samego poziomu integracji urządzeń, co aplikacje natywne. Czyli jeśli aplikacja polega na interakcji z urządzeniem, np. aparatem, kalendarzem, czy wykorzystaniem mocy obliczeniowej urządzenia, to łatwiej będzie to osiągnąć stosując podejście natywne, będzie szybciej i bardziej produktywny.

Tworząc aplikację wieloplatformową, specjaliści biorą pod uwagę możliwości frameworka, co narzuca ograniczenia. Warto też wziąć pod uwagę, że aby stworzyć produkt wykorzystując natywne technologie, potrzebni są specjaliści od każdej platformy.

Jeśli pracujesz jako freelancer lub Twoim celem jest pokrycie maksymalnej liczby urządzeń przy minimalnych zasobach, skup się na rozwoju międzyplatformowym, jeśli koncentrujesz się na rozwiązaniach mobilnych lub pracujesz jako programista front-end.

Jakie są główne zalety i wady programowania natywnego i wieloplatformowego na urządzenia mobilne? Sam rozwój natywny jest drogi, bo firma musi zainwestować w dwa zespoły – iOS i Android. Dla proste aplikacje, prędkość rozwoju na Flutter / React Native jest wyższa.

Ale plusem jest to, że infrastruktura została już utworzona i jest zrozumiała. Otrzymujesz dostęp do dowolnych zasobów urządzenia i możesz się rozwijać inteligentny zegarek, samochody i nie tylko.

Ciekawą rzeczą jest także rozwój międzyplatformowy. Ale na rynku pracy IT w Rosji nie jest on jeszcze bardzo rozwinięty. Inteligentnych specjalistów można policzyć na palcach. Infrastruktura ramowa jest młoda, ale sytuacja stopniowo zmienia się na lepsze. To rozwinięcie umożliwia pisanie na kilka urządzeń jednocześnie. Nawet jeśli piszesz na przykład we Flutterze, łatwo integruje się on z kodem natywnym.

Promuj Demot

Rozwój wieloplatformowy ma na celu szybkie rezultaty i znaczne oszczędności budżetowe - piszemy jeden kod dla wszystkich urządzeń. Jego zakres zastosowania to albo rozwiązanie do użytku wewnętrznego, gdzie użyteczność produktu nie jest tak ważna, a funkcjonalność odgrywa rolę dominującą, albo stworzenie szybkiego projektu „pilotażowego”, gdy klient potrzebuje pokazać zasadę lub pomysł na aplikację. Ponadto, jeśli nie ma dokładnego zrozumienia, na jakim urządzeniu będzie wyświetlany Twój prototyp, rozwiązaniem będzie rozwój wieloplatformowy. Należy jednak z góry zrozumieć, że wszystkie urządzenia mają różną architekturę, dlatego fizycznie prawie niemożliwe jest uruchomienie aplikacji wysokiej jakości przy użyciu samego kodu wieloplatformowego. Złożone scenariusze będą wymagały napisania kodu natywnego. Dodatkowo, ze względu na swoją specyfikę, rozwój wieloplatformowy niesie ze sobą koszty, które nie pozwalają na maksymalną efektywność aplikacji. Jest to zrozumiałe, w w tym przypadku pośredni kod wieloplatformowy musi być przetłumaczony na każdą platformę, co czyni aplikację bardziej „ciężką” ze względu na fakt, że oprócz kodu funkcjonalnego zawiera ona środowisko wykonawcze.

Daj mi inną opinię

Wszystko jasne, pokaż wnioski

Jakie zatem podejście do rozwoju wybrać?

Wszystko zależy od zadania. Jeśli potrzebujesz napisać prototyp aplikacji na wiele platform lub wersja mobilna site, możesz przyjrzeć się frameworkom wieloplatformowym. Z ich pomocą najprawdopodobniej napiszesz aplikację szybciej niż przy programowaniu natywnym, szczególnie jeśli pracujesz na frameworku podobnym do Twojego zwykłego narzędzia, takiego jak React Native.

Z drugiej strony wszechstronność aplikacji wieloplatformowych musi być w jakiś sposób kompensowana. Gdzieś wyskakuje „nienatywny” element interfejsu, gdzieś interakcja z systemem jest gorsza, gdzieś spada prędkość pracy itp. Pomimo tego, że rozwój natywny wymaga więcej zasobów, wiele firm woli to, ponieważ Rezultatem jest bardziej produkt stabilny i natywnie wyglądający.

Pod tym względem, jeśli dopiero zaczynasz rozwój mobilny, wtedy lepiej byłoby najpierw zająć się programowaniem natywnym. Więcej informacji na ten temat znajdziesz w Internecie, głębiej zrozumiesz możliwości platformy i nie będą Ci przeszkadzać pewne niuanse rozwoju międzyplatformowego. Co więcej, jeśli w przyszłości zdecydujesz się na rozwój wieloplatformowy, zdobyta wiedza na pewno Ci nie zaszkodzi.

Przypominamy, że możesz zadać swoje pytanie ekspertom, a my zbierzemy na nie odpowiedź, jeśli okaże się interesujące. Pytania, które zostały już zadane, znajdziesz na liście zagadnień. Jeśli chcesz dołączyć do grona ekspertów i przesłać odpowiedź od swojej firmy lub od siebie, napisz na adres, podpowiemy Ci, jak to zrobić.

Rozwój wieloplatformowy pozwala na stworzenie aplikacji mobilnej, która będzie działać jednocześnie w systemach iOS i Android. Jest to tańsza alternatywa dla tworzenia aplikacji dla każdego systemu operacyjnego z osobna.

Funkcje rozwoju wieloplatformowego

Tworzenie jednej aplikacji na różne platformy jest jednocześnie dobre i złe. Dobrze, bo można to zrobić szybciej i taniej niż kilka aplikacji na każdy system operacyjny. A to źle, bo kompromis wpływa na działanie aplikacji.

Cechy te należy wziąć pod uwagę przed rozpoczęciem projektu:

  • W środowisku wieloplatformowym kod jest pisany raz. Aby aplikacja działała na innym systemie operacyjnym, kod jest tłumaczony na inny język programowania. Czas i pieniądze wydane na rozwój są 1,5 razy mniejsze.
  • Aplikacje mogą nie działać poprawnie. W rozwoju wieloplatformowym nie da się uwzględnić wszystkich niuansów pracy z architekturą każdego systemu operacyjnego, dlatego aplikacje mogą działać wolniej niż te opracowane specjalnie dla iOS lub Androida.
  • Wymagania dotyczące interfejsu i projektu elementów różnią się w zależności od systemu operacyjnego. Na przykład iOS nie ma przycisku Wstecz, tak jak Android. Opracowując ujednolicony projekt, należy wziąć pod uwagę ten punkt: w iOS przycisk albo pozostanie, ale nie będzie działał, albo będzie musiał zostać wycięty ręcznie, co oznacza dodatkową pracę z kodem.

Większość błędów podczas migracji z jednej platformy na drugą można rozwiązać ręcznie, ale niemożliwe jest całkowite rozwiązanie problemów związanych z dostosowaniem się do „nienatywnego” systemu operacyjnego.

Zatem rozwój międzyplatformowy jest zły?

Nie, programowanie międzyplatformowe jest w porządku, o ile nie wymagasz od niego więcej, niż może dać.

Opcję tę można wybrać w następujących przypadkach:

  • Obsługuje wszystkie systemy operacyjne przy ograniczonym budżecie. Jeśli docelowa grupa odbiorców aktywnie korzysta z iOS lub Androida, możesz zacząć od aplikacji natywnej dla jednego systemu operacyjnego. Jeśli od razu ważny jest maksymalny zasięg, lepiej wybrać opcję wieloplatformową.
  • Sprawdź niszę. Jeśli istnieje obiecujący pomysł, ale nie masz pewności, że zadziała, natychmiastowe inwestowanie dużego budżetu w rozwój jest ryzykowne. Warto zacząć od rozwoju międzyplatformowego, zbadać reakcje użytkowników i na tej podstawie podejmować strategiczne decyzje.
  • Aplikacja nie wykorzystuje skomplikowanych animacji i nie wykonuje obliczeń. Operacje te poważnie obciążają urządzenie, a aplikacja wieloplatformowa nie jest zoptymalizowana pod kątem pełnego wykorzystania zasobów konkretnej platformy.
  • Aplikacja wykorzystuje jedynie podstawowe funkcje urządzenia. Wyświetlaj informacje, przesyłaj pliki, korzystaj z geolokalizacji, złóż zamówienie – z tym wszystkim poradzi sobie wieloplatformowa aplikacja. Wymagana jest głębsza integracja możliwości urządzenia – będziesz musiał wybrać rozwój natywny.
  • Aplikacja korporacyjna dla pracowników. Jeśli aplikacja jest tworzona do wąskich zadań wewnętrznych i ludzie będą z nią pracować za pośrednictwem osobistych gadżetów, najlepszą opcją będzie aplikacja wieloplatformowa.

Nie ma uniwersalnej odpowiedzi na pytanie, czy w Twoim projekcie można zastosować rozwiązania wieloplatformowe. Wypełnij poniższy formularz: przeanalizujemy Twój projekt i wybierzemy najlepszą opcję jego realizacji.

Aplikacje wieloplatformowe – być albo nie być? Pytanie nie jest łatwe, ponieważ każdy biznes ma swoje cele i wymagania dotyczące aplikacji mobilnych. Ale dzisiaj na pewno ustalimy, który rozwój jest dla Ciebie odpowiedni.

Czym są aplikacje wieloplatformowe?

Aplikacje wieloplatformowe to aplikacje tworzone, a następnie uruchamiane zarówno na systemach Android, jak i iOS. Istota rozwoju polega na tym kod źródłowy Aplikacja jest tłumaczona na język natywny, czyli zrozumiały dla konkretnego urządzenia mobilnego. Dzięki temu program może wchodzić w interakcję z zainstalowanym na nim systemem operacyjnym.

Przypomnijmy: aplikacje natywne, w odróżnieniu od wieloplatformowych, są pisane pod konkretny system operacyjny.

Plusy rozwoju wieloplatformowego

  • rozszerzenie baza użytkowników ze względu na pojawienie się aplikacji w kilku sklepach jednocześnie;
  • Pojedynczy kod źródłowy eliminuje potrzebę zatrudniania wielu programistów dla każdej platformy;
  • 75% bazy kodu aplikacji wieloplatformowej można ponownie wykorzystać, dostosowując ją do nowych projektów.

Wady rozwoju wieloplatformowego

1. Duże uzależnienie od urządzenia mobilnego

Aplikacje wieloplatformowe zwykle nie działają w trybie offline. Dlatego ich możliwości w dużym stopniu zależą od tego, czy użytkownik będzie miał stabilne połączenie z Internetem. Ważna jest także wersja systemu operacyjnego i model urządzenia. Prawie na pewno zmniejszy się wydajność aplikacji wieloplatformowej na urządzeniu starszym niż rok lub dwa lata. Podczas gdy natywna aplikacja będzie działać stabilnie nawet na starożytnym gadżecie z przestarzałym oprogramowaniem. Jeśli więc nie chcesz, aby Twoi klienci czytali gniewne recenzje o tym, jak Twoja aplikacja w końcu „dokończyła” czyjś smartfon, wybierz programowanie natywne.

2. Nieprzyjazny interfejs użytkownika

Użytkownicy już się do tego przyzwyczajają wygląd i funkcjonalność swoich gadżetów, że oczekują maksymalnej responsywności od zainstalowanych na nich aplikacji. Chcą mieć pewność, że każdy przycisk będzie na swoim miejscu, że strona będzie przewijać się z optymalną dla nich szybkością, a każda wykonana przez nich czynność spotka się z natychmiastową reakcją. Aplikacje wieloplatformowe zwykle mają trudności z przystosowaniem się do urządzenia i nie mogą pochwalić się wydajnością.

Problem w tym, że w przypadku rozwoju wieloplatformowego nie ma wytycznych – standardów programistycznych od twórców systemu operacyjnego. Dlatego wieloplatformowa aplikacja stworzona „dla Androida” nie będzie wygodna dla użytkownika iOS i odwrotnie. Można oczywiście stworzyć osobne projekty dla każdej platformy, ale pod względem kosztów pracy będzie to równoznaczne z utworzeniem dwóch różnych aplikacji, aczkolwiek w tym samym języku.

3. Walka o prymat wśród narzędzi programistycznych

Na rynku wieloplatformowych rozwiązań programistycznych konkurencja staje się z każdym dniem coraz trudniejsza. Na razie największą popularnością wśród programistów cieszą się React Native i Xamarin, ale równie dobrze mogą je wyprzedzić np. Vue Native. W takim przypadku byli liderzy wyścigu stracą najważniejszą przewagę - wsparcie operacyjne kod. Może się to zdarzyć w przypadku dowolnego narzędzia wieloplatformowego.

Rozwój natywny nie boi się takiego problemu. Wprowadzanie nowych narzędzi następuje stopniowo, a znajomość kilku języków programowania, która jest obowiązkowa dla specjalisty, pozwoli mu szybko zrozumieć wszystkie innowacje. Ponadto wokół każdego systemu operacyjnego istnieją ogromne społeczności zawodowe, w wyniku których wszelkie pojawiające się trudności rozwiązuje się, szukając podobnego problemu na forach, gdzie tysiące ludzi jest gotowych zasugerować i pomóc w jego rozwiązaniu.

Która aplikacja będzie odpowiednia dla Twojej firmy?

Zanim odpowiesz na to pytanie, koniecznie przeanalizuj swój biznes. Segmenty konsumenckie, wartość zasobów czasu i pieniędzy, pożądana głębokość integracji aplikacji z urządzeniami użytkownika, a także jasno określone cele długoterminowe – minimum od którego będzie zależał Twój wybór. Ale ułatwimy to, jeśli już teraz odpowiesz na odpowiednie pytania.

1. Z czego korzystają Twoi odbiorcy?

Jeśli wiesz, że wśród Twoich klientów odsetek użytkowników iOS i Androida jest bliski 50/50, wybierz rozwój natywny. To pokaże, że w równym stopniu szanujesz potrzeby wszystkich swoich klientów, niezależnie od ich poziomu dochodów.

Związek pomiędzy wyborem urządzenia mobilnego a poziomem wypłacalności po raz kolejny potwierdziła App Annie. W wyniku badania liczby pobrań i sprzedaży aplikacji mobilnych w Google Play I Sklep z aplikacjami w pierwszym kwartale 2018 roku okazało się, że użytkownicy smartfonów z Androidem pobrali o 135% więcej aplikacji niż odwiedzający sklep iOS. Jednocześnie App Store przynosił swoim właścicielom o 85% większe dochody niż Google Play.

Droga do sukcesu jest oczywista: grać na dwóch boiskach jednocześnie. Dokładniej w dwóch sklepach. Wystarczy obliczyć, w którym z nich aplikacja powinna pojawić się jako pierwsza. Oczywiście, chyba że równoczesne wydanie jest częścią Twojej strategii cyfrowej).

2. Ile masz czasu na rozwój?

Od odpowiedzi na to pytanie zależą koszty finansowe projektu. Faktem jest, że z punktu widzenia czasu poświęconego na rozwój, aplikacja wieloplatformowa wydaje się jedynie bardziej opłacalnym rozwiązaniem. W rzeczywistości dostosowanie go do platform może zająć prawie tyle samo czasu, co utworzenie dwóch aplikacji natywnych, ponieważ programiści będą musieli napisać dodatkowe fragmenty kodu dla obszarów problematycznych.

Przy aplikacji natywnej na pewno nie będzie takich problemów, co jest bardzo ważne, aby utrzymać grono odbiorców, które jest wyjątkowo nietolerancyjne na błędy i bugi. Według statystyk Compuware 79% użytkowników jest gotowych ponownie uruchomić aplikację, jeśli przy pierwszym uruchomieniu nie działała poprawnie, ale tylko 16% zgadza się dać jej jeszcze jedną szansę. Inni najprawdopodobniej po prostu odinstalują program.

3. Z jakich funkcji urządzenia planujesz korzystać?

Mówiliśmy już o tym, że tylko aplikacje natywne są w stanie szybko i bez utraty jakości odtwarzać ciężką grafikę. Ale techniczne zalety rozwoju natywnego nie ograniczają się do tego. Weźmy jako przykład aplikację Facebook. Dzięki wydaniu osobnych wersji na Androida i iOS przewijanie stało się płynniejsze, czas ładowania obrazów został skrócony, a wszystkie problemy z pamięcią podręczną zostały rozwiązane.


Co więcej, aplikacje natywne mają bezpośredni dostęp do wszystkich usług urządzenia, dzięki czemu możesz uzyskać informacje o geolokalizacji użytkownika lub jego liście kontaktów. Aplikacje wieloplatformowe muszą korzystać ze specjalnych natywnych wtyczek, co negatywnie wpływa na szybkość przesyłania danych i przeciążenia BARAN urządzenia.

4. Do jakich rezultatów dążysz?

Strategia cyfrowa to lista celów, które Twoja firma może osiągnąć za pomocą narzędzi cyfrowych. Wybór tego drugiego w dużej mierze zależy od korzyści, jakie chcesz w efekcie uzyskać.


Rozłóż proces od pomysłu do wyniku punkt po punkcie, biorąc pod uwagę wszystkie dostępne zasoby. Odkrycia mogą być najbardziej nieoczekiwane.

Na przykład może się okazać, że przekształcenie responsywnej witryny internetowej, wyposażonej w funkcje i elementy interaktywne, w aplikację wieloplatformową, tak jak pierwotnie chciałeś, jest zbyt kosztowne. Lub wreszcie upewnij się, że witryna mobilna zawsze przegrywa z aplikacją mobilną, tak jak rozwój wieloplatformowy przegrywa z rozwojem natywnym. A wśród powodów znajdziesz te, które opisaliśmy powyżej.

Wniosek: aplikacja wieloplatformowa jest korzystna tylko w jednym przypadku - tworzysz wersję demonstracyjną aplikacji, ograniczoną czasowo, finansowo i wysoko wyspecjalizowanych specjalistów. We wszystkich pozostałych przypadkach aplikacja natywna da Ci wielokrotnie więcej korzyści, gdyż jest to jakościowo inny poziom rozwoju.

Aplikacje mobilne stały się niezmiennym towarzyszem naszego życia. Za ich pomocą możemy nie tylko dobrze się bawić i upraszczać sobie życie, dokonywać zakupów czy zamawiać określone usługi online, ale także promować swój biznes, powiększać bazę klientów, a co za tym idzie zwiększać zyski. A jeśli nikt nie ma wątpliwości co do konieczności stworzenia aplikacji dla swojego biznesu, to mogą pojawić się pewne trudności z wyborem rodzaju aplikacji mobilnej.

Wszystkie współczesne aplikacje na urządzenia mobilne można podzielić na natywne i wieloplatformowe, a każda z tych dwóch grup ma swoją mocne strony i jego wady.

Aplikacje natywne to aplikacje opracowane specjalnie dla konkretnej platformy w odpowiednim języku programowania. Tak więc podczas tworzenia aplikacji na Androida używana jest Java, a w przypadku aplikacji na iOS - Objective-c lub Swift. Tworząc takie projekty, specjaliści biorą pod uwagę wszystkie cechy platform, zwracając szczególną uwagę na projektowanie UI/UX, wymagania/rekomendacje twórców systemów operacyjnych, a także najnowsze trendy w branży mobilnej. Jeden specjalista nie będzie w stanie w pełni opanować wszystkich powyższych języków, dlatego aby opracować jeden natywny produkt dla różnych platform, konieczne jest połączenie różni deweloperzy, a to są dodatkowe koszty, a czas realizacji będzie imponujący. Ale jednocześnie aplikacje będą „szyte na miarę” pod konkretną platformę, będą miały dostęp do wewnętrznych zasobów i funkcji urządzenia i będą działać możliwie najefektywniej.

Pomimo sporej listy zalet rozwiązań natywnych, klienci nie zawsze chcą poświęcać czas i pieniądze na ich rozwój, angażując w proces tworzenia kilku specjalistów. Najlepsza opcja w takich przypadkach stosuje się rozwój wieloplatformowy, który pozwala tworzyć aplikacje na dowolną platformę przy użyciu standardowych technologii internetowych. W tym przypadku rozwój może przeprowadzić jedna osoba posiadająca niezbędną wiedzę i doświadczenie w pracy z HTML5, JavaScript i CSS3. Rozwój wieloplatformowy można skompilować w pliku .apk dla Androida i pliku .ipa dla IOS. Tym samym w oparciu o jedno opracowanie można otrzymać dwie aplikacje na popularne systemy operacyjne, poświęcając na to mniej czasu i pieniędzy. Jednak takie rozwiązania mają również swoje wady, dlatego zdecydowanie wskazane jest podejście do każdego konkretnego przypadku indywidualnie i wybranie najbardziej odpowiedniej opcji - rozwoju natywnego lub wieloplatformowego.

Części klienckie i serwerowe aplikacji

Większość poważnych aplikacji posiada własną część kliencką, którą często nazywa się frontendem oraz część serwerową - backend. Frontend odpowiada za to, co widzisz na ekranie swojego urządzenia mobilnego, czyli całą wizualną prezentację aplikacji, obejmującą wygląd, rozmiar i lokalizację okien, menu, przycisków, strzałek i wszelkich innych elementów. Frontend odpowiada także za reakcję aplikacji na określone działania użytkownika, mające na celu przechodzenie do różnych sekcji aplikacji, wywoływanie nowych menu itp.

Backend to serwerowa część aplikacji, zlokalizowana na zdalnym serwerze, który może być zlokalizowany w dowolnym miejscu i kontrolowany za pomocą szerokiej gamy oprogramowanie. Relacja pomiędzy częścią klienta i serwera odbywa się dzięki API (interfejs programowania aplikacji). Innymi słowy, API jest swego rodzaju pośrednikiem pomiędzy frontendem a backendem, który przekazuje żądania od strony klienta do serwera, zwracając potrzebne użytkownikowi dane.

Rozwój frontendu

Część kliencka aplikacji jest niezwykle istotna, gdyż to z nią będzie miał do czynienia sam użytkownik i od wygody frontendu zależeć będzie od jego ogólnego zrozumienia działania aplikacji. Można go opracować ręcznie, ale do tego potrzebna jest dobra znajomość HTML5, CSS3 i Java-Scriptu lub użycie tzw. frameworków. W pierwszym przypadku często wykorzystywane jest środowisko programistyczne Apache Cordova, które jest również powszechnie znane jako PhoneGap. Wykorzystując to środowisko można tworzyć aplikacje na dowolną platformę wykorzystując technologie webowe, które Cordova konwertuje na kod zrozumiały dla konkretnej platformy. Cordova otwiera praktycznie nieograniczone możliwości dla twórców stron internetowych, którzy niekoniecznie muszą uczyć się Objective-C lub Swift, Java lub Kotlin, aby tworzyć aplikacje dla określonych systemów operacyjnych.

Chociaż Cordova nie ma ograniczeń w interfejsie użytkownika i logice, frameworki oferują gotowe rozwiązania szablonowe. Z jednej strony znacznie przyspiesza to i upraszcza proces rozwoju, ponieważ specjalista może korzystać z gotowych przycisków, list, pól wejściowych, kart i innych elementów interfejsu użytkownika. Z drugiej strony specjalista może wykorzystać do rozwoju tylko te narzędzia i elementy, które są dostępne w wybranym frameworku. Najpopularniejszym z nich jest Ionic, który pozwala tworzyć aplikacje wieloplatformowe na każdy gust. Framework ten posiada dużą wbudowaną kolekcję standardowych elementów, które wizualnie imitują aplikacje natywne, lecz w razie potrzeby można zmienić ich wygląd. Jednocześnie programista może podłączyć wiele dodatkowych wtyczek rozszerzających możliwości frameworka jonowego, a projekt stworzony na tym frameworku można uruchomić bezpośrednio w oknie przeglądarki i ocenić jak stworzona aplikacja będzie wyglądać i działać bez konieczności użyj emulatora lub zainstaluj go na smartfonie.

Rozwój backendu

O ile stroną kliencką zajmują się projektanci i programiści znający HTML, CSS, JS i frameworki, o tyle za backendem zajmują się programiści o innym profilu. Można go używać do konfigurowania serwerów różne języki programowania i narzędzi, najważniejsze jest odpowiednie skonfigurowanie ich pracy i relacji ze stroną klienta. Niezbędne jest tutaj zastosowanie odpowiednich systemów zarządzania bazami danych. Może to być tradycyjny MySQL, Redis, PostgreSQL lub dowolna inna baza danych (na przykład MongoDB), która nadaje się do realizacji konkretnego projektu i w której backend developer jest dobrze zorientowany. Aby stworzyć aplikację po stronie serwerowej, programiści mogą używać PHP, NodeJS, C#, Ruby, Python, Java i innych języków programowania.

Specjaliści studia mobilnego KitApp podchodzą do rozwoju części frontendowej i backendowej kompleksowo i maksymalnie odpowiedzialnie. Nasi programiści stworzą dla Ciebie wieloplatformową aplikację o dowolnej złożoności i skupieniu tak szybko i efektywnie, jak to możliwe! Skontaktuj się z nami, a nasi specjaliści niezwłocznie odpowiedzą na wszystkie Twoje pytania!

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 poruszaliśmy temat tworzenia wieloplatformowych aplikacji mobilnych i od tego czasu wiele się zmieniło. Pora znów porozmawiać o metodach i narzędziach.

Najpierw jeszcze raz omówmy terminologię.

Krewni

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.

Ma tylko jedną wadę – wysoki koszt rozwoju i wsparcia, m.in. konieczność napisania własnego kodu dla każdej platformy.

Wraz z rozwojem rynku aplikacji mobilnych programiści stali się nie tylko drodzy, ale bardzo kosztowni, a rozwój natywny nie jest czymś, na co może sobie pozwolić każdy właściciel firmy. Jednak niezaprojektowanie aplikacji mobilnej może Cię w przyszłości kosztować więcej. Pisanie na żywo może pomóc Ci zaoszczędzić pieniądze – opisz swój pomysł i wskaż przybliżony budżet, jaki chcesz zrealizować, w formacie .

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ć różne urządzenia? 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, tworzenie aplikacji wieloplatformowych często mogą wykonywać 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 w realizacji złożonych funkcji lub możliwe problemy działa nawet z prostymi procedurami ze względu na błędy w samych ramach 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ż zaniedbać.

Jak widać, te dwie metody są praktycznie lustrzane odbicie siebie nawzajem – że tworzenie aplikacji natywnych ma zalety, tworzenie aplikacji wieloplatformowych ma wady i odwrotnie.

Popularne platformy i narzędzia do wieloplatformowego programowania mobilnego

Jak pisaliśmy powyżej, podejścia są dwa – zmiana 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 „owinięta” 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, będzie działać wolno i może nie mieć w pełni dokładnej geolokalizacji, ale będzie działać na wszystkich urządzeniach i pozwoli Ci przynajmniej przetestować zapotrzebowanie 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 interfejs użytkownika dla Twojego projektu HTML5, a frameworki działają z własnymi, gotowymi elementami interfejsu użytkownika, które symulują platformy mobilne i logika jego rozwoju. 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'a to same aplikacje internetowe, jednak poprzez zastosowanie określonych technologii (przede wszystkim tzw. Service Workers - pracujących w tło skrypty oraz Web App Manifest - opis aplikacji webowej w formie zrozumiałej dla systemu mobilnego) mogą pracować jako natywne bez wrappera 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ą napisać kod w jednym, nienatywnym języku, a następnie jest on tłumaczony 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ą drogę 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 niezbędne funkcje urządzenia? Rozwój natywny, Xamarin, React Native.

Rozwój wieloplatformowy 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. Szybko i tanio możesz 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łów lub skontaktuj się telefonicznie z naszą menadżerką Katyą

© 2024 ermake.ru - O naprawie komputerów PC - Portal informacyjny