App-Entwicklung: Native vs. Hybrid vs. Web
Von Lukas Glaser am 07.02.2018
Vor der Entwicklung einer mobilen App stellt sich häufig die Frage: Welche Produktform ist für meinen Zweck am besten geeignet? Soll es eine native App werden oder eine Web-App? Oder ist gar ein hybrider Ansatz die bessere Lösung? Die Auswahl der technischen Methode zur Umsetzung sollte im Vorhinein gut überlegt sein.
In folgendem Blogbeitrag werde ich die verschiedene Produktformen vorstellen, erklären wo die Unterschiede liegen, mögliche Technologien zur Umsetzung erläutern sowie auf deren Vor- und Nachteile eingehen. Letztendlich möchte ich hier auch etwas „Licht ins Dunkle“ bringen, und darüber Klarheit schaffen, welche Art von App sich für welche Zwecke eignet.
Native Apps
Native Apps werden gezielt für bestimmte Plattformen mit den jeweiligen Systemsprachen entwickelt (z.B.: Java oder Kotlin für Android, Objective-C oder Swift für iOS). Daraus resultiert auch schon deren größter Vorteil: Durch die systemeigene Sprache kann die vorhandene Hardware optimal genutzt werden, da man vollen Zugriff auf die Funktionen des Betriebssystems erhält. Dazu gehören unter anderem: Mikrofon, Kamera, Offline-Modus, Geo-Location u.v.m.
Native Apps bedeuten mehr Aufwand in Entwicklung und Wartung
Um native Anwendungen jedoch auf mehreren Plattformen lauffähig zu machen, müssen diese für jede Plattform neu entwickelt werden, was zum einen zu einem deutlichen Mehraufwand führt, und andererseits auch die Entwicklung an sich erschwert, da sich auch die Programmiersprachen für die jeweiligen Plattformen voneinander unterscheiden. Android und iOS müssen nicht nur mit separater Codebasis entwickelt, sondern auch völlig unabhängig voneinander geplant und konzipiert werden (auch hinsichtlich ihrer Usability), da sie unterschiedliche Bedienelemente verwenden.
Dazu kommt auch noch, dass sowohl Android- als auch iOS-Applikationen regelmäßig aktualisiert werden müssen, da sich beide Mobile-Plattformen in ständiger Weiterentwicklung befinden.
Auch Updates müssen im Store eingereicht und in weiterer Folge von den Nutzern installiert werden.
Native Apps sind Sieger in Sachen Usability
Nachdem sie speziell für bestimmte Betriebssysteme entwickelt werden, können sie deren Vorzüge effizient nutzen. Sie sind außerdem ganz allgemein performanter als ihre hybriden Mitbewerber und erzielen im Store daher meist auch ein besseres Ranking. Auch die verwendeten Benutzerelemente sind dem User stets bekannt, was ebenso die Usability bereichert.
Web Apps bzw. mobile Websites
Eine Web App ist grob gesagt nichts anderes als eine spezielle Website bzw. eine Single Page auf Basis von HTML5, die in der Lage ist, das Gerät zu erkennen und dementsprechend die Inhalte dafür optimiert und darstellt (Stichwort: Responsive Webdesign).
Web-Apps punkten mit der Reichweite
Jedes Endgerät, das über einen Browser verfügt, kann diese Anwendung nutzen – egal ob Android, iOS oder sonstiges. Fast jedes Endgerät verfügt über einen Browser und ist daher auch im Stande auf eine Web-App zuzugreifen. Auch der Offline-Cache der Geräte kann hier verwendet werden.
Schwachpunkte Netzwerkverbindung und Gerätehardware
Aber auch hier gibt es einen entscheidenden Nachteil: Der Quellcode liegt auf einem Server und muss über eine Internetverbindung geladen werden. Eine Web-App benötigt somit für deren Einsatz also eine stabile Internetverbindung. Setzt man auf dem mobilen Endgerät nun eine Verknüpfung zur jeweiligen Website (bzw. Web-App), bestenfalls noch mit einem geeigneten Icon, so verhält sich die App fast so, wie ihre nativen Kontrahenten. Dies kein beispielsweise anhand von Meta-Daten im Head-Bereich festgelegt werden. Im App-Store sind Web-Apps nicht präsent.
Kein Zugriff auf die Gerätehardware
Aus Sicherheitsgründen kann eine Web-App nicht auf die Gerätehardware zugreifen. Während eine native App direkt auf das Gerät geladen wird und daher auch vollen Zugriff auf deren Hardware erhält, ist die Web-App nur über den Browser erreichbar.
Eine mobile Website oder Web-App bietet sich vor allem dann an, wenn kein Zugriff auf das Gerät notwendig ist, und es sich lediglich um eine einmalige und unkomplizierte Angelegenheit handelt, wie beispielsweise das Buchen einer Kinokarte oder eines Flugtickets.
Die zweite Generation: Progressive Web Apps
Als der Hype der Mobilen App-Entwicklung losging, waren Web-Entwickler und Agenturen stets bemüht, verstärkt Web-Apps zu entwickeln, um auch auf Ihre Kosten zu kommen. Diese konventionellen Web-Apps konnten sich jedoch nie gegen ihre nativen und hybriden Kontrahenten durchsetzen.
Ein zweiter Versuch wird nun mit sogenannten Progressiven Web-Apps gestartet. Darunter versteht man Websites, die zahlreiche Merkmale besitzen, die lange nur nativen Apps vorbehalten waren. Dazu zählen beispielsweise: Push-Notifications, der Einsatz von Service Worker oder der Offline-Betrieb. Auch diese werden in HTML, CSS und JavaScript geschrieben und schließlich im Browser ausgeführt.
Hybride Apps
Hybride Apps (auch Cross-Platform Apps genannt) sind eine Mischform aus Nativen Apps und Web-Apps. Während native Apps an ihre jeweilige Plattform gebunden sind, müssen hybride Anwendungen nur einmal mit einem hybriden Framework, welches meist auf JavaScript basiert, geschrieben werden und können sich dann auf allen Plattformen verwendet werden. Diese Vorgehensweise senkt die Entwicklungszeit und damit auch die Gesamtkosten für den Endkunden.
Eine hybride App setzt auf Webtechnologien
Hybride Apps basieren auf HTML5, CSS3 und JavaScript und bei der Verwendung in einem plattformspezifischen Browser des Smartphones aufgerufen. Dabei werden die Browserbedienelemente wie beispielsweise die Menü- oder Adressleiste ausgeblendet, sodass der Benutzer auch wirklich das Gefühl hat, eine gewöhnliche App vor sich zu haben.
Im Allgemeinen lässt sich sagen, dass sich hybride Apps jeweils die Vorteile von nativen Apps und Web Apps zu Nutze machen. Die Anwendung selbst wird zwar in nativen Code geschrieben, jedoch mit HTML5-Elementen ergänzt. Auch die Integration von Web-Services mit beispielsweise PHP und MySQL ist mit wenig Aufwand möglich. Der Zugriff auf die Gerätehardware erfolgt in der Regel mit diversen JavaScript APIs. Dafür muss allerdings die App-Source direkt am Gerät liegen.
Vor allem Web-Developer können sich in der Praxis schnell mit hybriden Techniken anfreunden, da ihnen die oben genannten Sprachen wohl bekannt sind.
Die Distribution von hybriden Applikationen erfolgt wie gewohnt über den App-Store.
Bekannte hybride Frameworks sind: Xamarin, Framework7, Cordova, Ionic, Phonegap und React Nativ.
Performance-Probleme und Einschränkungen
Bei hybriden Applikationen muss die „native Komponente“ mit dem Browser kommunizieren. Bei besonders rechenintensiven Anwendungen wie Spiele oder 3-dimensionale Animationen kann das zum Verhängnis werden und die Performance stark beeinträchtigen. In diesem Fall würde es sich empfehlen, gleich auf einen nativen Ansatz zurückzugreifen. Hybride Apps erlauben auch keine plattformspezifischen Interaktionen und haben auch nicht das Look & Feel wie ihre „nativen Geschwister”.
Wann verwenden wir nun was?
Pauschal lässt sich diese Frage nicht beantworten, da es immer auf die Projektanforderungen ankommt. Legt man Wert auf Performance und Qualität, so sollte man eher einen nativen Ansatz verfolgen. Hat man nur ein geringes Budget und die Anforderungen hinsichtlich Performance sind eher gering, so sollte man mit einem hybriden Framework arbeiten.
Natürlich muss man bei der Entwicklung nativer Apps immer ein größeres Budget einplanen, da für mehrere Plattformen parallel entwickelt werden muss – selbiges gilt auch für die Wartungskosten. Eine native App ist vor allem dann sinnvoll, wenn man (uneingeschränkten) Zugriff auf die Gerätehardware oder die persönlichen Daten benötigt.
Geht es in der Anwendung nur darum, ein Ticket zu buchen und es bedarf keinerlei Zugriff auf das Gerät – jedoch soll die App rasch verfügbar sein? In diesem Fall würde sich eine Web-App anbieten.
Bei der Wahl des richtigen Ansatzes sind folgende Fragestellungen unerlässlich:
- Welchen Zweck verfolgt meine App und was erwartet sich der Kunde bzw. der Nutzer?
- Wie viel Zeit steht mir zur Verfügung?
- Wie hoch ist das vorhandene Budget?
- Welche Ansprüche hinsichtlich Qualität, Performance und Distribution liegen vor?
- Benötigt man einen Zugriff auf die Gerätehardware?
- Soll die App auch im Offline-Modus laufen?
Wie gesagt, gibt es hier keinen Sieger und auch keinen Verlierer. Wer aber die Vorzüge der drei vorgestellten Produktarten kennt, kann für den jeweiligen Einsatzzweck einen individuellen Sieger ernennen.
Bildnachweis
Bannerbild oben: Incloud
The comments are closed.