Bei der Entwicklung von mobilen Anwendungen bieten sich zu Beginn gleich mehrere Möglichkeiten für die Umsetzung. Während manche aufgrund von Performanz für eine native Umsetzung argumentieren, sind Progressive Web Apps (PWAs) oder hybride Apps aufgrund Entwicklungseffizienz und Flexibilität eine ernstzunehmende Alternative. Wir haben uns mit den Unterschieden beschäftigt und die wichtigsten Einzelheiten zusammengefasst.

Native Apps – Solide Umsetzung mit Nachteilen

Bei nativen Anwendungen für Smartphones handelt es sich um eine Umsetzung mit den Programmiersprachen und Frameworks der zugrundeliegenden Plattform. Eine native App für Android wird somit mit Java oder Kotlin umgesetzt, während eine iOS App auf Swift oder Objective-C als Programmiersprache setzt. Diese Tatsache räumt nativen Anwendungen sowohl Vorteile als auch Nachteile gegenüber PWAs und hybriden Apps ein.

Durch die Verwendung der plattformspezifischen Programmiersprachen und Frameworks, bietet sich auch die Möglichkeit sämtliche Hard- und Softwarefunktionalitäten des Endgerätes zu nutzen. So kann problemlos auf Gerätesensoren, Kamera, Speicher oder das Adressbuch zugegriffen werden. Für das UI-Design können die nativen Kontrollelemente des Betriebssystems verwendet werden (hohe Benutzerfreundlichkeit) und auch in puncto Performanz haben native Anwendungen die Nase vorne.

Kurioserweise ist die größte Stärke von nativen Anwendungen auch ihr größter Nachteil im Vergleich zu hybriden Ansätzen. Eine Android App läuft nicht auf iOS und umgekehrt. Daher benötigt die Umsetzung einer App für beide Endgeräteklassen auch zwei separate Projekte. Nicht selten bedeutet dies die Verdoppelung des Entwicklungsaufwands für die Apps. Auch bei der Verteilung der Anwendungen müssen zwei App Stores gleichzeitig bedient werden, was doppelten Verwaltungsaufwand im Vergleich zu PWAs bedeutet.

Progressive Web Apps – Flexible Lösung mit viel Potenzial

Traditionellerweise bestehen Webanwendungen aus HTML, CSS und JavaScript. Durch die Verwendung von Frameworks und Bibliotheken wie Angular, React oder Vue können auch umfangreiche Enterpriseanwendungen effizient umgesetzt werden. Mit dem Konzept der Progressive Web Apps hat Google 2017 einen nachhaltigen Trend initiiert, der sich bis heute stetig weiterentwickelt hat.

Im Vergleich zu nativen Anwendungen leben PWAs im Webbrowser und unterliegen somit dessen Eigenheiten. Sie sind darauf ausgelegt, die Benutzererfahrung einer nativen App zu bieten. Wenn bei der Umsetzung wichtige Themen wie Installierbarkeit, Offlinefähigkeit und Responsiveness beachtet werden, kommen sie einer nativen App schon sehr nahe. So kann eine Progressive Web App beispielsweise problemlos auf Smartphones installiert werden. Sie ist dann über ein eigenes App Icon zugänglich und kann auch auf bestimmte Hardwarefeatures wie z.B. GPS oder die Kamera zugreifen. Durch eine Umsetzung mit modernem Design, die Unterstützung von Push Notifications und Offlinefähigkeit kann ein nahezu natives „Look & Feel“ erzeugt werden.

Da PWAs im Webbrowser laufen, können sie auf nahezu allen Endgeräten (Smartphones und Desktop) genutzt und installiert werden. Im Gegensatz zu einer nativen Umsetzung wird hier nur eine gemeinsame Codebasis entwickelt, wodurch die Effizienz gesteigert und Entwicklungsaufwand eingespart wird.

Leider ist es derzeit nicht möglich eine Progressive Web App in einem App Store anzubieten (Ausnahme: Microsoft Store), weshalb die Anwendung erstmalig über eine URL geöffnet und installiert werden muss. Des Weiteren kann eine PWA auch nicht auf alle Hardware- und Betriebssystemfunktionen des Endgerätes zugreifen, weshalb sich hier abhängig vom Anwendungsfall Einschränkungen ergeben können. Beide Hindernisse werden aber durch den Einsatz von hybriden Apps überwunden.

Hybride Apps – Das Beste aus beiden Welten

Wie der Name bereits vermuten lässt, handelt es sich bei hybriden Anwendungen um eine Mischung aus Web Technologien und nativen Funktionalitäten. Hierbei wird das Herzstück der Anwendung mit bekannten Web Technologien (wie bei Progressive Web Apps) entwickelt. Im Anschluss wird das Herzstück, das im Wesentlichen eine Webanwendung ist, in eine native App verpackt/gekapselt. Durch den Einsatz von Plugins ist dann auch der Zugriff auf native Gerätefunktionen möglich um so die Möglichkeiten aus beiden Welten zu vereinen.

Vereinfacht gesagt wird die Webanwendung in einer Webansicht („Web View“) innerhalb der nativen App (Wrapper) dargestellt. Da sich sämtliche Anwendungslogik in der Webanwendung befindet, ist es ausreichend, eine einzelne Codebasis zu pflegen und die nativen Apps daraus zu generieren. Durch die Verwendung von modernen „Wrapper Technologien“ wie Cordova oder Capacitor kann auf alle notwendigen Hardware- oder Betriebssystemfunktionen zugegriffen werden.

Da hybride Apps effektiv native Anwendungen sind, können sie auch problemlos in App Stores veröffentlicht werden. Durch eine einzelne Codebasis (im Gegensatz zu nativen Apps) wird die Effizient gesteigert und Entwicklungsaufwand eingespart. Wie bei PWAs kann aber auch hier nicht auf native Kontrollelemente zugegriffen werden. Darüber hinaus läuft die Anwendung letzten Endes in einer Webansicht, weshalb es abhängig vom Anwendungsfall zu Performanceeinbußen kommen kann.

Fazit

Die Entscheidung, ob eine mobile Anwendung als native App umgesetzt werden muss, sollte zu Beginn des Softwareprojekts ausgiebig evaluiert werden. Progressive Web Apps und hybride Apps sind ausgereifte Alternativen und bieten Vorteile gegenüber einer nativen Umsetzung. Sie erleichtern beispielsweise die Entwicklung, da nur eine Codebasis für alle Endgeräte entwickelt werden muss. Gleichzeitig können so unnötige Entwicklungskosten eingespart werden. Da keine nativen Kontrollelemente des Betriebssystems genutzt werden können, ist ein ansprechendes UI-Design besonders wichtig, was aber auch bei nativen Umsetzungen nicht ausbleibt. Durch den Einsatz von PWAs oder hybriden Apps kann so auf allen Endgeräten eine eindrucksvolle Benutzererfahrung geboten werden.

Der Mehraufwand für eine Umsetzung als native App kann somit nur für spezifische Anwendungsfälle, in denen besondere Performanz gefordert ist (z.B. hochperformante Spiele), argumentiert werden. Auch wenn ausdrücklich native Kontrollelemente des Betriebssystems eingesetzt werden sollen, führt auf den ersten Blick kein Weg an einer nativen App vorbei. Auf den zweiten Blick kann hier jedoch auch Flutter zum Einsatz kommen. Diesem Thema werden wir uns aber in einem anderen Beitrag widmen.

Quellen und Verweise: