Mobile App-Entwicklung: Hybride Apps

2. Oktober 2013

Die letzten beiden Blogbeiträge sind auf die Entwicklung nativer Apps und Web Apps eingegangen und haben damit die beiden Extrempunkte der App-Entwicklung aufgezeigt. Während native Entwicklung eng an eine Plattform gekoppelt ist, sind Web Apps grundsätzlich plattformunabhängig lauffähig.

Der folgende Artikel geht auf Hybrid-Apps als dritte Variante der App-Entwicklung ein und zeigt sowohl Vorteile als auch Nachteile auf.

Begriffsklärung

Hybride Apps bringen die Extreme der nativen App-Entwicklung auf der einen und Web Apps auf der anderen Seite näher zusammen und stellen eine Art Mittelweg dar. Technisch gesehen handelt es sich bei einer Hybrid-App um eine Web App, die in einen nativen Container eingebettet wird und damit als “normale” App auf einer Plattform installiert werden kann. Aus diesem Grund wird auch häufig synonym der Begriff “Container-App” verwendet.

Was bedeutet das genauer? Der Großteil der Entwicklung (>90%) einer hybriden App findet als Web App statt, wie es im letzten Blogbeitrag beschrieben wurde. Diese Web App besteht aus rein statischen Seiten, die im App-Paket bereits enthalten sind und demnach nicht von einem Web Server (mit z.B. ASP.NET MVC) heruntergeladen werden müssen. Per AJAX-Calls werden ggf. lediglich (Roh-) Daten von einem Server bezogen. Diese statischen Seiten (also die als Web App entwickelte Webseite mit all ihrer Funktionalität) wird dann in einer quasi leeren nativen App in ein WebView-Control eingebettet, das prinzipiell von jeder mobilen Plattform bereitgestellt wird. Mit diesem Control werden die HTML-Inhalte der Web App einfach nur dargestellt, die native App beinhaltet ansonsten keine Logik und auch keine UI-Elemente, dies wird von der enthaltenen Web App abgedeckt. Das bedeutet zwar, dass man für jede unterstützte Plattform eine eigene native App entwickelt, der Aufwand dafür ist aber sehr gering, da das Gros der Funktionalität als Web App realisiert wird.

Zur Unterstützung der Entwicklung hybrider Apps hat sich in den letzten Jahren das Cordova-Framework etabliert, das besser bekannt ist unter seinem ursprünglichen Namen PhoneGap. Mittlerweile ist Cordova die frei verfügbare Version von PhoneGap, das ein Produkt von Adobe darstellt und zusätzliche Funktionen bereitstellt. Auf der einen Seite ist es mit Cordova leicht möglich, für verschiedene mobile Plattformen ein neues Container-Projekt zu erstellen, in das HTML-Web-App-Inhalte eingebettet werden können. Entwicklern wird hier also die initiale Arbeit abgenommen. Auf der anderen Seite ermöglicht Cordova, dass Entwickler aus dem JavaScript-Code heraus auf native Gerätefunktionen zugreifen können, z.B. die Kamera, Notifications, Geolokation, Kontakte, E-Mail, lokales Dateisystem, … Technisch löst dies Cordova über eine Brücke von JavaScript zu nativem Code, durch ein Plugin-System können auch individuelle native Funktionen implementiert werden.

Vorteile

Hybrid-Apps vereinen einige der Vorteile nativer Apps und Web Apps. Wie bei nativen Apps ist bei Hybrid-Apps unter Verwendung von Cordova auch die Nutzung nativer Geräte-Features möglich, wobei Entwickler diese über einfache JavaScript-Funktionen ansprechen können. Da das Ergebnis einer Hybrid-App ein natives App-Paket ist, lässt sich die App zudem über die gängigen App Stores verteilen und monetarisieren. Anders als bei einer Web App sind alle Bestandteile der App in Form von HTML/CSS/JavaScript etc. bereits im App-Paket enthalten und müssen nicht von einem Web Server heruntergeladen werden. Lange Ladezeiten bei Start der App durch den Download der Inhalte entfallen dadurch, zudem ist eine Hybrid-App damit offlinefähig.

Auch von Web Apps übertragen sich viele Vorteile auf Hybrid-Apps. Da eine Hybrid-App zum Großteil als Web App realisiert wird, bleibt die Cross-Plattform-Fähigkeit erhalten. Zwar muss für jede Plattform ein schlanker nativer Container geschrieben werden, der Aufwand dafür ist aber gering. So lassen sich neue Plattformen vergleichsweise schnell und flexibel adaptieren. Auch die Kosten für die Entwicklung hybrider Apps für mehrere Plattformen fallen im Vergleich zu nativen Apps geringer aus. Ebenso bleiben bei dem Aspekt “Know How” bei Hybrid-Apps die Vorteile von Web Apps erhalten. Entwickler können ihr Wissen im Bereich Webentwicklung weiter verwenden und auf die Entwicklung von Hybrid-Apps übertragen.

