Cross platform mobile App development frameworks

Als Semesterarbeit habe ich mich mit dem Vergleich von multiplattform Frameworks für mobile Betriebssysteme beschäftigt. Das Ergebnis möchte ich der Öffentlichkeit nicht vorenthalten. Es dürfte mit Sicherheit für den ein oder anderen Hilfreich sein einen aktuellen Überblick über „Cross platform mobile development frameworks“ zu bekommen.

Es existieren mehrere Anbieter für mobile Betriebssysteme. Platzhirsch ist Google mit Android und einem Marktanteil von 75,7%, gefolgt von Apple mit iOS (15,3%). Darauf folgen Microsoft mit Windows Phone (7,5%) und BlackBarry mit BlackBarryOS (0,7%). Um alle Plattformen zu bedienen müssen für eine App mindestens vier verschiedene, auf die jeweiligen Betriebssysteme zugeschnittene, Versionen erstellt werden. Das bedeutet einen höheren Aufwand und dadurch mehr Kosten. Um diesem Problem entgegen zu gehen haben sich mehrere Anbieter von Multiplattform Frameworks am Markt etabliert. Dieses Paper erfasst die wichtigsten und vergleicht die Features untereinander.

Plattformen

Im Großen und Ganzen lassen sich die Multiplattform Framworks in zwei Lager teilen. Zum einen gibt es Frameworks, die sich die Portabilität von Webtechnologien zu Nutze machen. Das heißt es wird auf Flash, HTML 5, JavaScript oder CSS gesetzt, um eine nativ wirkende App zu entwickeln. Diese Framworks bieten oft nur eingeschränkten Zugriff auf hardwarenahe Funktionen des Mobilgerätes. Auf der anderen Seite werden in einer definierten Programmiersprache native Programme geschrieben. Hierbei kommt z.B. C++ oder C# zum Einsatz. Programme werden so sehr viel näher am Gerät programmiert. Über Warpper oder ähnliche Technologien gerätespezifische Funktionen erreichbar. Wie weit die Unterstützung geht hängt vom Funktionsumfang des gewählten Frameworks ab.
Abgesehen von der Unterscheidung, auf Grund der eingesetzten Technologie, kann auch anhand des Geschäftsmodells differenziert werden. So gibt es Open Source Lösungen die keine Kosten verursachen, Lösungen die eine Basisversion frei zur Verfügung stellen und sich über Addons finanzieren. Außerdem gibt es Komplettpakete auf Abobasis in der ein Framework für einen jährlichen oder monatlichen Beitrag bereit gestellt wird.

Frameworks

Im Folgenden sollen einige aktuell populäre Multiplattform Frameworks vorgestellt werden. Abbildung 1 zeigt die Relevanz der jeweiligen Plattformen auf. Tabelle 1 stellt außerdem alle Frameworks mit ihren Schlüsselfunktionen gegenüber.

uebersicht

PhoneGap

PhoneGap baut auf Apache Cordova auf und ermöglicht es, Anwendungssoftware für mobile Endgeräte mit JavaScript, HTML5 und CSS, anstelle von gerätespezifischen Programmiersprachen wie Objective-C oder Java, zu schreiben. Die dabei entstehenden Programme sind hybride Applikationen. Sie sind weder native Programme, weil das Layout mittels Webtechnologien und nicht mit nativen User Interface Frameworks erstellt wird, noch sind sie webbasierte Applikationen, da sie als Apps über die Verkaufsportale der Betriebssystemhersteller verteilt werden und auf die Programmierschnittstellen der Betriebssysteme der Endgeräte zugreifen können. PhoneGap bietet auf vielen Plattformen Unterstützung für Komponenten wie Beschleunigungssensor, Kamera, Kompass, Kontakte, Lokaler Speicher, Geolocation, Medien, Netzwerk und Benachrichtigungen.[wikPhoneGap]

Monkey-X

