Verschiedene Arten der Mobile App Entwicklung

Nehmen wir an, du willst eine mobile App, die ganz deinen Wünschen entspricht, und und du kommst damit zu uns. Welche Möglichkeiten haben wir Entwickler jetzt eigentlich, dieses Projekt umzusetzen? Worauf kommt es an und worin liegt dann schlussendlich der Unterschied? Wer sich diese oder ähnliche Fragen schon einmal gestellt hat oder vor hat, eine mobile App in Auftrag zu geben, sollte diesen Blogeintrag nicht verpassen!

Mobile Applikationen – kurz Apps – kennt jeder und verwendet jeder, der ein Smartphone besitzt. Man kann sich vorstellen wie viele Apps jährlich entwickelt werden. Und da der Mensch nun einmal so ist, wird alles was großes Potential hat, bis ins letzte Detail verbessert und vereinfacht. So entstanden für die Appentwicklung mittlerweile auch die vier Übergriffe: native, cross-plattform/hybrid und Web-App, auf die ich im Folgenden kurz eingehen möchte.

Nativ

Native Appentwicklung heißt, dass man in einer Sprache programmiert bzw. eine API verwendet, die direkt vom Betriebssystem verstanden werden kann. Die wichtigstens Plattformen sind im Moment Android, iOS und WindowsPhone und verwenden folgende Sprachen:

● Java/Kotlin für Googles Android
● Objective-C und Swift für Apples iOS
● C#, C und C++ für Microsofts Windows

Cross – plattform / hybrid

Wie der Name schon vermuten lässt, handelt es sich hier um eine Art plattformübergreifende Lösung, welche großteils geteilten Code verwendet und versucht, die jeweiligen nativen Komponenten zu verwenden. Der Vorteil davon soll die Zeit- und Ressourcenersparnis sein, da man im Grunde nur eine App für mehrere Plattformen entwickeln muss. Das klingt zunächst sehr verlockend und man fragt sich warum man überhaupt noch zwei native Apps entwickelt, aber das Problem sind gewisse technische Eigenschaften, in denen man eingeschränkt ist. Mehr dazu aber etwas später. Hier sind die meiner Meinung nach bekanntesten und am meisten verwendeten Frameworks für hybride Appentwicklung:

● React Native mit JavaScript
● NativeScript mit Angular/TypeScript/JavaScript
● Xamarin mit Ruby/C#
● PhoneGab/Cordova mit JavaScript
● IONIC mit TypeScript/JavaScript

Diese Liste könnte unendlich so weitergehen, da es Frameworks wie Sand am Meer gibt. Im Grunde funktionieren alle gleich (gut), sprich sie erfüllen das, was sie versprechen. Allerdings haben sie auch alle die gleichen Einschränkungen.

Web-App

Mobile Web-Apps werden, wie es der Namen schon verrät, vom Webbrowser angezeigt und können somit von verschiedensten Plattformen genutzt werden – solange eben ein Webbrowser vorhanden ist. Diese Apps müssen nicht installiert werden und werden somit nicht in den App Stores angeboten. Der Vorteil davon ist wieder die einmalige Programmierung, jedoch ist der Unterschied im Gegensatz zu nativen Apps im Bezug auf die User experience so extrem spürbar, dass der Vorteil einer App eigentlich verloren geht. Eine mobile Ansicht einer Webseite hat somit fast den gleichen Effekt. Folgende Frameworks sind aber durchaus bekannt:

● Sencha
● JQuery Mobile

Perfekt ist also…?

