Die klassische Entwicklung mobiler Apps findet typischerweise nativ auf der jeweiligen Plattform statt. Dies bringt allerdings einige Herausforderungen mit sich. Gerade die Cross-Plattform-Problematik hat dazu geführt, dass andere Ansätze zur App-Entwicklung an Popularität gewinnen. Dieser Artikel gibt einen kurzen erklärenden Abriss der Möglichkeiten, bevor nachfolgende Beiträge detaillierter auf die jeweiligen Ansätze eingehen.
Native Apps
“Nativ” ist der Standardweg der App-Entwicklung für eine Plattform. Dabei werden Apps mit den Technologien umgesetzt, die von der Plattform als primäres Entwicklungsmodell zur Verfügung gestellt werden. Typischerweise unterscheiden sich dabei pro Plattform auch die Sprachen, Konzepte, SDKs und Tools, die Entwickler erlernen müssen. Die bereitgestellte Funktionalität ermöglicht es Entwicklern, nativen Code zu schreiben, der bestmöglichen Nutzen von den Features der Geräte und des Betriebssystems macht und die beste Performance sowie das beste Benutzererlebnis bietet.
Allerdings stellt sich direkt die Frage nach der Cross-Plattform-Entwicklung. Will ein Entwickler eine App auf mehreren Plattformen bereitstellen, so muss er diese für jede Plattform separat entwickeln und kann den Großteil des Quellcodes nicht übertragen. Auch können neue Plattformen nur adaptiert werden, indem eine neue App für die jeweilige Plattform entwickelt wird.
Web Apps
Die Herausforderungen mit nativen Apps wie z.B. die Cross-Plattform-Problematik haben dazu geführt, dass Web Apps verstärkt in den Fokus gerückt sind. Prinzipiell handelt es sich bei einer Web App um eine Webseite, die im Browser eines mobilen Geräts aufgerufen wird und dort ihre Inhalte darstellt.
Dennoch unterscheidet sich eine Web App in mehreren Punkten essentiell von einer Webseite oder einer klassischen Webanwendung. Eine Web App versucht das Verhalten und die UI einer nativen App nachzubilden. Dazu gehören u.a. die Bedienbarkeit per Touch, die Anpassung an den Formfaktor des mobilen Gerätes, die Unterstützung von Gesten und mobil-typische Animationen. Die UX einer Web App ähnelt damit der UX einer nativen App bis hin zur Nicht-Unterscheidbarkeit beider App-Formen. Während bei klassischen Webanwendungen explizite Seitenwechsel durch GET/POST-Aufrufe stattfinden, werden bei einer Web App keine Seiten vom Server komplett nachgeladen. Unterschiedliche Ansichten werden bereits initial beim Laden der ersten Seite abgerufen und dann bei Benutzer-Interaktion nur dynamisch ausgetauscht. Hier spricht man auch von einer “Single Page Application”. Weiterhin grenzen die Use Cases und der Umfang einer Web App diese von einer informativen Webseite oder einer full-blown Webanwendung ab.
Die Blüte und steigende Popularität von Web Apps stehen in engem Zusammenhang mit den Fortschritten bei der Entwicklung moderner Webanwendungen, getrieben durch HTML5 und vor allem durch eine deutliche Weiterentwicklung im Bereich JavaScript. Dies umfasst auch die Entwicklung damit einhergehender Bibliotheken wie jQuery, doch dazu mehr in einem separaten Artikel.
Da Web Apps in einem Browser aufgerufen werden und nicht über App Stores verteilt werden, sind sie grundsätzlich von jedem modernen mobilen Gerät aus nutzbar, womit die Cross-Plattform-Problematik angegangen wird. Zudem kann durch den Einsatz offener Web-Standards wie HTML5, CSS3 und JavaScript quasi jeder Web-Entwickler eine Web App entwickeln. Es gibt allerdings auch Nachteile wie die fehlende Integration in das Zielsystem oder das Eingehen eines Kompromisses bzgl. User Experience und Performance, wodurch Web Apps nicht in jedem Szenario zur geeigneten Wahl werden.
Hybride Apps
Hybrid-Apps vereinen die Welt der nativen Apps und der Web Apps und bieten damit viele der Vorteile, aber auch einige der Nachteile aus beiden Welten. Grundsätzlich handelt es sich bei hybriden Apps um Web Apps, die in einen schlanken nativen App-Rahmen (“Container”, daher auch oft “Container-Apps”) eingebettet werden. Ein Großteil der Logik und der UI werden dabei von der Web App bereitgestellt, sodass die Cross-Plattform-Fähigkeit zum überwiegenden Teil erhalten bleibt. Zur Adaption einer neuen Plattform muss jeweils nur der native App-Rahmen ersetzt werden.
Zudem können Hybrid-Apps über App Stores verteilt und monetarisiert werden, gleichzeitig lassen sich bei Einsatz entsprechender Frameworks native Geräte-Features nutzen, was bei Web Apps nicht der Fall ist. Dadurch eignen sich hybride Apps in vielen Szenarien besser als Web Apps, wobei jedoch auch einige der Nachteile von Web Apps (Kompromiss in Bezug auf User Experience, Performance, etc.) bestehen bleiben.
Weitere Ansätze
Weitere Ansätze zur Entwicklung mobiler Apps sind u.a. Cross-Compilation und allgemeiner gefasst MEAP-Lösungen (Mobile Enterprise Application Platforms). Anbieter in dieser Kategorie stellen Entwicklern Frameworks, SDKs und spezielle Tools zur Erstellung von Apps bereit. MEAPs sind ein weit gefasster Begriff, entsprechende Lösungen haben sehr unterschiedliche Features und Möglichkeiten. Eine umfassende Betrachtung ist an dieser Stelle daher nicht möglich. Teilweise stellen MEAP-Anbieter Middleware-Server bereit, um Aspekte wie Sicherheit, Kommunikation, Skalierbarkeit etc. abzubilden und damit von den konkreten Plattformen zu abstrahieren. Beim Ansatz der Cross-Compilation stellen Anbieter ebenfalls Tools und SDKs zur Verfügung, gegen die in einer bestimmten Sprache für verschiedene Plattformen programmiert werden kann. Beim Kompilieren mit den jeweiligen Tools findet dann eine Umwandlung der App in ein natives Gegenstück statt (entweder vorkompiliert oder JIT-kompiliert). Welche Plattformen dabei unterstützt werden, ist vom jeweiligen Anbieter abhängig. Bekannte Vertreter dieser Kategorie sind Appcelerator Titanium (JavaScript) und Xamarin Studio (C#).
Wie auch bei Web/Hybrid Apps ist der vermeintlich größte Vorteil von Lösungen im Bereich MEAP und Cross-Compilation, dass zumindest bei der Programmlogik mit einer Codebasis mehrere Plattformen bedient werden können. Zudem handelt es sich bei dem ausgeführten Resultat um echten nativen Code, was vorteilhaft für die User Experience und Performance ist. Auch können diese Apps natürlich über die jeweiligen App Stores bereitgestellt werden.
Dem stehen aber auch etliche Nachteile gegenüber. Die Zahl der unterstützten Plattformen ist beschränkt, Unternehmen können somit nicht flexibel auf neue Plattformen reagieren. Plattform-Spezifika und unterschiedliche UI-Paradigmen können nur mit zusätzlichem Code einbezogen werden, zudem müssen Entwickler zunächst das jeweilige Framework erlernen. Weiterhin machen sich Entwickler vom jeweiligen Anbieter abhängig. Dieses Vendor lock-in kann im hochdynamischen Bereich der mobilen App-Entwicklung ein beträchtliches Risiko darstellen, dem sich Unternehmen nicht aussetzen wollen. Zudem hinken die Frameworks naturgemäß den Plattformen und ihren Features hinterher, bis sie vom jeweiligen Anbieter aktualisiert werden. Auch ist zu beachten, dass die Beschaffung solcher Frameworks in der Regel mit Lizenzierungskosten verbunden ist.
Fazit und Ausblick
Dieser Artikel hat einen ersten Überblick über die vielfältigen Möglichkeiten der Entwicklung mobiler Apps gegeben und bereits einige Vor- und Nachteile der jeweiligen Ansätze aufgezeigt. Die folgenden Beiträge bauen darauf auf und werden differenzierter auf die Varianten Nativ, Web und Hybrid eingehen.
Was bereits deutlich geworden sein sollte: Einen Königsweg zur Entwicklung von Apps gibt es nicht. Zu viele Kriterien und Abhängigkeiten gibt es zu berücksichtigen, als dass ein Ansatz jederzeit favorisiert werden könnte. Wie so oft in der IT heißt es damit auch hier: It depends! Von Fall zu Fall ist abzuwägen, welches Vorgehen am geeignetsten ist und den besten Business-Nutzen erzielt.