Wege zur App – Abkürzungen erwünscht Welcher App-Typ für welches Szenario?

Autor / Redakteur: Dr. Veikko Krypczyk & Elena Bochkor * / Stephan Augsten |

Apps für Android und iOS lassen sich auf verschiedenen Wegen erstellen. Eine Systematisierung ist hilfreich, um sich im technischen Dschungel zurecht zu finden. Bei der Time-To-Market können plattformübergreifende Techniken punkten.

Anbieter zum Thema

Ob und in welcher Form man eine App geräte- und plattformübergreifend bereitstellt, hängt vo verschiednen Faktoren ab.
Ob und in welcher Form man eine App geräte- und plattformübergreifend bereitstellt, hängt vo verschiednen Faktoren ab.
(Bild gemeinfrei: geralt / Pixabay )

Spricht man von Apps, dann meint man in der Regel kleine Applikationen für die mobilen Betriebssysteme Android und iOS. Inzwischen gibt es eine Reihe von Ansätzen, eine solche App zu entwickeln. Aus technischer Perspektive ist zwischen nativen, hybriden und Web-Apps zu unterscheiden. Jede Art von App weist ihre spezifischen Vor- und Nachteile auf.

Der Vorteil von nativen Apps liegt darin, dass diese für das jeweilige Betriebssystem optimiert sind. Die Benutzeroberfläche und das Bedienkonzept sind vollständig mit dem System kompatibel. Nutzer müssen sich also nicht erst orientieren, sie sind mit den üblichen Vorgängen, wie der Auswahl oder dem Löschen von Elementen oder dem Wechseln zwischen den Screens einer Anwendung, sofort vertraut.

Native Apps haben auch keine Beschränkungen beim Zugriff auf spezifische Gerätehardware. Sie sind zum Beispiel dazu in der Lage, mit allen Sensoren direkt über die APIs des Systems zu interagieren. Das Deployment erfolgt über die App Stores. Dadurch, dass die App auf dem System installiert wird, ist grundsätzlich auch eine Offline-Nutzung möglich, sofern das sinnvoll ist. Eine Datensynchronisation kann beim Herstellen der nächsten Online-Verbindung automatisch stattfinden.

Dem gegenüber stehen Web-Apps – also spezielle Web-Anwendungen, die für die Nutzung auf mobilen Geräten besonders angepasst werden. Davon betroffen sind beispielsweise die Nutzerführung und die Gestaltung der Benutzeroberfläche. Der Zugriff auf die Systemhardware ist eingeschränkt. Einige Funktionen wie die Ortungsdienste sind jedoch nutzbar. Die Darstellung erfolgt im Browser und berücksichtigt damit die Besonderheiten der einzelnen Plattform nur bedingt.

Web-Apps können nicht über den App-Store bereitgestellt werden. Sie laufen auf einem Server und benötigen daher eine stetige Internetverbindung, damit man mit ihnen sinnvoll arbeiten kann. Web-Apps können dann eine Alternative sein, wenn man dem Nutzer eine Installation nicht zumuten kann, zum Beispiel wenn man die App sehr selten oder nur einmalig verwendet.

Einschränkungen, insbesondere die fehlende Offline-Fähigkeit, können durch neuere technologische Ansätze teilweise aufgehoben werden. Ein solcher Ansatz ist die Progressive Web App (PWA). Eine PWA ist gewissermaßen eine Symbiose aus einer Webseite und einer App. Über einen so genannten Service Worker erreicht man ein Caching und damit eine bestimmte Offline-Funktionsweise. Dieser Service Worker ist zwischen dem Webserver und der App auf dem mobilen Gerät geschaltet.

Hybride Apps sind technologisch zwischen Web-App und nativer App angeordnet. Sie laufen in einem Web-View-Container. Damit wirken sie für das Betriebssystem wie eine native App, auch wenn es sich im Kern weiterhin um eine Web-App handelt. Mittels moderner Frameworks kommt man auch bei der Gestaltung des User Interfaces (UI) den nativen Vorbildern recht nahe. Ein Vorteil von hybriden Apps ist, dass man diese ebenso über die App-Stores verteilen kann.

