Die Aufgabe
Eine App (ich finde das ist das Unwort des Jahres. Deshalb nenne ich es ab jetzt ganz normal “Applikation”) zu entwickeln die auf möglichst vielen Plattformen gleichzeitig läuft, ohne viel Anpassungen. Hört sich im ersten Augenblick gar nicht so schwer an. Betrachtet man jedoch die einzelnen mobilen Betriebssysteme, deren API’s, Programmiersprachen und Frameworks wird einem relativ schnell klar dass dies nicht so ohne weiteres möglich ist:
- Android nutzt Java als Sprache und die Dalvik VM als Laufzeitumgebung
- iPhone bw. das iOS nutzt Objective-C
- Windows Phone 7 nutzt C# bzw. VB.NET und Silverlight als Laufzeitumgebung
- …
Wie man gleich auf den ersten Blick erkennen kann gibt es eigentlich keine Gemeinsamkeiten. Würde ich jetzt meine Applikatin XYZ auf den oben genannten drei Plattformen implementieren wollen, wäre ich erst mal sehr sehr lange mit lernen und danach mit implementieren beschäftigt. Um genau zu sein müsste ich ein und dieselbe Anwendung drei mal von Grund auf neu implementieren. Tritt ein Bug in meiner Applikation auf, müsste ich diesen vermutlich auch auf allen drei Plattformen fixen. Nimmt man jetzt noch zusätzliche mobile Betriebssysteme wie Bada, MeeGo, webOS und wie sie alle heißen mögen mit auf, steigt der Aufwand exorbitant an.
Die Lösung?
Der einzige gemeinsame Nenner den alle Plattformen gemeinsam haben ist das Web. Jede dieser Plattformen kann Webseiten in einem, mehr oder weniger modernen, mobilen Browser darstellen. Die Applikation als reine Webseite ab zu bilden hat jedoch eine Menge Nachteile:
- Look & Feel passt nicht zu nativ implementieren Anwendungen
- Performance ist ebenso nicht so gut
- die JavaScript API der jeweiligen mobilen Browser gibt nicht mal ansatzweise dass her was eine native API verspricht
- die HTML (5) / JavaScript Implementierung ist bei jedem Browser unterschiedlich bzw. unterschiedlich weit fortgeschritten
- Offline Fähigkeit ist nicht so ohne weiteres möglich
Was bleibt?
Bei meinen Recherchen im Internet bin ich auf diverse Frameworks gestoßen die sich alle das gleiche Versprechen auf die Fahne schreiben: Cross-Platform Development auf einem Level auf dem man sich als Applikationsentwickler nicht, oder nur geringfügig, um die einzelnen Plattformspezialitäten kümmern muss. Die drei populärsten Frameworks sind:
Alle drei werde ich in der nächsten Zeit auf ihre Tauglichkeit evaluieren und meine Ergebnisse hier präsentieren.