Abkürzungen erwünscht

Wege zur App – nativ, hybrid oder fürs Web

| Autor / Redakteur: Dr. Veikko Krypczyk und Olena Bochkor * / Stephan Augsten

Systematisierung der App-Entwicklungsansätze nach dem App-Arten. (Bildausschnitt, komplette Grafik im Fließtext.)
Systematisierung der App-Entwicklungsansätze nach dem App-Arten. (Bildausschnitt, komplette Grafik im Fließtext.) (Bild: Krypczyk / Bochkor)

Um Apps für Android und iOS zu erstellen, gibt es mittlerweile sehr viele Ansätze. Eine Systematisierung ist hilfreich, um sich im technischen Dschungel zurechtzufinden. Ebenso entscheidend ist es, wie effektiv die jeweilige Vorgehensweise ist, denn die Time-To-Market ist oft entscheidend. Hier können plattformübergreifende Techniken punkten.

Spricht man von Apps, dann meint man in der Regel 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 länger orientieren, d.h. sie sind mit den üblichen Vorgängen, wie die Auswahl oder das Löschen von Elementen oder das Wechseln zwischen den Screens einer Anwendung sofort vertraut.

Native Apps haben auch keine Beschränkungen beim Zugriff auf spezifische Gerätehardware, d.h. zum Beispiel, dass man mit allen Sensoren direkt über die APIs des Systems interagieren kann. 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. Web-Apps sind spezielle Web-Applikationen, welche für die Nutzung auf den mobilen Geräten besonders angepasst werden, u.a. die Nutzerführung und die Gestaltung der Benutzeroberfläche. Der Zugriff auf die Systemhardware ist eingeschränkt. Einige Funktionen, wie die Ortung, sind jedoch nutzbar. Die Darstellung erfolgt im Browser und kann damit die Besonderheiten der einzelnen Plattform nur bedingt berücksichtigen.

Web-Apps können nicht über den App-Store bereitgestellt werden. Sie laufen auf dem 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änkung bei Web-Apps, 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; im Hintergrund handelt es sich jedoch um eine Web-App. 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 dem App-Arten.
Systematisierung der App-Entwicklungsansätze nach dem App-Arten. (Bild: Krypczyk / Bochkor)

Aus den App-Arten leiten sich unmittelbar die verschiedenen Ansätze zur Entwicklung einer App ab. Die vorangestellte Abbildung ordnet diese systematisch.

Sowohl Google für Android, als auch Apple für iOS geben einen bevorzugten Weg zur Programmierung einer nativen App vor. Demnach entwickelt man eine native App für Android in Java, als integrierte Entwicklungsumgebung (IDE) kommt Android Studio zum Einsatz. Alternativ kann man auch Kotlin als Programmiersprache verwenden. Das User Interface (UI) wird deklarativ mit Hilfe der Beschreibungssprache XML erstellt. Ein grafischer Designer 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. 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 muss hier nicht gesondert eingegangen werden, 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 des UI und der 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, also Cross-Platform-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)

Die IDE „RAD Studio“ eignet sich gleichermaßen dafür, Apps für Android und iOS zu erstellen. Möglich macht es das plattformübergreifende Grafik-Framework 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 des RAD Studios von Embarcadero 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. Jedoch bei separater Programmierung für jedes System 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. Olena Bochkor arbeitet am Entwurf und Design mobiler Anwendungen und Webseiten. Weitere Informationen zu diesen und anderen Themen der IT finden Sie unter LARInet.com.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 45844225 / Native Apps)