Technologien zur App-Entwicklung

Systematisierung der App-Entwicklungsansätze nach App-Arten.
Systematisierung der App-Entwicklungsansätze nach App-Arten.
(Bild: Krypczyk / Bochkor)

Aus den App-Arten leiten sich unmittelbar die verschiedenen Ansätze zur Entwicklung einer App ab. Sowohl Google für Android als auch Apple für iOS geben einen bevorzugten Weg zur Programmierung einer nativen App vor.

Native Android-Apps werden beispielsweise in Java entwickelt, als integrierte Entwicklungsumgebung (IDE) kommt Android Studio zum Einsatz. Alternativ kann man auch Kotlin als Programmiersprache verwenden. Das UI wird deklarativ mit Hilfe der Beschreibungssprache XML erstellt. Ein grafischer Designer innerhalb der IDE liefert Unterstützung. Bei dieser Vorgehensweise kann man die App bestmöglich an die gewünschte Hardware und Android-Version anpassen.

Um eine App für iOS zu programmieren, ist ein Apple Computer eine zwingende Voraussetzung. Es gibt innerhalb der Linux-Community zwar durchaus entsprechende Ambitionen, aber die sind bislang (noch) wenig komfortabel. Als Entwicklungsumgebung wird Xcode eingesetzt. Bei der Programmiersprache wird Swift als leichter zu handhabender Nachfolger für Objective C verwendet. Die Gestaltung des UI geschieht mit Hilfe von Storyboards im grafischen Designer von Xcode.

Auf reine Web-Apps gehen wir hier nicht gesondert ein, da es sich um speziell angepasste Web-Applikation für die mobilen Geräte handelt. Zum Einsatz kommen die bekannten Basistechnologien für die clientseitige Programmierung, d.h. HTML5 (Struktur), CSS3 (Design) und JavaScript (Logik). Unterstützend setzt man zusätzlich Frameworks und Bibliotheken für ein effektiveres Erstellen von UI und App-Logik ein.

Da hybride Apps im technologischen Kern ebenfalls auf Web-Technologien setzen, gelten hier die gleichen Aussagen zum technischen Aufbau von Design und Logik. Damit sich die App für das System wie eine native Entsprechung verhält, wird die Web-App in einem Container gepackt.

Für die Entwicklung stehen mehrere Frameworks zur Verfügung, zum Beispiel Cordova (PhoneGap), Appcelerator Titanium Mobile oder Sencha Touch. Das Prinzip ist bei allen drei Frameworks ähnlich. Die App öffnet beim Starten ein Browserfenster im Vollbildmodus, so dieser als solcher nicht identifizierbar ist. Die Web-Adresse kann nicht geändert werden. In dieser WebView wird die Web-App ausgeführt.

Das Framework seinerseits sorgt für einen möglichen Zugriff auf die Systemfunktionen, wie die Kamera oder das Adressbuch. Das geschieht mit Hilfe von Plug-Ins. Beim Erstellen der plattformspezifischen App-Pakete baut das Framework die App für die jeweilige Plattform automatisch zusammen.

Um die Vorzüge von nativen und hybriden Apps zu kombinieren, kristallisieren sich zunehmend so genannte plattformübergreifende Ansätze heraus. Sie werden im folgenden Abschnitt skizziert.

Plattformübergreifende Ansätze auf dem Vormarsch

Plattformübergreifende Ansätze verfolgen das Ziel, simultan eine native App für alle Zielsysteme zu erstellen. Damit soll insbesondere der umfassende Aufwand einer mehrfachen Entwicklung merklich reduziert werden. Es konkurrieren mehrere Ansätze, mit ihren spezifischen Vor- und Nachteilen. Dazu gehören: Xamarin, RAD Studio, NativeScript und React Native.

