Lange Zeit gab es nur die Möglichkeit direkt für Android (mit Java) oder für iOS (mit Objective-C) zu entwickeln. Man sprach oder spricht hier von der Nativen App Entwicklung.
Mit der Cross Plattform und der Hybride App Entwicklung haben sich jedoch neue Möglichkeiten eröffnet. Was ist jedoch der Unterschied dieser Methoden/ Ansätze? Im Beitrag mehr dazu.
Native App Entwicklung
Das ist immer noch der beste Weg der Mobile App Programmierung. Hier werden für die jeweiligen Betriebssysteme, Android und iOS, separate Anwendungen programmiert.
Der Code für beide Nativen Systeme ist komplett unterschiedlich. Dass heisst, Java Code für das Google Betriebssystem und Objective-C Code für das Apple Betriebssystem.
Die Herausforderung hierbei ist jedoch, dass es zwei Programmierteams braucht. Einmal für das Google System und eines für das Apple System. Oder zumindest zwei Programmierer. Denn der eine kann meistens nicht beides. Da die Fähigkeiten so speziell für das jeweilige Betriebssystem sind.
Dass heisst wiederum, dass die Kosten doppelt so hoch sind, als wenn man das Ganze nur einmal schreiben würde.
Die Wartung der beiden Codebasen und das Testing ist dann nochmal ein Thema für sich.
Der grosse Vorteil ist jedoch die Performance. Ohne ruckeln, ohne warten auf das Laden. Die Nutzererfahrung (User Experience, UX) ist optimal. Auch die Benutzeroberflächen (User Interfaces, UI) werden genau dargestellt.
Werkzeuge
- iOS: xCode, App Code, Atom
- Android: Android Studio, Android IDE, Intellij IDEA
Beispiele:
- Youtube
- Uber
Hybride App Entwicklung
Nicht jede App muss Native entwickelt werden. Besonders wenn das sogenannte “Time to Market” wichtig ist, d.h. die Applikation soll schnell auf den Markt gebracht werden.
Bei der Hybriden Entwicklung (kurz HY) reduzieren sich die Erstellungskosten, da der Code nur einmal geschrieben wird.
Auf der einen Seite hat man die Vorteile (schnell geocoded, schneller entwickelt), jedoch hat man auf der anderen Seite die eigentlich typischen Herausforderungen solcher Programme: sie sind meistens von der Nutzererfahrung (User Experience) und von der Optik nicht optimal. Im Grunde genommen heisst das in der Praxis, das solche Software meistens langsam lädt und auch nicht auf allen mobilen Endgeräten (Smartphones, Tablets, etc.) richtig dargestellt werden.
Der Begriff “Hybrid” kommt daher, da zum einen Web-Elemente genutzt werden und diese mit Nativen Elementen vermischt werden. Die Code Basis wird mit Standard Webtechnologien wie HTML, CSS und JavaScript geschrieben. Dann wird das Ganze in einen Nativen Container (ein Behälter für den Code, den man dann auf dem Smartphone wiedergeben kann) gepackt – auch WebView genannt. Innerhalb dieser WebView wird eine ganz normale Website wiedergegeben. Es unterstützt bei der Wiedergabe der UX und auch um auf die Hardwarefunktionalitäten (Kamera, GPS, etc.) zuzugreifen.
Das Besondere ist jedoch auch: Die Möglichkeiten des Zugriffs auf Hardwarefunktionalitäten des jeweiligen Smartphone Gerätes sind in der Hybriden App eher limitiert, wenn man es mit der Nativen App Entwicklung vergleicht. Besonders Dinge wie die CPU werden oftmals nicht gut angewendet in solchen Programmen.
Es ist auch möglich diese Hybriden Programme in den verschiedenen App Stores anzubieten.
Werkzeuge:
- Ionic
- PhoneGap
- Visual Studio
Beispiele
- Logitech Squeezbox Controller
- BrowserQuest
- FanReact
Cross Plattform Entwicklung
Auch wenn man es nicht auf Anhieb vermutet: Cross Plattform Entwicklung ist nicht das Gleiche wie Hybride Anwendungsentwicklung.
Cross Plattform (kurz CP) werden unter anderem mit Xamarin (basierend auf C#), React Native (JavaScript) und Flutter (Dart Programmiersprache) programmiert.
Man muss also bei dieser Form der Programmierung eine neue Programmiersprache erlernen (C# oder Dart, etc.).
Der Unterschied liegt auch darin, dass CP nicht wie die Hybride App Entwicklung auf die Vermischung von Web-Elementen und Hybriden Elementen setzt.
CP setzt auf eine Native Rendering Engine (im Gegensatz zu HY).
Die Codebasis greift über sogenannte “Bridges” auf Native Komponenten zu. Das führt dazu, dass die UX nahezu einer Nativen Performance ähnelt.
Aber auch hier, wie bei HY, ist die Gesamtperformance geringer und auch die insgesamte UX hinkt ein wenig hinterher. Etwas was dem Nutzer auffallen kann.
Werkzeuge
- React Native
- Xamarin
- Flutter
Beispiele:
- Facebook Ads
- Bloomberg
- SoundCloud Pulse
Information: All diese Beispiele zeigen jedoch auch, es geht oftmals eher um “Hintergrund” Anwendungen wie das Verwalten von Daten, das Erstellen von Werbekampagnen, das Management von Nutzeraccounts, und weniger um die Frontend Software selbst. Hier werden dann oftmals Native Apps verwendet (zum Beispiel gibt es für Facebook und SoundCloud, Native Programme basierend auf iOS und Android).
Kurzes Zwischenfazit
Es kommt auf die Anforderungen an. In manchen Fällen hat man ein geringes Budget und wenig Zeit. Dann kann man sehr gerne auf eine Quick und Dirty Lösung setzen, mit der man an die ersten Nutzer herantritt.
Falls die Anwendung zum Erfolg wird, kann man immer noch auf eine Native Programmierung umsatteln. Da es zu diesem Zeitpunkt höchstwahrscheinlich bessere Budgets und Zeitrahmen gibt.
Zudem muss man sagen, dass Google, welches Flutter bereitstellt und Facebook, welches React Native herausgebracht haben, selbst nicht auf diese Softwareansätze bei ihren eigenen Hauptanwendungen setzt. Sondern hier auch “ganz normale” Native Apps programmiert hat.
Nur bei, den bereits erwähnten Background Lösungen, wie Nutzer-Accounts-Management und ähnliche werden die Hybriden oder Cross Plattform Ansätze verwendet. Jedoch sind die Nutzer meistens auch nicht wirklich positiv darüber gestimmt, da es die angesprochenen Performance Herausforderungen gibt.
Progressive Web App
Zu den ganzen Ansätzen kommen auch die Progressive Web Apps, kurz PWA’s. Hierbei handelt es sich wie beim HY Ansatz, um Anwendungen, welche mit Webtechnologien geschrieben werden.
PWA’s werden über den Browser aufgerufen. Man kann auch ein App Icon auf dem Homescreen haben, um diese Programmierungen aufzurufen. Man muss diese jedoch nicht auf dem Smartphone installieren.
Der Vorteil gegenüber einer Responsive Website (mobile angepasste Website) ist jedoch, dass diese auf Smartphone Funktionalitäten wie GPS oder Push Notifications zugreifen kann.
PWA’s lassen sich noch schneller entwickeln als die Hybriden oder Cross Mobile Ansätze.
Zudem lassen sich auch viele Webentwickler finden, welche sich darin schneller einarbeiten können.
Besonders im Bereich eCommerce kommt dieser Ansatz in Frage.
Werkzeuge
- React
- Angular
Beispiele:
- Flipkart
- Forbes
- AliExpress
Vergleichstabelle
App Typ | Native | Hybrid | Cross Plattform |
---|---|---|---|
Werkzeuge | 1) xCode 2) AppCode 3) Android Studio | 1) Ionic 2) Apache Cordova 3) Visual Studio | 1) React Native 2) Xamarin 3) Flutter |
Rendering Engine | Native | Browser | Native |
Entwicklungszeit | Lang | Kurz | Mittel |
Codebasis | Separate Codebasis pro Plattform | Eine Codebasis, mit jeweiligen Plattform-spezifischen Fähigkeiten | Eine Codebasis, mit jeweiligen Plattform-spezifischen Fähigkeiten |
Vorteile | 1) Vollständiger Zugang zum Betriebssystem 2) Starke Performance 3) Native UI | 1) Kurze Entwicklungszeit 2) Code Wiederverwendbarkeit 3) Kostengünstig | 1) User Interface fast so flüssig wie bei Native 2) Code Wiederverwendbarkeit 3) Kostengünstig |
Nachteile | 1) Es muss jeweils immer von neuem entwickelt werden 2) Hohe Kosten 3) Code kann nicht wiederverwendet werden | 1) Schlechtere Performance 2) Limitierter Zugang zum Betriebssystem 3) Hoher Aufwand um Native Funktionalitäten zu erlangen | 1) Schlechtere Performance 2) Limitierter Zugang zum Betriebssystem 3) Hoher Aufwand um Native Funktionalitäten zu erlangen 4) Für Mobile Entwickler ungewohnte Programmiersprachen (C#, Dart, etc.) |
Entscheidungskriterien
Es gibt unterschiedliche Kriterien, nach welchen man sich für eines der Ansätze entscheiden sollte. Hier die wichtigsten:
Entwicklungszeit
Ein Startup möchte relativ schnell ein erstes Resultat sehen und dieses den Nutzern und Investoren präsentieren. Für eine kurze Entwicklungszeit lohnt sich daher ein Ansatz wie Hybrid oder Cross Plattform. Besonders HY ist schnell programmiert und gelauncht. Bei CP kann es länger dauern.
Ein Unternehmen, dass seinen Hauptumsatz über seine Website macht, und jetzt eine Mobile App für die Anwender bereitstellen will, hat meistens einen langfristigen Plan und hat mehr Zeit. Es ist besser sich mehr Zeit zu lassen und dafür den bestehenden Nutzern eine grossartige User Experience zu bieten. All das spricht für eine Native App.
Auch für KMU kann sich der Native Ansatz lohnen, denn auch hier werden oftmals Bestandskunden bedient.
Budget
Startups haben ein relativ geringes Budget, möchten jedoch die maximale Anzahl an Nutzern erreichen. Jedoch sind diese User oftmals über unterschiedlichste Plattformen verstreut. Auch hier kann man mit weniger Geld, über den HY oder CP Weg mehr Nutzer erreichen.
Konzerne und KMU haben hier weniger Schwierigkeiten und daher lohnt sich fast immer eine Native Programmierung. Jedoch verwenden IT Abteilungen gerne auch Softwareentwicklungen basierend auf Xamarin, da es sich gut in die bestehende .NET (C#) Landschaft einfügt. Auch spart man sich damit natürlich die unterschiedlichen Entwicklungsteams, da das Thema Kosteneinsparungen auch für IT Abteilungen und Unternehmen im Allgemeinen ein Thema wird. Zudem ergeben sich Synergien, da oftmals bereits Inhouse .NET (C#) Teams bestehen, die sich einfacher in Xamarin einarbeiten können.
Performance
Heutige App Nutzer sind verwöhnt. Man nutzt die Facebook Android App oder die Youtube iOS App und sieht schnelle Performance und eine Reibungslose Nutzung. Die Liste von gut anwendbaren Softwarelösungen ist lang.
Anwendungen welche also von B2C (Business to Customer) oder C2C (Customer to Customer/ Social Media) genutzt werden, sollten fast immer Native programmiert werden, denn die Nutzererfahrung (UX) wird somit am höchsten sein.
Im B2B Bereich, also Geschäftskundennutzer oder Programme, die Mitarbeiter verwenden (zum Beispiel um Urlaub zu beantragen, Kundendaten einzutragen, etc.) werden höchstwahrscheinlich auch mit simpleren Softwarelösungen zufrieden sein. Hier bietet sich eine Hybride App Entwicklung oder der Cross Plattform Ansatz an.
User Interface Design/ User Experience
Siehe Performance
Funktionalitäten/ Anforderungen
In vielen Anwendungen braucht es nicht unbedingt den Zugang zu Gerätehardware wie Speicher, CPU, Gyroskop (Kreiselmesser für die Bestimmung der Lage), GPS, Accelerometer (Geschwindigkeitsmesser), etc.
Manche Lösungen kommen mit einem einfachen Zugriff auf die GPS Daten und einer genauen Touch Funktionalität aus.
Hier muss man im Genauen eruieren, was die Anwendung alles können muss. Dies gleicht man dann mit den unterschiedlichen Möglichkeiten der HY und CP Technologien ab und wählt die entsprechende aus. Zum Beispiel PhoneGap oder Flutter.
Schwierig wird es natürlich wenn sich die Anforderung später ändert und man auch andere Funktionalitäten benötigt, die von der angewandten Technologie nicht unterstützt werden. In diesem Fall müsste man dann eventuell alles in einer anderen, den neuen Anforderungen entsprechenden, Technologie programmieren.
Wenn man jedoch bereits von Anfang an weiss, dass sich die Anforderungen während der Erstellung und auch später stark ändern werden, dann sollte man auf eine separate Programmierung pro Plattform setzen.
Wie entscheiden Sie sich?
Native App
Die Native App Entwicklung ist immer noch der König in der Programmierung von Mobilen Anwendungen.
Gehen Sie jedoch von einer langen Zeit für die Erstellung aus, als auch von grösseren Entwicklungsteams (mindestens doppelt so gross wie üblich), um auch mehrere Plattformen (iOS, Android, etc.) abdecken zu können.
Hybride App
Schnell entwickelt und auch noch sehr günstig. Das ist für viele immer noch der angenehmste Weg.
Gehen Sie jedoch von einer ruckeligen User Experience aus und auch dass es höchstwahrscheinlich viele Einschränkungen geben wird, was das Thema Nutzung von Hardware-Ressourcen angeht.
Cross Plattform App
Das ist der goldene Mittelweg. Es ist nicht so günstig wie Hybrid, man kann jedoch mehr Native UI Elemente und eine relativ höhere Performance erreichen.
Zudem braucht man auch weniger Entwickler. Da der eine Programmierer einen grossen Teil der Erstellung übernehmen kann. Falls es Technologien wie React Native oder PhoneGap sind, können sogar auch die Webanwendungen von diesem einen Experten umgesetzt werden.
Es muss jedoch auch folgendes gesagt sein: In manchen Fällen dauert die CP Programmierung fast so lange wie eine Native Programmierung. Da man zum Teil viel Zeit in die Erzeugung der jeweiligen Plattform spezifischen UI Komponenten investiert.
Welche Erfahrungen haben Sie gemacht?
Bilder: Canva
Interessante Links:
Ein Vergleich der verschieden Möglichkeiten der App Entwicklung
Unterschiede Native, Hybride, Web App
Der Autor: Sascha Thattil arbeitet bei YUHIRO und hilft Unternehmern und Unternehmen beim einfachen Aufbau von Programmier-Teams in Indien. YUHIRO ist ein deutsch-indisches Unternehmen welches IT Firmen, Agenturen und IT Abteilungen Softwareentwickler bereitstellt.
Schreibe einen Kommentar