Die IT-Branche wandelt sich ständig und beeinflusst unsere Gesellschaft als maßgeblicher Arbeit- und Impulsgeber. In den letzten Jahren waren aus der IT-Branche folgende Aussagen zu hören:
- Websites sind im Trend
- Bots sind die neuen Apps
- Apps sind nicht mehr innovativ
In diesem Artikel wird untersucht, wie dieser Trend zustandekommt und welche Vor- und Nachteile sich daraus ergeben. Konkret behandeln wir die Thematik, welcher Applikationstyp – sei es eine Website oder eine klassische App – zu welchem Anwendungsszenario passt.
Ein paralleler Trend ist die plattformübergreifende Entwicklung von Apps, um finanzielle Mittel und Ressourcen einzusparen. Inwiefern sich dies mit den Entwicklungsschemata einer klassischen App in Einklang bringen lässt, diskutieren wir gegen Ende des Artikels.
Motivation und Relevanz
2,7 Millionen Apps befinden sich 2017 im Google Play Store. Weitere 2,2 Millionen Apps sind Teil des Apple App Store – dem entsprechenden Pendant von Apple. Die App-Landschaft wächst kontinuierlich und immer schneller:
Apple eröffnete seinen App Store erstmals im Jahre 2008 mit einer Anzahl von 500 zum Startpunkt verfügbaren Apps. Fünf Jahre später wurde die Marke von einer Million Apps überschritten. Seit 2014 sind mehr Apps von Google verfügbar als von Apple. Google startete mit seinem Play Store im gleichen Jahr (2008) wie Apple.
Vergleicht man die Anzahl der Apps der genannten App Stores mit der Annzahl der heuste bestehenden Websites im Internet, kommt man zu dem Schluss, dass auf eine App jedoch in etwa 200 Websites kommen. Mit mehr als 966 Millionen Websites ergibt sich ein deutlich größeres Potential in vielerlei Hinsicht. Des Weiteren haben diese ein nochmals deutlich höheres Wachstum als Apps; eine neue App begleiteten in den letzten 8 Jahren im Schnitt 348 neue Websites.
Inwiefern können App-Entwickler das Potential der Websites nutzen?
Applikationstypen
Einleitung
Um das Potential von Websites zu erkennen und Erkenntnisse daraus zu ziehen, werden wir uns zunächst die unterschiedlichen und bereits etablierten Formen an Applikationstypen anschauen:
- Website
- Hosted Web App
- Progressive Web App
- Hybrid App
- Native App
In den folgenden Absätzen untersuchen wir die unterschiedlichen Applikationstypen jeweils sowohl auf ihre Tauglichkeit als Ersatz von Websites als auch auf ihre Kompatibilität und Kombinierbarkeit mit Websites.
Websites
Websites basieren maßgeblich auf HTML, CSS und JavaScript und bilden in der Regel keine große Businesslogik ab. Der Vorteil ist, dass die Entwicklungskosten im Vergleich zu nativ ausführbaren Programmen gering sind. Nativ ausführbare Programme wären in beispielsweise c, C++ der C# programmierte Apps, die wir in aller Regel auch aus den App Stores kennen.
Websites werden im Internet Browser ausgeführt und benötigen daher keine Installation; hierdurch wird eine Plattformunabhängigkeit geschaffen, da alle gängigen Betriebssysteme einen Internet Browser mit sich bringen. Sie gelten als vergleichsweise sicher, da das Schließen von Sicherheitslücken und das Beheben von Fehlern zentral auf dem Server (auf dem die Homepage gespeichert ist) geschieht. Weder eine Installation noch die damit verbundenen Wartezeiten sind erforderlich, wie wir es von App-Updates in der Regel gewohnt sind.
Populäre Websites sind die G Suite von Google, Amazon, eBay, Office 365 sowie soziale Netzwerke. Dazu gehört folglich auch LinkedIn:
Hosted Web App
Hosted Web Apps fassen eine Website in einer App zusammen (Web-Wrapper). Beim Öffnen der App wird eine Internetverbindung benötigt, da die App lediglich die eigentliche Website (in einem eigenen Web Viewer) anzeigt. Für das Prozessieren von Daten ist somit nach wie vor die Website zuständig.
Ein populäres Beispiel ist LinkedIn: Im Zuge der 2016 stattfindenen Modernisierung der Weboberfläche stellte das Unternehmen eine neue UWP-App vor – eine Hosted Web App. Diese zeigt exakt denselben Inhalt bei gleichzeitig identischem Layout zu einer Website an, wie folgende Abbildung zeigt:
Durch eine starke Dynamik auf dem Markt von Smartphones (Windows Phones ausgenommen), Tablets und Notebooks ist es von hoher Wichtigkeit, eine Website flexibel zu gestalten. Man spricht von Responsive Webdesign. Die zunehmende Popularität von Hosted Web Apps liefert einen weiteren Grund, die Homepage auf allen Geräteklassen (besser) bedienbar zu gestalten.
Pogressive Web App
Progressive Web Apps kombinieren die Vorteile von Websites – also das Zusammenspiel von neuen Webtechnologien wie CSS3 und HTML5 – mit den Möglichkeiten und Funktionen – Bluetooth, Kamera, Microfon – des jeweiligen Betriebssystems und der jeweiligen Plattform. Diese neue Entwicklung ermöglicht das Ausführen von Websites ohne Internetverbindung (offline), indem wichtige Bestandteile der Websites auf dem Gerät zwischengespeichert (Offline-Caching) werden. Ziel ist es, mit Webtechnologien das „Look and Feel“ nativer Applikationen herzustellen. Eine Progressive Web App bietet von sich aus das Herunterladen an; üblicherweise passiert dies über eine Verknüpfung auf dem Startbildschirm.
Mit dem Fortschritt der Browsertechnologien HTML5 und CSS3 sowie JavaScript-Frameworks sind Progressive Web Apps in den letzten Jahren sehr populär geworden. Insbesondere Google invesiert stark in die Weiterentwicklung; Es sind noch nicht alle Standards definiert und nicht alle Plattformen bringen die notwendige Unterstützung mit sich. Der Zugriff auf Technologien wie NFC und Bluetooth sowie Schnittstellen zum Kalender und zu den Kontakten (je nach Plattform) fehlen noch weitgehend.
Microsoft invesiert ebenso (wie Google) in die Weiterentwicklung dieser Technologie, da (bekanntermaßen) der Microsoft Store nicht genügend Apps beinhaltet und Progressive Web Apps plattformunabhängig lauffähig sind. Mit dem kommenden Redstone 4-Update wird auch Windows die volle Unterstützung mitbringen.
Appe unterstützt Progressive Web Apps bisher nur in einem sehr geringen Umfang. Dies ist dadurch zu erklären, dass Apple finanzielle Einbußen befürchtet: Wenn die Apps nicht mehr über den gewinnbringenden App Store verkauft werden, erhält der Konzern keine finanzielle Beteiligung mehr und kann zudem keine Statistiken über Nutzung und Installationen sammeln.
Ein prominentes und von Google hervorgehobenes Beispiel einer Progressive Web App ist Twitter Lite: Statt 23,5 Megabyte (Google Play Store) ist die Progressive Web App lediglich 600 Kilobyte groß. Gleichzeitig kann diese (durch besagte Schnittstellen) auch Benachrichtigungen schicken, obwohl sie geschlossen ist.
Hybrid App
Bei Hybrid Apps wird ein ähnliches Konzept wie bei Progressive Web Apps verfolgt: Auch hier werden Webtechnologien mit den Funktionalitäten der unterschiedlichen Plattformen kombiniert. Hybrid Apps unterscheiden sich jedoch dadurch, dass sie in einem nativ für die jeweilige Plattform designten Container laufen, der Bestandteil einer jeden solchen App ist. Dieser Conainer ermöglicht es, Webtechnologien auf dem Gerät nativ auszuführen. Durch den Container wird eine native Verbindung zur jeweiligen Plattform geschaffen, sodass – je nach Entwicklungsgrad – eine hardwarenähere Entwicklung mitsamt dem Einsatz der plattformspezifischen Funktionen möglich ist. Progressive Web Apps werden dagegen im Web Browser ausgeführt. Dieser besteht zwar ebenso aus einem Container, um Webinhalte anzuzeigen. Der eigentliche Code (der Website) beinhaltet diesen Container jedoch nicht direkt. Daher gibt es – je nach Internet Browser -Unterschiede bei der Unterstützung von plattformspezifischen Funktionen, da diese ja über den Internet Browser bereitgestellt werden müssen.
Ein weiteres Unterscheidungsmerkmal betrifft die Offline-Fähigkeit von Hybrid Apps: Der gesamte Code ist nicht zentral in Form einer Website verfügbar, sondern ist integraler Bestandteil der App. Dadurch ist es – im Gegensatz zu Progressive Web Apps – auch möglich, diese Apps in den verschiedenen App Stores zu vertreiben.
Das bekannteste Framework PhoneGap wird von Adobe entwickelt und bietet eben diese Möglichkeiten. Ebenso bietet Drifty Co mit Ionic ein populäres Framework an, das auf dem Angular-Framework basiert. Angular ist ein Framework, um Fontends (Oberflächen) zu designen. Hierzu wird die Programmiersprache TypeScript (ähnlich zu JavaScript) verwendet. Um den nativen Code für iOS-, Android und Windows-Plattformen zur Verfügung zu stellen, basieren beide Frameworks auf Apache Cordova.
Native App
Native Apps werden speziell für ein Betriebssystem programmiert und laufen ausschließlich auf diesem. Dadurch ist sichergestellt, dass die Hardware optimal und einheitlich über vorgegebene Schnittstellen angesprochen wird und die Ressourcen optimal genutzt werden. Alle (öffentlichen) Schnittstellen der jeweiligen Platt form können genutzt werden – seien es Zugriffe auf Datenspeicher, Kamerafunktionen oder Bluetooth. Dies stellt den größten Vorteil von Native Apps dar.
Je nach Betriebssystem werden unterschiedliche Programmiersprachen unterstützt; üblicherweise werden Native Apps in C#, C++, Objective-C, Swift oder Java programmiert. Es handelt sich hierbei um höhere Programmiersprachen. Zweck dieser Sprachen ist es, eine möglichst große Unabhängigkeit von einer bestimmten Rechneranlage zu gewährleisten. Der Entwickler benötigt keine Fachkenntnisse über die einzelnen Hardwarekomponenten der verschiedenen Geräte, auf denen die App lauffähig sein soll. Vielmehr stellt die Programmiersprache dem Entwickler umfangreiche Funktionalitäten und Operationen bereit, die verwendet werden können. Die Aufsplittung in einzelne Bestandteile wird durch die Programmiersprache übernommen.
Es ist ein Trugschluss, dass das Programmieren in einer höheren Programmiersprache weniger anspruchsvoll ist: Einerseits wird das objektorientierte Programmieren angewendet, das eine radikale Neuausrichtung des Programmierstils mit sich bringt. Andererseits ist es für die Entwickler obligatorisch und notwendig, die umfangreichen Funktionalitäten zu verstehen, damit diese korrekt implementiert werden. Dadurch lässt sich festhalten, dass das Erstellen von Native Apps generell kostspieliger als das Erstellen von Websites ist.
Für die Vermarktung über App Stores sind Native Apps prädestiniert. Schließlich werden diese plattformspezifisch programmiert.
Entscheidungsfindung
Entwicklern steht eine Vielzahl unterschiedlicher Möglichkeiten an App-Konzepten zur Verfügung. Sie rechen von einer reinen Web-Implementation der Inhalte in Form einer Website bis hin zu einer spezifisch und nativ für die Plattform erstellten App. Im Folgenden listen wir anhand der zwei Extreme (Webtechnologie versus native App) die Vorteile und Nachteile bezogen auf die Einsatztauglichkeit auf.
Webtechnologien sollten dann Verwendung finden, wenn die geplante App folgende Bestandteile beinhaltet:
- Fragebögen und Formulare
- Broschüren, Restaurant-Menüs
- statische Websites (nicht zu aufwändige 3D-Animationen und Effekte)
- Darstellung einfacher Inhalte
- Prototypen oder Proof of Concept
Native Apps sind geeigneter, wenn folgende Kriterien zutreffen:
- 3D-Spiele
- Applikationen mit vielen Animationen und Medien
- große Menge an Daten
- viel Verarbeitung/Aufbereitung an Daten
- Abdeckung aller Schnittstellen
Der anfangs diskutierte Trend in Richtung Websites und Webtechnologien hat bewirkt, dass auch für diesen Bereich neue Technologien geschaffen werden. Diese sollen Nachteile verringern: Gerade im Gaming-Bereich haben sich neue Schnittstellen etabliert: So können über beispielsweise WebGL 3D-Objekte in JavaScript in Verbindung mit HTML5 dargestellt werden.
Plattformübergreifende Entwicklungstools
Einem Nachteil der Native Apps, den hohen Entwicklungskosten, möchten sich plattformübergreifende Entwicklungstools annehmen. Das dahinter stehende Konzept unter dem Motto „Write Once, Run Everywhere“ der One App To Catch ‚Em All lässt sich wie folgt zusammenfassen:
- Die Entwicklung einer App findet nur in einer Programmiersprache statt.
- Beim Kompilieren (Übersetzen) der App wird der Quellcode in die maschinenlesbare Zielsprache der jeweiligen Plattform übersetzt.
Durch dieses sehr abstrakt dargestellte Konzept steht am Ende des Entwicklungsprozesses eine Native App, die nahezu ebenso performant wie das Original ist und zusätzlich alle weiteren Vorteile mit sich bringt.
Folgende Abbildung zeigt den Ansatz des für dieses konzept bekannte Entwicklungstools Xamarin:
Mit Xamarin kann in C# (Backend) und XAML (Frontend) ein plattformübergreifende App entwickelt werden. Dabei teilen sich iOS (links), Android (mittig) und Windows (rechts) denselben Code für das Backend und das User Interface, also das Frontned. Nur ein kleiner Teil des plattformspezifischen Codes muss in der jeweiligen Sprache des Zielsystems geschrieben werden.
Zusammenfassung
Das Vorhaben der Erstellung einer App geht mit obligatorischen Vorüberlegungen einher, die weit über den eigentlichen Inhalt hinausgehen sollten:
- Wer ist die Zielgruppe?
- Welche Plattformen sollen bedient werden?
- Ist eine Weboberfläche gewünscht?
- Ist eine Vielzahl an Daten oder Animationen Teil der App?
Je nach Anforderung lässt sich ableiten, welcher Applikationstyp passend ist. Eine allgemeingültige Aussage, welcher Applikationstyp passend ist, kann somit trotz Hilfestellungen nicht getroffen werden.
Folgende Tabelle zeigt die Abgrenzungen auf, um eine (grobe) Hilfestellung (basierend auf den zwei Extremen) zu bietet:
Gleichzeitig sind die Möglichkeiten der plattformübergreifenden Entwicklung in Betracht zu ziehen. So könne nicht nur Entwicklungskosten eingespart, sondern auch Native Apps mit geringen Kenntnissen der jeweils einzelnen Programmiersprachen der Zielplattformen erstellt werden.
(Bild-)Quellen: Jmgomez, 1&1 Internat (1), 1&1 Internet (2), Adobe, App Entwickler Verzeichnis, Flyacts, Microsoft (1), Drifty, Google, InternetLiveStats, t3n (1), t3n (2), JScrambler, galier-net, TechAdvisor, Clear and Agile, NetMarketShare, MasterOfCode, Uni Wuppertal, Ryte, SaintsAtPlay, Namics, Hostingfacts, Symantec, Apache, Khronos, aikcupchai