Plattformübergreifende App-Programmierung mit Delphi und Xamarin

Werkzeuge  –  10 Kommentare

Die Entwicklung mobiler Applikationen wird für viele Entwickler und Firmen zunehmend wichtiger und lukrativer. Gut, dass die App-Stores von Apple, Google und Microsoft einen relativ unkomplizierten weltweiten Vertrieb der Apps ermöglichen. Mit Delphi und Xamarin gibt es Software, mit denen sich alle drei Plattformen mit derselben Codebasis bestücken lassen.

Beginnen Entwickler heute mit dem Schreiben einer App, müssen sie überlegen, ob sie sie nur für eine Plattform oder gleich für mehrere konzipieren; und wenn für mehrere, dann für welche. Aber sicherlich möchten die meisten zumindest die zwei führenden Plattformen, iOS und Android, nicht missen.

Einer einfachen Portierung zwischen den Plattformen stehen einerseits unterschiedliche Programmiersprachen entgegen, aber auch die diametral unterschiedlichen Methodiken und APIs der mobilen Betriebssysteme erschweren dem Programmierer das Leben. Ebenso gibt es unterschiedliche Design-Richtlinien. Beispielsweise ist das auf der Desktop-Ebene von einigen Entwicklern immer noch verwendete Flash wahlweise nicht erlaubt (iOS), wird seit längerem nicht mehr entwickelt (Android) oder unterstützt nur einen Teil der Features (Windows Phone/8.1).

Spiele- oder Anwendungsentwicklung

Die Unterschiede zwischen den einzelnen Gerätefamilien wiegen mehr oder minder schwer, wenn man die zwei grundsätzlich verschiedenen Arten der Spiele- oder der Anwendungsentwicklung betrachtet.

Bei der Spieleentwicklung spielen die APIs eine untergeordnete Rolle. Die Spielobjekte werden schließlich direkt auf dem Canvas ausgegeben, also dem aus Pixeln zusammengesetzten Bildschirm. Somit benötigen Entwickler die APIs nur dazu, um den Bildschirm anzusteuern, die Touch-Ereignisse entgegenzunehmen und Sounds auszugeben. Hingegen spielen Ausführungsgeschwindigkeit und Bibliotheken für diverse Objekttransformationen, 3D-Ausgabe, Sprites, Kollisionserkennung und Physik eine große Rolle. Diese sind von der Spieleapplikation mitzubringen und nirgendwo Bestandteil des Betriebssystems.

Daher haben sich viele Entwicklungsumgebungen etabliert, die ein in Maschinensprache kompiliertes Programm ausgeben. Sie enthalten die Mehrzahl der oben aufgeführten Features und unterstützen oft noch weitere Plattformen, sogar aus dem Desktop- und Konsolenbereich. Genannt seien hier nur Marmelade/Battertech (C++/Lua), Corona (Lua) und die Qt-basierte V-Play-Engine (C++). Die Spieleentwicklung geht damit flüssig vonstatten, getestet wird direkt auf dem PC (ohne einen Emulator), es werden oft diverse Sprite- und 3D-Editoren unterstützt, und für den schnellen Einstieg findet man gute Beispiele auf den Herstellerseiten.

Möchten Entwickler aber eine plattformübergreifende dialogorientierte Anwendung schreiben, die zudem alle Funktionen des Geräts ausnutzt, sind hier derzeit zwei weitere Möglichkeiten ins Spiel zu bringen: einerseits die Programmierung mit JavaScript oder aber die plattformübergreifende Entwicklung in einer kompilierbaren Programmiersprache.

JavaScript – durch Apple geadelt

Seit dem Aufkommen des iPhones ist JavaScript eine der von Apple erlaubten Programmiersprachen. Entwickler der Firma Nitobi hatten deswegen vor einigen Jahren ein Framework entwickelt, das JavaScript Zugriff auf die Gerätehardware ermöglicht. Sie nannten es PhoneGap. Nach der Übernahme der Software durch Adobe wurde sie erst Apache Callback und später Apache Cordova genannt. Darüber hinaus gibt es seitdem noch eine Umgebung, die auf Apache Cordova aufbaut und beim Start der App einen eingebetteten Browser startet und darin eine HTML5/JavaScript-Applikation ausführt. Diese Umgebung heißt weiterhin PhoneGap und deckt außer den drei meistverbreiteten mobilen Betriebssystemen Android, iOS und Windows Phone noch BlackBerry OS, Bada, Symbian, webOS und Tizen ab. Jedoch ist die Unterstützung der Gerätfähigkeiten nicht überall komplett. Die größten Probleme stellen dabei aber einerseits JavaScript, das als Skriptsprache je nach Anwendungsbereich um einiges langsamer ausgeführt wird als kompilierbare Pendants, und anderseits das Look & Feel der daraus entstandenen Applikationen, denen man den Ursprung als eine Webapplikationen sofort ansieht.

Will man dennoch plattformübergreifende Entwicklung in einer kompilierbaren Programmiersprache betreiben, bleibt derzeit vorrangig die Wahl zwischen zwei Produkten: Xamarin und Delphi.