Insgesamt erhalten Unternehmen mit Hybrid-Apps also die Cross-Plattform-Vorteile von Web Apps mit ihren geringeren Kosten, kleinerer Time to Market und hoher Flexibilität bzgl. der Plattformwahl, was unternehmensintern allgemein und in BYOD-Szenarien interessant ist. Zusätzlich erhält man einige Vorteile nativer App wie die Verteilbarkeit über App Stores und den Zugriff auf Hardwarefunktionalität, was über die Möglichkeiten von Web Apps hinausgeht.

Nachteile

Neben vielen Vorteilen erben Hybrid-Apps auch einige Nachteile von nativen Apps und Web Apps. Da es sich größtenteils um Web Apps handelt, besteht auch bei Hybrid-Apps ein Kompromiss hinsichtlich der User Experience und Performance auf unterschiedlichen Plattformen. Verschiedene UI-Philosophien können nicht abgebildet werden, im Prinzip sieht auch eine Hybrid-App auf allen unterstützten Plattformen gleich aus.

Auch wenn der native Container sehr schlank ist, so ist es dennoch nötig, für alle unterstützte Plattformen eine Entwicklungsumgebung einzurichten und die Container-App bereitzustellen, was mit Aufwand und evtl. zusätzlichen Kosten für Hardware, Software und Entwickler-Accounts verbunden ist. Für die Entwicklung von Hybrid-Apps eignet sich zudem nicht jede Entwicklungsumgebung gleichermaßen. So fehlen mitunter Tools zum komfortablen Debugging und Profiling von Hybrid-Apps.

Einsatzgebiete

Generell eignet sich eine Hybrid-App wie auch eine Web App in unternehmensinternen Szenarien (B2E), wenn sich ein Unternehmen nicht auf eine Plattform festlegen will oder Mitarbeitern in BYOD-Szenarien die Wahl zwischen mehreren Plattformen lassen möchte. Die Trade-offs in Bezug auf das Look&Feel und die Performance einer App lassen sich hier oftmals verschmerzen, entscheidender sind die Vorteile bzgl. Cross-Plattform-Kosten, Time to Market und Flexibilität. Auch die Wartbarkeit ist besser als bei nativen Apps, da prinzipiell nur eine HTML/JavaScript-Codebasis gepflegt werden muss.

Bei der Entwicklung von Consumer-Apps haben Hybrid-Apps den Vorteil, dass sie sich in die gängigen App Stores einstellen und darüber monetarisieren lassen. Allerdings erwarten Consumer viel eher eine maßgeschneiderte App für die jeweilige Plattform als eine “fits all”-Lösung, die auf allen Plattformen gleich aussieht. Das kann in vielen Szenarien die Entwicklung nativer Apps bedeuten.

Im Vergleich zu einer Web App sollte man eine Hybrid-App einsetzen, wenn es sich bei der App um eine normal installierte App handeln soll, die nicht beim Aufruf von einem Webserver geladen werden muss. Ist Offline-Fähigkeit gefordert, so kann man eine Hybrid-App entwickeln, eine Web App ist hingegen außen vor. Auch wenn in einem überschaubaren Maße Hardware-Funktionalität eingebunden werden soll, kann eine Hybrid-App eingesetzt werden. Wird eine enge Integration in das Betriebssystem und seine Funktionalität gewünscht, so sollte jedoch besser eine native App entwickelt werden.

Szenarien für Hybrid-Apps umfassen wie bei Web Apps firmeninterne Business-Apps, Produktivitäts-Apps, Tools und Utilities sowie Information/News Apps.

Fazit

In diesem Blogbeitrag wurde die Entwicklung hybrider Apps als weitere Variante der App-Entwicklung vorgestellt. Hybrid-Apps eignen sich in vergleichbaren Szenarien wie Web Apps, sind aber zusätzlich über App Stores verteilbar und haben Zugriff auf Geräte-Funktionen. Ebenso zeichnen sie sich wie Web Apps durch eine hohe Cross-Plattform-Fähigkeit aus. Demgegenüber stehen Kompromisse hinsichtlich Look&Feel und Performance, was aber gerade firmenintern oftmals tragbar ist.

Die letzten 3 Blogbeiträge haben unterschiedliche Facetten der App-Entwicklung vorgestellt: Nativ, Web, Hybrid. Es ist deutlich geworden, dass jede der 3 Möglichkeiten Vor- und Nachteile hat – wie so oft in der IT heißt es auch hier: It depends! Welche Variante schlussendlich zum Einsatz kommt, hängt von vielen Faktoren ab: Kosten, Zeit, Know How, Verteilung, Szenario, Benutzerkreis, Plattform(en), … nur mit differenzierter Betrachtung aller Aspekte kann die optimale Lösung gewählt werden.

Abschließend folgt noch ein letzter zusammenfassender Beitrag, der die Möglichkeiten der App-Entwicklung mit ihren Vor-/Nachteilen und Einsatzszenarien gegenüberstellt.