Monkey ist eine Programmiersprache deren Ziel es ist die Programmierung auf möglichst vielen Plattformen zu vereinheitlichen. Monkey-X ist das dazugehörige Framework auf dem Support, eine IDE und Tools bereit gestellt werden. Die Programmiersprache selbst orientiert sich an BASIC, wobei Aspekte der Objektorientierung enthalten sind. Der Monkey-Compiler kompiliert den Monkey-Quellcode in eine andere Programmiersprache. Der erzeugte Code wird dann weiter in den Maschinencode der jeweiligen Plattform kompiliert und ausgeführt.[wikiMonkyX] Monkey bietet Module für Grafik, Audio, Input ( Joystick, Touch, Maus ), lokalen Speicher und Netzwerk Verkehr. Die Sprache ist eher auf Spiele als auf Apps ausgelegt und biete nur wenige Abfragemöglichkeiten für Sensoren. [MonkyXModule]

MoSync

MoSync ist einen Open Source SDK, welches C/C++, HTML5 und JavaScript zum Erstellen von nativen Programmen nutzt. Das Framework ist seit 2005 verfügbar und bietet Support für BlackBerry, Moblin, Windows Phone, Windows Mobile, iOS, Android, MeeGo und SymbianOS. Es richtet sich an Entwickler, die von OSX oder Windows kommen und C/C++ nutzen wollen oder an solche, die aus der Welt der Webentwicklung kommen und HTML5/JavaScript beherrschen.[wikMoSync] MoSync bringt Module für Audio, Bluetooth, Werbung, Batterieüberwachung, Kamera, Video, Netzwerk, GPS, Maps, NFC, Beschleunigungssensor, Kompass und einige weitere Funktionen mit. Nicht alle werden auf allen Plattformen unterstützt. Eine Vollständige Liste hierzu findet sich hinter der Quelle.[MoSyncFeature]

Appcelerator – Titanium Mobile

Das durch Appcelerator entwickelte Titanium ist ein SDK zur Entwicklung von Apps auf Basis von JavaScript und XML/CSS. Unterstützt wird iOS, BlackBerry, Android und Tizen. Titanium ist Open Source und kann frei genutzt werden. Benötigt man mehr als die integrierten Funktionen, können diese über einen Marketplace gekauft werden. Grundsätzlich ist es möglich, die angebotenen Module auch selbst zu implementieren. Nativ können Funktionen wie Dateisystem, Netzwerk, Geolokalisation und Beschleunigungssensor angesprochen werden.[Titanium]

Xamarin (Mono)

Mono ist eine Open Source Software, die durch Xamarin entwickelt wird. Das Framework ist zu .NET kompatibel und nutzt die Programmiersprache C#. Mit Xamarin.iOS und Xamarin.Android wurden zwei unter kommerzieller Lizenz stehende Implementierungen für iOS und Android vorgestellt. Im Fall von iOS wird aus dem Monocode nativer iOS Code erzeugt. Für Android steht eine Mono Laufzeitumgebung bereit. Da C# als native Programmiersprache für Windows Phone genutzt wird, ist hier ebenfalls eine Nutzung möglich. In der Xamarin C# Umgebung kann auf alle nativen APIs der jeweiligen Plattformen zugegriffen werden. Somit ist das Funktionsniveau nahezu auf gleicher Höhe wie bei der nativen Programmierung der jeweiligen Plattform.[XamarinWeb] Eine Lizenz kostet aktuell 200$ für Studenten, 300$ für Interdependent, 999$ für Business und 1899$ für Enterprise im Jahr.

FireMonkey

FireMonkey (FMX) ist eine von Embarcadero Technologies erstellte Software-Komponentenbibliothek zum vereinfachten Entwickeln plattformunabhängiger Anwendungen für Windows, Mac OS X, Android und iOS. Die Entwicklungsumgebung setzte auf C++ sowie Object Pascal und ist auf Business Applikationen ausgelegt. Es kann auf Plattform-APIs zugegriffen werden um Sensoren einzubinden. Die komplette Lösung zur Anwendungsentwicklung kostet in der Einzellizenz ca. 5000€.[FireMonkeyWeb]

RhoMobile

RhoMobile ist ein auf Ruby basierendes Framework zur Erstellung von mobilen Apps. Es ermöglicht native Programme für Windows Phone, Symbian, Android, iOS und BlackBerry. Es werden viele APIs, wie z.B. Bluetooth, NFC und RFID, unterstützt. RohMobile basiert auf Open Source. Kosten entstehen nur für Zusatzservices wie Cloud, den Visualstudio Plugin, Push Nachrichten und Support.[RohMobileWeb]

