Die Qual der Wahl – Womit mobile Apps entwickeln?

Schon seit Jahren ist es mein Plan Anwendungen für mobile Plattformen zu entwickeln. Als es das iPhone und Android noch nicht gab, habe ich mir stets ein Nokia-Handy mit Symbian gekauft – nur um zu wissen, dass ich kann, wenn ich will. Über ein simples Hello-World bin ich nie hinaus gekommen. Mir fehlte schlichtweg die Zeit und es gab viele andere Sachen, die ich vorher lernen und ausprobieren musste. Mittlerweile habe ich von Nokia abgeschworen und habe ein nettes Android-Handy von HTC. Aber damit fangen die Schwierigkeiten erst an…

Es gilt wichtige Entscheidungen zu treffen. Welche Plattform will ich unterstützen? Windows Phone? iPhone? Android? Symbian? Es gibt so viele! Unterstützt man nur die beliebtesten? Oder doch lieber alle? Schreibt man die Anwendung für jede Plattform selbst? Was leisten Cross-Plattform Lösungen wie Titanium von Appcelerator oder PhoneGap?

All die Entscheidungen hängen sicher vom Ziel ab. Was soll die App eigentlich können und wen will ich damit erreichen?

Und so bin ich auch schon eine Weile dabei abzuwägen, was ich eigentlich brauche.
Möchte man den vollen Umfang der zur Verfügung gestellten Funktionen des Gerätes nutzen, dann ist es sicher empfehlenswert nativ zu entwickeln. Das ist natürlich ein großer Aufwand, weswegen man sich wahrscheinlich auf eine Plattform beschränken wird.
Dieser Ansatz ist nicht unbedingt verkehrt. Es sind große Communities rund um die verschiedenen Plattformen entstanden, viele Bücher wurden geschrieben und es gibt gute Entwicklungsumgebungen mit Debugger und Co.
Strebt man eine nicht ganz so komplexe und hochperformante Anwendung an, so sind Titanium und PhoneGap, welche ich mir beide etwas näher angeschaut habe, eventuell eine Alternative. Beide verfolgen unterschiedliche Ansätze und auch hier muss man abwägen, was wichtiger ist. Die Features von PhoneGap und Titanium unterscheiden sich etwas. Viel wichtiger ist, was für eine App hinten rauskommt.

PhoneGap-Anwendungen laufen quasi als Webseite in einem Webkit-Container – mit allen Vor- und Nachteilen. So kann man mit HTML, CSS und JavaScript sehr schnell einfache Anwendungen für sehr viele Plattformen umsetzen. Der Zugriff auf die meisten API-Funktionen ist möglich. Spiele oder ähnliche Projekte sollte man damit aber nicht realisieren. Die Performance dürfte sehr darunter leiden und die Anwendung wenig Spaß machen. Die Dokumentation von PhoneGap ist recht ordentlich und es gibt viele Beispiele. Man sieht sehr schnell erste Erfolge.

Mit Titanium kann man lediglich Anwendungen für das iPhone und Android entwickeln. Doch diese werden kompiliert und laufen als native Apps auf den jeweiligen Geräten mit den hauseigenen Controls. Das sollte sich auch in der Ausführungsgeschwindigkeit der Anwendung zeigen.
Ganz so schnell wie mit PhoneGap bin ich mit Titanium nicht zu einem ersten Hello-World gekommen, auch wenn es eine Menge Beispiele bei github gibt. So hatte ich unter Ubuntu 10.10 Probleme beim Starten des Titanium Developer, der dazu dient ein Anwendungsgerüst zu erstellen und welcher später auch die Anwendung kompiliert und ausführt. Auf der Developer Seite habe ich aber sehr schnell eine Lösung gefunden. Nachdem ich mir noch die benötigten Bibliotheken heruntergeladen, gebaut und verlinkt habe, konnte ich sogar Eclipse überreden das Titanium-Projekt ohne Fehler zu laden. Ausführen muss man das allerdings immer über den Titanium Developer. Das ist wirklich schade und vor allem ungewohnt!

Das Fehlen eines Debuggers empfinde ich sowohl bei Titanium als auch bei PhoneGap als wesentlichen Minuspunkt. Möglicherweise baut Appcelerator ja eine Titanium-Unterstützung bei Aptana Studio 3 ein.

Im Netzt wurden bereits eine Menge Vergleiche der verschiedenen Ansätze angestellt und Pro und Contra diskutiert. Zum Beispiel hier oder hier. Ein etwas mulmiges Gefühl in Bezug auf Titanium haben Blog-Einträge wie hier und hier bei mir hinterlassen.

Zum Schluss sollte man auch noch beachten, dass neue API-Funktionen der Geräte immer erst in die Frameworks integriert werden müssen, was beim nativen Ansatz natürlich entfällt. Man ist den Anbietern schon ein wenig ausgeliefert und muss darauf vertrauen, dass zum Beispiel Fehler schnell behoben werden.

Im Moment schwanke ich noch ein wenig zwischen Titanium und der nativen Variante. Möglicherweise werde ich es ja überleben, nicht wie gewohnt nur in Eclipse und ohne ordentlichen Debugger zu entwickeln, andere wie die 6Wunderkinder haben es auch geschafft.

Was nehme ich nur!?

3 Gedanken zu „Die Qual der Wahl – Womit mobile Apps entwickeln?

  1. Tom sagt:

    Hey,

    mit großerem Interesse habe ich deinen Beitrag gelesen und stehe vor dem gleichen Problem.

    Hast du mittlerweile eine Lösung gefunden?

    Und ist es so, dass man mit PhoneGap oder Titanium das ganze auf einer Webseite am laufen hat – oder muss man tatsächlich den gesamten Weg über den Store gehen?

    Gruss

    • Hallo,

      ich plane schon einen neuen Eintrag, wo ich genau dieses Thema nochmal aufgreifen wollte.

      Für mich habe ich eine Lösung gefunden, mit der ich im Moment ganz gut fahre.
      Die native Entwicklung lohnt wahrscheinlich für die meisten Anwendungsfälle nicht. Titanium kommt auch weiterhin nicht in Betracht, da mich das TitaniumStudio nicht überzeugen konnte. Zudem ist dieses kostenpflichtig und läuft nur auf 2 Plattformen. Auf diesen sieht das UI dann aber nativ aus, was durchaus ein Pluspunkt ist.

      Im Moment arbeite ich mit PhoneGap + Sencha Touch (inkl. ExtJs). Und das ist wirklich eine sehr tolle Sache! Warum werde ich demnächst genauer schreiben, ich bitte um etwas Geduld. 😉 Schonmal vorab: Ich kann die Anwendung bequem in Google Chrome debuggen!

      Was deine Frage mit dem Store angeht: Man baut eine Webseite (HTML+Css+JS) und kompiliert am Ende eine Anwendung für eine Plattform, die dann zum Beispiel in die entsprechenden Stores gestellt werden kann.
      Die App stellt also einfach eine Webseite in einer WebView dar. Der Code ist dadurch sehr einfach wiederverwendbar.
      Man kann natürlich auch die entsprechenden Dateien über das Netz in die View laden, aber dann sind die Nutzer ja gezwungen eine Verbindung aufzubauen. Da muss man abwägen, ob das Sinn macht. Zudem birgt es natürlich auch ein gewisses Risiko, wenn eine Website Zugriff auf das Telefon bekommt.

      Ciao,
      Alex

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.