Často s klienty, před začátkem vývoje, probíráme zda pro vývoj aplikace použít nativní nebo multiplatformní přístup. Tento článek poskytne základní porovnání daných přístupů a různých platforem, zdůrazní jejich klíčové výhody a nevýhody. Snad i také vám pomůže určit, která metoda je nejvhodnější pro váš projekt.
Porovnání hlavních platforem
Nativní vývoj: Android (Kotlin/Java) a iOS (Swift/Objective-C)
Nativní vývoj znamená vytvořit vlastní aplikaci pro každý operační systém zvlášť a v nástrojích poskytnutých od autorů dané platformy. Ve výsledku tedy vzniknou dvě samostatné aplikace (jedna pro iOS a jedna pro Android).
Toto je pro nás nejčastějších způsob vývoje mobilních aplikací.
Výhody
- Výkonnostní optimalizace a přímý přístup k hardwaru – cokoliv co daná platforma poskytuje a představí, tak je možné využít.
- Nejlepší uživatelské zážitky – využívají se ovládací prvky a grafika dané platformy. Tedy to na co jsou uživatelé zvyklí a zlepšuje se tím “uživatelský zážitek” (UX = User Experience).
- Plný přístup ke všem funkcím a možnostem daného zařízení – od senzorů (GPS, gyroskop), přes Bluetooth až po rožšířenou realitu (AR, VR možnosti a knihovny).
- Udržitelnost a rozšiřitelnost do budoucnosti.
- Rozšířená znalost mezi vývojáři a silná komunita vývojářů – existuje velké množství knihoven, pluginů, návodů a další materiálů.
- Tento přístup “neumře”. Což se může stát některým multiplatformním frameworkům nebo hybridním řešení.
Nevýhody:
- Vyšší náklady a časová náročnost vývoje.
- Potřeba testovat obě aplikace.
- Také údržba a rozšiřování aplikace je časově a finančně náročnější (existují dva zdrojové kódy).
Ukázky nativních aplikací: Spotify, Uber, WhatsApp, …
Multiplatformní vývoj: React Native, Flutter, Kotlin Mutliplatform, Xamarin
Multiplatformní vývoj umožňuje vývojářům vytvářet aplikace, které fungují na více platformách z jednoho sdíleného zdrojového kódu. Máte tedy jednu aplikaci/kód pro iOS a Android.
Toto řešení používáme pro menší projekty. Aktuálně využíváme nejvíce technologii Flutter – od společnosti Google. Pro některé druhy aplikací je to ideální kompromis mezi rychlostí vývoje/cenou a výkonem aplikace. S tímto přístupem vznikne jeden sdílený kód pro oba operační systém. Tedy i aplikace mají úplně stejné design/UI. Díky tomuto přístupu je možné ušetřit až 40% nákladů.
Do budoucna vypadá velice zajímavě technologie Kotlin Mutltiplatform. Kdy je možné využít výhody sdíleného kódu (i pro UI je možné mít sdílený kód nebo je možné mít nativní UI pro Android i iOS – toto třeba u Flutteru nelze) pro více platforem, ale zároveň nepřijít o rychlost nativní aplikace. Je možné aplikaci publikovat jak pro Android, iOS, tak i desktop a web. (Jen v době psaní tohoto článku – prosinec 2023 – není ještě stabilní první verze této technologie, ale verze 0.8). Díky tomuto přístupu bude možné ušetřit až 30% nákladů oproti nativnímu vývoji, ale nepřijít o výhody nativního vývoje. Pokud by případně Kotlin Multiplatform skončil, tak zůstane alespoň kód pro Android, který bude s úpravami fungovat dále.
Dále tu existuje populární technologie React Native od společnosti Meta (Facebook). Aplikace se píší pomocí JavaScriptu a Reactu (knihovna pro vytváření UI). Mnoho vývojářů zná JavaScript, takže je pro ně tato technologie ideální volbou.
Nakonec bychom ještě měli zde zminít technologii Xamarin od společnosti Microsoft. Xamarin používá C# (a .NET framework). Pokud tedy vývojáři mají zkušenosti s tímto jazykem, tak tato technolgie může být také zajímavou volbou (je zde i celkem velká komunita a podpora od Microsoftu).
Výhody
- Většina kódů je sdílena pro obě platformy.
- Snížení nákladů a času vývoje.
- Jednotný vzhled aplikace a funkcionalit pro obě platformy. (Může být i nevýhoda)
- Snadnější údržba. (Provádí se změny jen v jednom zdrojovém kódu)
Nevýhody
- Možné omezení v přístupu k hardwaru.
- Méně optimalizovaný výkon v porovnání s nativním vývojem (toto úplně neplatí pro Kotlin Multiplatform).
- Není zde tak silná komunita vývojářů – tyto frameworky nemají ještě takovou minulost jako nativní vývoj. (Největší komunitu a podporu má v současné době React Native, dále pak rychle rostoucí komunitu má Flutter. Kotlin Multiplatform je v současné době postupně na vzestupu.)
- Přidává se další potenciální možnost chyb ve vrstvě nad nativním kódem.
Ukázky Flutter aplikací: Google Ads a další příkladové studie
Ukázky React Native aplikací: Facebook a další příkladové studie
Ukázky Koltin Mutliplatform aplikací: Netflix a další případové studie
- Snadný vývoj s použitím webových technologií (HTML, CSS, JavaScript, …) – výhodnější pro webové vývojáře.
- Jednoduché nasazení.
- Znatelně nižší výkon.
- Omezenější uživatelský zážitek.
- Menší komunita než například u React Native.
- Požadavky na aplikaci (funkce): Aplikace vyžadující integraci s hardwarovými funkcemi zařízení (složitější práce s fotoaparátem – Rozšířená nebo virtuální realita (AR/VR), Bluetooth komunikace, DRM přehrávání videí, chytré domácnosti, …) nebo komplexní uživatelské rozhraní je lepší vytvářet pomocí nativního vývoje. Také aplikace kde se dbá na rychlost/odezvu aplikace.
- Rozpočet a časová omezení: Pro projekty s omezeným rozpočtem nebo potřebou rychlého nasazení na trh může být vhodnější cross-platform vývoj.
- Cílové publikum: Zvažte, které platformy vaše cílové publikum nejčastěji používá, a vyberte odpovídající vývojový přístup.
Hybridní řešení: Ionic, Cordova
Toto řešení v současné době nenabízíme. Nelíbí se nám zde znatelně horší uživatelský zážitek (UI/UX) a také horší rychlost aplikace. Je zde velký problém dosáhnout “nativního” vzhledu a rychlosti aplikace.
Může být vhodné spíše pro menší projekty nebo projekty kde jsou už rozsáhlé webové zdroje. Obecně je lepší použít spíše technologii Flutter/React Native/Kotlin Multiplatform.
Výhody
Nevýhody
Kdy volit nativní a kdy multiplatformní přístup?
Výběr zda zvolit nativní nebo multiplatformní aplikaci závisí na řadě faktorů. Mezi hlavní patří především:
Závěr
Výběr správné platformy pro vývoj mobilních aplikací závisí na mnoha faktorech, včetně cílového publika, rozpočtu a specifických požadavků na aplikaci. Zatímco nativní vývoj poskytuje nejlepší uživatelské zážitky a výkon, multiplatformní řešení nabízí výhody v rychlosti a snížení nákladů na vývoj. Jen bychom na závěr doporučili se spíše vyhnout technologiím jako je Ionic, Cordova a podobně.