Qt

Das Qt Framework ist ein Multi-Plattform-Entwicklungswerkzeug, welches Anwendungen in der Qt Modeling Language (QML) definiert. Dazu kommt ein umfangreicher Satz an C-Bibliotheken, die weitere Funktionalitäten bereit stellen. Seit der Version 5.2 wird iOS und Android unterstützt. Native APIs der Betriebssysteme können in den Qt-Code integriert werden. Die Unterstützung aus Qt selbst heraus ist auf einige Module beschränkt. Qt existiert als freie Open Source Version. Es wird ebenfalls eine kommerzielle Version angeboten.[QtWeb]

Adobe Air

Die Adobe Integrated Runtime ist eine von Adobe Systems entwickelte, plattformunabhängige Laufzeitumgebung zur Erstellung von Rich Internet Applications. AIR-Applikationen laufen wie herkömmliche Anwendungssoftware ohne einen Webbrowser selbständig auf dem jeweiligen Betriebssystem. Derzeit werden die Betriebssysteme Android, BlackBerry Tablet OS, BlackBerry 10, iOS, Mac OS X und Windows unterstützt. Gerätespezifische Funktionen können über native Erweiterungen integriert werden. Adobe Air kostet im Jahresabo ca. 25€. [AirWeb]

Sencha Touch

Mit Sencha können mittels HTML5 mobile Anwendungen für iOS, Android, BlackBerry und Windows Phone erstellt werden. Anwendungen können mit PhoneGap/Cordova gepackt werden. Durch die Cordova Anbindung ist der Zugriff auf APIs wie Beschleunigungssensor, Kamera, Kompass, Netzwerk, Kontakte, Events, Dateisystem, Geolokalisation und Benachrichtigungen möglich. Eine Entwicklerlizenz für Sencha Touch kostet ca. 700$.[SenchaWeb]

 

Name Sprache(n) Plattformen APIs Kosten
PhoneGap HTML5, CSS, JavaScript iOS, Android, Windows Phone, webOS, BlackBerry (x) Free / Build Cloud 10$/M
Monkey X Monkey Language Desktop, iOS, Windows Phone 8, Windows 8, XNA, PSM, Android (x) Free / Monkey X Pro 99$
MoSync C/C++, HTML5, JavaScript BlackBerry, Moblin, Windows Phone, Windows Mobile, iOS, Android, MeeGo, SymbianOS (x) Open Source
Appcelerator XML/CSS, JavaScript iOS, Android, BlackBerry, Tizen, Denso (x) Free / Marketplace
Xamarin C# iOS, Windows Phone 8, Android x 200-1900$ / Jahr
FireMonkey C++, Object Pascal Windows, Mac OS X, Android, iOS x 6375$
RhoMobile Ruby Windows Phone, Symbian, Android, iOS, BlackBerry (x) Open Source / Service
Qt QML iOS, Android x Open Source / Kommerziell
Adobe Air Flash Android, BlackBerry Tablet OS, BlackBerry 10, iOS, Mac OS X, Windows x 30$ / Jahr
Sencha Touch HTML5 iOS, Android, BlackBerry, Windows Phone (x) 700$

 

Ergebnis

Es gibt viele verschiedene Ansätze zur Multi Plattform Entwicklung. Einige unterscheiden sich nur im Detail, andere unterscheiden sich stark. Es hängt immer vom Anwendungsgebiet, dem Budget, den Programmierkenntnissen, den benötigten APIs und den Zielplattformen ab welches Framework am geeignetsten ist.
Wie es aktuell den Anschein hat, ist das universelle Tool um jede Plattform, performant mit allen Gerätespezifischen Funktionen abzudecken bis jetzt noch nicht erfunden. Möchte man möglichst plattformunabhängig sein, sind die auf HTML5 und JavaScript aufsetzenden Umgebungen die bessere Wahl. Soll die Applikation hardwarenah und performant sein, lohnt ein Blick in den Bereich der nativen Frameworks.