Die vermeintlich perfekte Lösung gibt es leider nicht, auch wenn es Cross-Plattform Frameworkanbieter immer wieder groß anpreisen. Wenn man sehr spezielle Wünsche hat und einen wirklich nativen Look haben will, bleibt einem nichts anderes übrig, als für jede Plattform eine eigene App entwickeln zu lassen. Dies hat auch den Vorteil, dass man alle Hardwarekomponenten wie NFC oder Bluetooth ohne Plug-ins verwenden kann, was manchmal einfach unumgänglich ist. Bei sehr spezialisierten Apps, wie zum Beispiel Augmented Reality Apps, sind die bekannten cross-platform Frameworks eher nicht geeignet. (Obwohl wir dort sehr wohl auf teilweise cross-platform Entwicklung mit Unity setzen – dazu sei aber auf die Artikel von meinem Kollegen Phil verwiesen). Weiters gibt es offizielle Features von Apple und Google, was so viel bedeutet wie, “uns gefällt eure Idee und Umsetzung, deswegen kommt ihr auf die Titelseite im Store”. Features können wirklich sehr viele Downloads bringen und sind somit sehr beliebt. Diese Vorteile können aber nur in Betracht gezogen werden, wenn alle Guidelines von der jeweiligen Plattform beachtet wurden, was meiner Meinung nach nur nativ möglich ist.

Will man hingegen einfach auf mehreren Plattformen dieselbe App laufen haben, macht es durchaus Sinn eine hybride Appentwicklung in Betracht zu ziehen. Mittlerweile sind viele Frameworks sehr ausgereift. Viele Plug-ins ermöglichen es nahezu auf alle Software- / Hardwarekomponenten zuzugreifen. Ein kurzer Vergleich zwischen nativ und hybrid von MediaLabs zeigt folgendes:

native-vs-hybrid

Dann sind da eben noch die Web – Apps, die natürlich auch die gleiche Daseinsberechtigung haben wie die anderen zwei Varianten, gefühlt jedoch beim Verwenden einfach nicht mithalten können. Wie man in der Grafik unterhalb sieht, gibt es auch da noch einige Problemstellen an denen gearbeitet werden muss, bis man eine ernst zu nehmende Konkurrenz für native oder hybride Appentwicklung darstellt.

Pro und Kontra von Cross-Plattform

Da hybride Apps im Moment einen Aufschwung im Bekanntheits- und Beliebtheitsgrad haben, sind hier zusammenfassend nochmals die, meiner Ansicht nach, wichtigsten Vor- und Nachteile der beiden Entwicklungsarten gegenübergestellt, damit sich jeder sein eigenes Bild machen kann.

Pro

● potentiell schnellere Entwicklung
● kosteneffizienter
● einfacher zu warten
● meist keine plattformspezifischen Programmierkenntnisse nötig

Kontra

● Plattformlimitierungen
● schlechtere User Experience
● erschwerte Integration von speziellen Anforderungen wie Benachrichtigungen oder lokalen Einstellungen
● verbrauchen mehr Energie/Batterieleistung

Was sagt mir das Ganze jetzt?

Jetzt hast du dir den ganzen Artikel durchgelesen und weißt wieder nicht, was die beste, allgemeine Lösung ist. Genau das wollte ich damit erreichen – Juhu! Es gibt kein wirkliches Kochrezept für Softwareentwicklung, sondern nur Probleme, die gelöst werden müssen und das am besten so billig und effizient wie nur möglich. Viele dieser oben genannten Frameworks versprechen einem eine gefühlte native App zum halben Preis, Aufwand und vieles mehr. Welche Nachteile oder Probleme sie mitsichbringen, wird natürlich erwähnt.

Mein abschließender Tipp ist daher: betrachtet alle Lösungswege so neutral wie möglich und lasst den Entwicklungsaufwand zunächst außen vor. Eine Billiglösung, mit der man dann hinterher nicht zufrieden ist, bringt niemanden etwas. Und ebenso verhält es sich natürlich umgekehrt. Wenn man zwei gleiche Apps für Android und iOS will und keine besonderen Komponenten verlangt, sollte man sich über etwaige Hybridlösungen erkundigen und sie in Betracht ziehen. Für Apps, die viele Hardwarekomponenten benötigen und ein möglichst plattformtypisches Look & Feel haben sollten, kommen diese Lösungen aber eventuell nicht in Frage.

Lust auf mehr? Melde dich jetzt für unseren monatlichen Newsletter an!