Sokan, sokféleképpen megválaszolták már ezt a kérdést. Mi sallangmentesen elmondjuk szakmai meglátásunkat, ami orientálhat a döntésben, ha épp alkalmazás fejlesztés előtt állsz. Ez a blog nem fejlesztőknek szól elsősorban, hanem azon megrendelőinknek, potenciális partnereinknek, akik applikáció fejlesztésben gondolkodnak.
Ebben a bejegyzésben először is közérthető módon vázoljuk a problémát magát, és az ezzel kapcsolatos véleményünket, majd fejlesztői szemmel, kicsit mélyebben kitérünk az egyes részletekre, pro és contra érvekre.
Szögezzük le az elején: ezen blog bejegyzés az iOS és Android platformokra való fejlesztés kérdéseivel foglalkozik, egyéb platformok speciális igényeire és sajátosságaira nem térünk ki.
Többféleképpen is lehet fejleszteni egy mobil alkalmazást?
Az Apple iOS és a Google Android rendszere is egymástól független mobil operációs rendszerek, számos alapelvben különböznek, és a rajtuk futtatható alkalmazások is más háttérfolyamatok mentén jönnek létre.
Alkalmazásunkat a mobil fejlesztők készíthetik az Apple vagy a Google saját készítésű fejlesztői eszközeivel is (ún. natív módon), és elkészülhet az alkalmazásunk olyan harmadik fél által fejlesztett szoftver segítségével is, ami képes az ebben írt forráskódból mindkét mobil platformon külön-külön futó alkalmazást készíteni (cross-platform fejlesztés).
Mit jelent a natív fejlesztés?
Mindkét platformnak megvan tehát a saját fejlesztői környezete (azon szoftverek és segédeszközök összessége, amivel egy új alkalmazást le lehet programozni, és publikálni az egyes alkalmazásboltokba – ezeket az Apple vagy a Google készíti saját maga).
Amikor a platformok saját, általuk ajánlott, és legspecifikusabb eszközkészletét használjuk, akkor (platform) natív fejlesztésről beszélhetünk. Ez esetben iOS és Android rendszerekre is külön-külön programkódot kell készítenünk, és mindkettőhöz speciális tudás is szükségeltetik. Az Arteries-nél külön iOS és külön Android fejlesztő kollégák végzik ezen feladatokat.
Az Apple iOS rendszerére korábban Objective-C nyelven, egy néhány éve már ún. Swift nyelven kell elkészíteni a mobil alkalmazásokat.
A Google Android operációs rendszerre korábban Java nyelven, néhány éve Kotlin programozási nyelven ajánlott natív alkalmazást írni.
Mit jelent a cross-platform (platform-független) fejlesztés?
Vannak vállalatok, akik felismerve a fenti folyamat jelentős erőforrás igényét, olyan új programozási környezet elkészítését tűzték ki célul, amiben egységes programkódot írva, mindkét operációs rendszerre lefordíthatjuk alkalmazásunkat.
Az Arteries műhelyében is több ilyen rendszert használtunk az évek során. PhoneGap, Appcelerator Titanium, React Native vagy Flutter. Mi az Arteries-nél jelenleg az egyébként a Google által fejlesztett és támogatott Flutter fejlesztési rendszert preferáljuk. Ennek programozási nyelve az ún. Dart programozási nyelv.
Egy Dart programozó tehát képes egy programkóddal mind iOS, mind Android környezetre egységes alkalmazást fejleszteni a Flutter segítségével.
A blogbejegyzés későbbi részében kitérünk arra, milyen esetekben ajánljuk, vagy éppen ellenjavallott a cross-platform rendszerek használata. Van amikor a hátrányok jelentősebbek, mint az a tény, hogy a fejlesztés legtöbb esetben gyorsabb, és erőforrás-hatékonyabb mint a natív fejlesztés esetében.
„Ugye nem nekem, mint ügyfélnek kell eldönteni, hogy melyik rendszerben készüljön az alkalmazásom?” – kérdezik tőlünk gyakran
Természetesen szakértőink a projektet megismerve, a fejlesztendő funkciókat áttekintve, valamint a jövőbeni igényeket meghallgatva megteszik az ajánlásukat, elmondjuk az előnyöket és hátrányokat, de a döntést a megrendelőinkre bízzuk.
Ahogy egy generálkivitelező is elmondja, hogy téglából vagy más típusú falazó anyagból javasolja készíteni az adott házat (és miért) – végső soron a kedves megrendelő döntheti el, hogy milyen falazatot szeretne az ingatlana esetében.
Milyen esetekben ajánlott natív módon fejleszteni egy alkalmazást?
Röviden: az Arteries-nél akkor szoktunk natív alkalmazás fejlesztést javasolni, amikor az alkalmazás esetében fontos a villámgyors működés, amikor a mobil készülék különböző perifériáit, hardware elemeit is használja az alkalmazás: pl. kamera, GPS, NFC olvasó, gyorsulásmérő, magnetométer, LiDAR, PPG szenzor, bluetooth… stb.
Akkor is javasolt a natív környezetek mellett dönteni, ha 3D-s megjelenítést, vagy mesterséges intelligenciát használ az alkalmazásunk. Ezeket az erőforrásokat sokkal hatékonyabban éri el egy natív program, mint egy 3rd party cross-platform eszközben írt alkalmazás.
Milyen esetekben ajánlott cross-platform alkalmazást fejlesztésbe fogni?
Jellemzően olyan alkalmazások esetében szoktuk ajánlani a platformfüggetlen programozási eszközök használatát, amikor az alkalmazás performancia igénye nem kritikus (megjelenítési, válaszadási teljesítmény, sebesség), nem elvárt a valós idejű, vagy közel valós idejű működés. Amikor emberi léptékű válaszidők megfelelőek (néhány száz milliszekundum, vagy akár 1-2 másodperc), és az alkalmazás nem kell, hogy hozzáférjen speciális hardware elemekhez a mobil készülékben.
Az alapvető kamera, GPS használat még cross-platform rendszerek esetében is meglehetősen gördülékeny, de speciálisabb műveleteket már ezekkel is nehezebb végezni.
Amikor főleg kézi adatbevitelt, és erre válaszul valamilyen egyszerűbb adatmegjelenítést végez az alkalmazásunk, akkor nagyon jól használhatóak ezek a fejlesztési eszközök.
Ha tudjuk, hogy a jövőben már speciálisabb igényeink lennének, erősen ajánlott megfontolni a natív fejlesztést (még a többletköltsége ellenére is), hogy ne kelljen újraírni a korábban cross-platform eszközökkel készített alkalmazásainkat.