Xamarin bietet zwei Optionen, native Apps zu erstellen:

  • Im ersten Ansatz wird die Fachlogik der Anwendung übergreifend in C# erstellt. Das UI basiert auf dem jeweiligen System. Damit benötigt man für die Programmierung weiterhin umfassende Kenntnisse über alle Zielsysteme und man muss das UI jeweils individuell erstellen.
  • Der zweite Ansatz basiert auf der Verwendung von Xamarin.Forms, welches eine generische UI-Entwicklung für alle Systeme mit Hilfe eines XAML-Dialektes erlaubt. Dazu generiert Xamarin aus dem XAML-Code das jeweilige native Interface für das betreffende System automatisch. Die Grenze dieses Ansatzes liegt dort, wo die gewünschte Hardwareinteraktion zu tief ist und die Unterschiede im UI nicht durch den generischen Ansatz von Xamarin.Forms abgedeckt werden.

Native Script und React Nativ übertragen die Web-Technologien in die native App-Programmierung. Mit Hilfe von JavaScript-Widgets werden die UI-Elemente auf die Zielsysteme gerendert und letztendlich nativ abgebildet.

Bei der plattformübergreifenden Programmierung wird für mehrere Systeme simultan entwickelt. Hier eine Vorschaufunktion von RAD Studio.
Bei der plattformübergreifenden Programmierung wird für mehrere Systeme simultan entwickelt. Hier eine Vorschaufunktion von RAD Studio.
(Bild: Embarcadero)

Mit Hilfe der Entwicklungsumgebung RAD Studio können Apps für Android und iOS erstellt werden. Möglich macht es das plattformübergreifende Grafikframework FireMonkey. Der Vorteil besteht hier darin, dass das UI komplett im grafischen Designer mit Hilfe von Komponenten erstellt wird. Noch während der Entwicklung kann man das spätere Aussehen der Screens mit Hilfe einer Vorschaufunktion abschätzen.

Ebenso hilft die IDE dabei, die plattformspezifischen Konfigurationen komfortabel über Dialogfelder vorzunehmen. Mit wenigen Einstellungen kann man die Zielplattform wechseln und das jeweilige App-Package generieren lassen. Bei plattformübergreifender Entwicklung entsteht eine funktionsgleiche App für unterschiedliche Systeme.

Um sich mit der plattformübergreifenden App-Entwicklung auseinanderzusetzen, stehen die meisten Entwicklungswerkzeuge zum Testen oder für eine begrenzte kommerzielle Verwendung kostenfrei zur Verfügung. Beispielsweise kann man die Community Edition von RAD Studio herunterladen.

Fazit

Welchen Ansatz soll man nun wählen? Es kommt darauf an. Für einige Anwendungen dürfte eine Web-App genügen. Immer dann, wenn man mit den gebotenen Möglichkeiten zum Ziel kommt. Vielleicht kann man auch eine bereits existierende Web-Applikation für den mobilen Einsatz fit machen.

Hybride Techniken erlauben eine tiefere Systemintegration und das Deployment über die Stores. Mit hybriden Apps erreicht man aber nicht die Performance von nativen Apps. Diese sind technisch aus Sicht der Plattform stets die beste Lösung.

Die separate Programmierung für jedes System ist allerdings auch mit einem hohen Aufwand verbunden. Diesen Aufwand kann man bei der Verwendung von plattformübergreifenden Programmieransätzen deutlich reduzieren, zum Beispiel mit RAD Studio. Die eindeutigen Vorteile sind eine Reduktion der Entwicklungszeit, geringere notwendige Spezialkenntnisse über die unterstützten Zielsysteme und damit eine kürzere Time-to-Market. Diese ist oft entscheidend für den Erfolg einer App, welche oft bereits nach kurzer Entwicklungszeit zur Verfügung stehen muss.

* Dr. Veikko Krypczyk ist begeisterter Entwickler und Fachautor. Elena Bochkor arbeitet primär am Entwurf und Design mobiler Anwendungen und Webseiten. Weitere Informationen zu diesen und anderen Themen der IT unter Larinet.com.

(ID:46154945)