Data dodania: 2024-07-05
Nauka w świecie cyfrowym okiem młodego inżyniera – mobilne aplikacje cross-platformowe
Gdy podstawowym urządzeniem towarzyszącym człowiekowi stał się smartfon, technologie mobilne cieszą się bardzo dużą popularnością. Dzięki niemu możemy w dowolnym miejscu na Ziemi połączyć się z bezprzewodową globalną siecią, jaką jest Internet, i korzystać z wielu informacji w mgnieniu oka. Od kilku lat można zauważyć nieustanny trend wytwarzania aplikacji mobilnych na terminale użytkownika za pomocą szeregu technologii i narzędzi. Ich liczba rośnie coraz szybciej z roku na rok. Obecnie większość smartfonów posiada jeden z dwóch najbardziej popularnych systemów operacyjnych, tj. Android lub iOS. Przez długi czas, aby spełnić oczekiwanie rynku i zaspokoić potrzeby użytkowników, konieczne było zaprogramowanie tzw. aplikacji natywnej na konkretny system operacyjny. Jednak z czasem z pomocą przyszły tzw. rozwiązania cross-platformowe, które umożliwiają tworzenie uniwersalnej aplikacji kompatybilnej zarówno z platformą Android, jak i iOS, wykorzystując jeden kod źródłowy.
W przeprowadzonym przez autorów niniejszego artykułu porównaniu obu technologii grupa badawcza składała się z 26 doświadczonych deweloperów pracujących z technologiami mobilnymi. Ankieta zawierała opinie na temat różnych aspektów związanych z procesem tworzenia aplikacji, takich jak: wydajność, dostępność narzędzi, łatwość nauki oraz satysfakcja z pracy. Wyniki badania stanowią cenne źródło wiedzy dla osób zajmujących się projektowaniem, rozwijaniem i wdrażaniem aplikacji mobilnych, pomagając w podejmowaniu świadomych decyzji technologicznych. W tabeli 1 opisane zostały szczegółowe działy ankiety wraz z odpowiadającymi im problemami badawczymi, które zostały poruszone w pytaniach kwestionariusza.
Metoda i narzędzia
Kluczowym elementem, a zarazem największym wyzwaniem, było dobranie odpowiednio wykwalifikowanej grupy badawczej. W związku z powyższym przygotowane zostały dwa pytania wprowadzające, które pozwoliły na poznanie umiejętności oraz doświadczenia respondenta. Dane dotyczące doświadczenia ankietowanych przedstawiono na rys. 1 oraz 2. Z przedstawionych rysunków wynika, że poziom zaawansowany, tzw. Mid oraz Senior, osiągnęło w przypadku technologii cross-platformowych 61,6 proc. respondentów, zaś w przypadku technologii natywnych 34,6 proc., co pokazuje, że założenia autorów dotyczące dotarcia do odpowiedniej grupy badawczej zostały spełnione. W grupie badawczej znalazły się osoby, które określają się tytułem Seniora (spore doświadczenie) w obu technologiach. Ich odpowiedzi zostały potraktowane jako cenne źródło informacji.
Szybkość wytwarzania aplikacji
Na początku zapytano uczestników o czas wytwarzania poszczególnych funkcjonalności – przy użyciu której technologii można szybciej wytworzyć aplikację? Odpowiedzi zaprezentowane zostały na rys 3. Znakomita większość ankietowanych odpowiedziała, że to w technologiach cross-platformowych wykonuje się funkcjonalności szybciej.
Ograniczenie technologii cross-platformowych
Kolejnym pytaniem było to, jakie są główne ograniczenia technologii cross-platformowych w porównaniu z podejściem natywnym? Czy istnieją funkcjonalności, które są trudne do osiągnięcia lub niemożliwe do zrealizowania przy użyciu technologii cross-platformowych? Jest to problem niezwykle istotny z perspektywy tworzącego aplikację, który musi przeanalizować i udzielić odpowiedzi na pytanie, czy programując aplikację w technologiach mniej znanych i po prostu świeższych, nie spotka się z ograniczeniami technologicznymi uniemożliwiającymi uzyskanie końcowego produktu. Na rys. 4 przedstawiono odpowiedzi respondentów, z których wynika, że aż 80,8 proc. z nich nie napotkało takich utrudnień. Sugeruje to, że podejście natywne może okazać się lepszym wyborem.
Następną częścią było szczegółowe dopytanie respondentów o konkretne przypadki napotkanych przez nich utrudnień w pracy z technologią cross-platformową.
W oparciu o odpowiedzi ankietowanych programistów można wysunąć wniosek, iż technologie cross-platformowe są za krótko na rynku bądź nie są jeszcze tak popularne, aby specjalistyczne firmy technologiczne tworzyły swoje SDK (Software Development Kit) z nimi kompatybilne. To właśnie integracja z zewnętrznymi systemami sprawiła najwięcej problemów respondentom. Wśród odpowiedzi pojawiły się również takie kwestie jak brak możliwości dostosowania personalizowanych widoków notyfikacji, a także problemy z łącznością Bluetooth dla konkretnych wersji systemu Android (aktualnie 13.0). W dalszej części respondenci odpowiedzieli na pytanie o subiektywne odczucie różnicy w działaniach aplikacji obu porównywanych technologii. Wyniki danego pytania zaprezentowano na rys. 5.
Ponad połowa uczestników badania nie rozróżnia aplikacji mobilnych w zależności od technologii, w której zostały napisane. Wśród odpowiedzi pojawiło się wiele różnorodnych elementów aplikacji. Programiści, będący w tym przypadku również końcowymi użytkownikami aplikacji mobilnych, za elementy uwidaczniające różnice uznali:
- elementy interfejsu użytkownika – inne zachowanie, działanie komponentów, wygląd, dłuższe ładowanie w przypadku technologii cross-platformowych;
- zachowanie przy przewijaniu stron – szczególnie podczas przewijania wieloma palcami;
- minimalne opóźnienia w renderowaniu ekranów oraz podczas klikania w przyciski akcji;
- kwestie wydajnościowe na starszych urządzeniach;
- płynność animacji;
- inny wygląd gotowych rozwiązań w bibliotekach.
Opłacalność
Następne pytanie dotyczyło opłacalności rozpoczynania nowych projektów. Niemal wszyscy docenili zaletę zbudowania aplikacji na wielu platformach z użyciem jednego kodu źródłowego. Z rys. 6 wynika, że znaczna większość wskazała, iż technologie cross-platformowe to lepszy wybór do rozpoczęcia nowych projektów.
Argumenty respondentów w tej kwestii wydają się zgodne z oczekiwaniami. Jako główny powód w odpowiedziach na pytanie „Dlaczego opłaca się rozpoczynać projekty w technologiach cross-platformowych?” podawano szybkość realizacji oraz dużo mniejsze koszty, związane z koniecznością posiadania zespołu wykwalifikowanego w jednej technologii, a nie jak w przypadku technologii natywnych co najmniej dwóch. Programiści również wspomnieli o mniejszym progu wejścia, czyli mniejszym stopniu zaawansowania samego pisania kodu w technologiach natywnych, rozbudowanej, dynamicznej społeczności, a także zmniejszaniu ryzyka występowania błędów tylko na jednej platformie. Zwrócono również uwagę na możliwość dopisania kodu natywnego w momencie, kiedy jakaś funkcjonalność okaże się niewykonalna, co zdarza się stosunkowo rzadko.
Wśród uczestników pojawił się również kolejny argument czysto biznesowy, część z nich wypunktowała mniejsze zarobki programistów technologii cross-platformowych. Jedna wśród ankietowanych osób opowiedziała się w tym pytaniu za technologiami natywnymi, argumentując swoją odpowiedź o wiele szybszym procesem programowania, szczególnie odkąd wprowadzono pakiety narzędzi przyspieszające tworzenie interfejsów użytkownika: Jetpack Compose dla Androida oraz Swift UI dla iOSa. Kolejnym argumentem było to, że program narażony jest na mniejszą liczbę błędów, ponieważ pisany jest bezpośrednio dla danego systemu.
Wydajność
Celem uzyskania odpowiedzi na kolejny problem programiści zostali spytani o subiektywne odczucie spadków wydajności podczas korzystania z aplikacji napisanych w technologiach cross-platformowych. Wyniki przedstawiono na rys. 7.
Ponad połowa odpowiedziała, że takich spadków wydajności nie dostrzega. Respondenci, którzy zaznaczyli, że takie spadki odczuwają, zostali poproszeni o podanie przypadków podczas korzystania z aplikacji, w których takie spadki zauważyli. W odpowiedziach wskazano takie elementy jak:
- pierwsze włączenie aplikacji i zacięcia przy ładowaniu;
- spadki wydajności podczas renderowania animacji;
- spadki wydajności podczas przewijania stron;
- spadki wydajności na starszych urządzeniach.
Ustalenia wskazują na pozytywny obraz dotyczący wydajności aplikacji mobilnych w badanej grupie. Zdecydowana większość respondentów zgłosiła brak dostrzegalnych spadków wydajności. Jednakże istnieje mniejsza grupa użytkowników, którzy zgłosili pewne problemy z wydajnością aplikacji. Najczęściej wskazywano na spadki wydajności podczas pierwszego uruchomienia aplikacji oraz podczas renderowania animacji czy przewijania stron. Ponadto spadki wydajności były częściej zgłaszane przez użytkowników starszych urządzeń.
Ostatnim opracowanym pytaniem ankiety badawczej było pytanie o rozwój społeczeństwa programistów danej technologii. Z punktu widzenia programisty jest to bardzo ważny aspekt, ponieważ dostęp do wielu źródeł wiedzy jest nieoceniony, a wsparcie specjalistów w danej dziedzinie niezwykle potrzebne i trudne do zdobycia. Aby zdobyć informacje na ten temat, respondentom zadano pytanie „Które technologie posiadają bardziej rozwinięte community?” (czyli społeczność). Wyniki przedstawiono na rys. 8.
Odpowiedzi na te pytania okazały się bardzo wyrównane – ponad połowa uczestników badania nie zauważyła widocznych różnic w dostępie do istotnych z perspektywy rozwoju projektu treści, takich jak fora czy dokumentacje. Pokazuje to, że technologie cross-platformowe, mimo krótszej obecności na rynku, zbudowały już duże grono programistów pracujących z nimi.
Wnioski
Przedstawione wyniki pozwalają na zdefiniowanie odpowiedzi na zadane problemy badawcze. Odpowiadając na pierwszy z postawionych problemów badawczych, czyli „Przy użyciu której technologii można szybciej wytworzyć aplikację?” respondenci zdecydowaną przewagą wskazali na technologie cross-platformowe, a głównym czynnikiem przeważającym było tworzenie jednego kodu źródłowego na wiele platform.
Na drugi z postawionych problemów badawczych, czyli „Jakie są główne ograniczenia technologii cross-platformowych w porównaniu z podejściem natywnym oraz czy istnieją funkcjonalności, które są trudne do osiągnięcia lub niemożliwe do zrealizowania przy użyciu technologii cross-platformowych?” znakomita większość ankietowanych odpowiedziała, że takich ograniczeń nie doświadczyła, a wszystkie funkcjonalności dało się zrealizować, nie wspomagając się rozwiązaniami natywnymi. Należy jednak zwrócić uwagę, że pojawiły się osoby, które takich ograniczeń doświadczyły. Oznacza to, że mimo kilkuletniego istnienia i rozwoju technologii cross-platformowych wciąż występuje tu pole do poprawy. Jak wykazano, największym problemem technologii cross-platformowych jest dużo mniejsza kompatybilność z zewnętrznymi serwisami, czyli istnieje dużo mniej dostępnych SDK dla tych technologii.
Odpowiadając na trzeci z postawionych problemów badawczych, stwierdzono, że różnice w kosztach związanych z wyborem technologii cross-platformowych i natywnych są zauważalne na kilku płaszczyznach:
- koszty projektu – wybór technologii cross-platformowych może skutkować niższymi kosztami początkowymi projektu ze względu na możliwość wykorzystania jednej bazy kodu do budowy aplikacji na różne platformy. Natomiast technologie natywne mogą wymagać większych nakładów finansowych na początku ze względu na konieczność posiadania oddzielnych zespołów programistycznych dla każdej platformy;
- koszty utrzymania – technologie cross-platformowe mogą prowadzić do mniejszych kosztów utrzymania, ponieważ aktualizacje i poprawki można wprowadzać jednocześnie dla wszystkich platform. Z kolei technologie natywne mogą generować wyższe koszty utrzymania z powodu konieczności oddzielnych aktualizacji dla każdej platformy;
- koszty dalszego rozwoju – wybór technologii cross-platformowych może ułatwić skalowanie aplikacji na różne platformy, co może obniżyć koszty dalszego rozwoju. Natomiast technologie natywne mogą być konieczne w przypadku zaawansowanych funkcji lub specyficznych wymagań dla danej platformy, co może zwiększyć koszty rozwoju.
Ostatecznie wybór jednej z tych technologii może wpłynąć na koszty projektu, utrzymania i dalszego rozwoju aplikacji. Należy dokładnie rozważyć indywidualne potrzeby projektu oraz cele biznesowe, aby podjąć właściwą decyzję technologiczną, która będzie najbardziej opłacalna w dłuższej perspektywie.
Na podstawie odpowiedzi na ostatni z problemów badawczych, czyli „Czy istnieją różnice w szybkości działania, zużyciu zasobów między tymi dwoma podejściami?”, można stwierdzić, że istnieją różnice w szybkości działania oraz zużyciu zasobów między podejściami cross-platformowymi i natywnymi, natomiast większość respondentów (68 proc.) zgłosiła brak dostrzegalnych spadków wydajności aplikacji mobilnych, co wskazuje na pozytywny obraz dotyczący wydajności aplikacji w badanej grupie. Jednakże mniejsza grupa użytkowników zgłosiła pewne problemy z wydajnością aplikacji, zwłaszcza podczas pierwszego uruchomienia, renderowania animacji oraz przewijania stron. Ponadto użytkownicy starszych urządzeń częściej zgłaszali problemy z wydajnością.
Wnioskiem z badania jest, że choć większość użytkowników nie dostrzega spadków wydajności, istnieją pewne różnice w szybkości działania i zużyciu zasobów między technologiami cross-platformowymi i natywnymi. Problemy z wydajnością mogą być bardziej zauważalne w aplikacjach cross-platformowych, szczególnie na starszych urządzeniach. Jednakże ostateczna ocena wpływu wyboru technologii na szybkość działania i zużycie zasobów wymaga dalszych badań i analizy.
***
Artykuł powstał w ramach realizacji pracy dyplomowej pt. Analiza oprogramowania natywnego i cross-platformowego w aplikacjach mobilnych.
Przemysław Falkowski-Gilski przemyslaw.falkowski-gilski@pg.edu.pl
Roman Dykyj, Julian German
-
2024-10-28
„Dziady” w Katedrze