In der App-Entwicklung hat man die Wahl zwischen plattformübergreifendem Framework und applikationsspezifischem Design. Die erste Option bedingt zwar einen geringeren Aufwand und die App wird auf jeder Plattform ähnlich funktionieren. Andererseits ist es schwierig, das UI-Design so anzupassen, dass es für alle Plattformen passt. Option 2 wird häufig für die Spielentwicklung gewählt. Es zeichnet sich dadurch aus, dass durch einen höheren Aufwand eine möglichst plattformspezifische App designt werden kann. Im Folgenden stellen wir Ihnen für die erste Option den Vergleich zwischen PhoneGap, Titanium und Xamarin vor.

Allgemeines zu Cross-Platform Development

Die plattformübergreifende Entwicklung ist ein großes Thema – zumindest, bis der Tag kommt, an dem alle die gleiche Entwicklungsplattform nutzen. Mit Android, HTML, WebKit, Windows, iOS, Xamarin, PhoneGap, Titanium und Corona werden nur einige der vielen Möglichkeiten genannt.

In PhoneGap/Cordova, Appcelerator Titanium und Sencha werden beispielsweise Web-Applikationen geschrieben, die in eine native Applikation verpackt werden. Die Alternative ist die Verwendung eines plattformübergreifenden Werkzeugs, das native Apps ausgibt. Als Beispiele hierfür sind Xamarin Studio oder Embarcardero FireMonkey zu nennen.

Zum Profil von LoboStudioHamburg

Bildquelle: LoboStudioHamburg@Pixabay/ Lizenz: CC0


Man muss sich also zwischen dem deutlich aufwendigeren Vorgehen, zwei oder mehr UI-Designs für eine Applikation zu pflegen und den möglichen Einschränkungen im Design entscheiden.

Des Weiteren gestaltet es sich immer problematisch, in einem Browser an die Qualität eines nativen UIs heranzureichen: Sencha beispielsweise setzt ein großes Team von Web-Programmierexperten ein, deren vorrangige Aufgabe es ist, sich in ihrem UI-JavaScript Framework Sencha Touch dieses Problems anzunehmen. Nichtsdestotrotz ist es heute weder in den meisten Browsern noch auf den meisten Plattformen möglich, die Qualität des Verhaltens einer nativen Applikation zu erreichen. Die Frage, ob der Browser schon gut genug sei, muss zunächst im Hinblick auf die eigenen Anforderungen und Sensibilitäten beantwortet werden. Dennoch ist es unzweifelhaft so, dass Browser-Applikationen weniger gut als native UIs sind. Abhängig vom Browser, können sie sogar deutlich schlechter sein.

Xamarin

Xamarin, ursprünglich ein Geschäftsbereich von Novell, hat in den letzten 18 Monaten seine eigene IDE und ein eigenes Snap-in für Visual Studio auf den Markt gebracht. Die zugrunde liegende Prämisse von Xamarin ist es, mit Hilfe von Mono (Cross-Platform-Implementierung des .NET-Frameworks) in C# eine geteilte Codebasis für Projekte zu schaffen und diese mit systemabhängigen Erweiterungen zu nativen Apps zusammenzusetzen.

Zusätzlich zu der Erschaffung einer visuellen Design-Plattform, in der sich native Applikationen entwickeln lassen, wurden Testumgebungen integriert, native Bibliotheken eingebunden und ein Shop für Erweiterungen und Komponenten nach dem Vorbild von Nuget eingerichtet. Vor Kurzem wurde für iOS eine Möglichkeit zum visuellen Design in der IDE eingerichtet, wodurch die Verwendung von XCode für Entwickler entfällt. In Visual Studio werden jetzt alle drei Plattformen unterstützt und zudem ist dank der Xamarin Testcloud die Möglichkeit gegeben, die Entwickler beim Testen zu unterstützen.

Xamarin hat von Anfang an eine reiche, virtuelle Design-Erfahrung für Android geliefert. Zudem gibt es die Möglichkeit Custom Delegates anzulegen, die den Entwickler von den objective-C- und Java-Einschränkungen befreien. Weiterhin funktionieren viele Bibliotheken, wie zum Beispiel Newtonsofts JSON.Net, unproblematisch in allen drei Umgebungen.

Entwicklungsumgebungen von Xamarin

PhoneGap

PhoneGap verfolgt zwei wichtige Ziele: Einerseits soll die Entwicklung von HTML-basierten Web-Applikationen als native Apps ermöglicht werden, andererseits wird ein gemeinsames natives API-Set bereitgestellt. Zu diesem gehören unter anderem ein einfacher Kamerazugang, Geräteschnittstellen und Sensoren, die nicht über den Browser abrufbar sind. Vergleichbar mit der Entwicklung einer statischen Website, schreiben Entwickler HTML-, CSS- und JavaScript-Dateien in einem lokalen Verzeichnis.

Besonders treffend hat Kevin Whinnery den Vorteil von PhoneGap in seinem Blog beschrieben: „It does what it does, and it does that well.“ (Es tut, was es tut und das tut es gut). Neben der Tatsache, dass das PhoneGap-Team nur den kleinsten gemeinsamen Nenner von nativen APIs für webbrowserbasierte Apps implementiert hat, können einfache native Erweiterungen schnell entwickelt werden.

Zu den Nachteilen zählt, dass JavaScript keine zur Applikationsentwicklung geeignete Programmiersprache ist, da unter anderem unterschiedliche Bibliotheken nicht kompatibel sind. Zudem resultiert die Unmenge an immer neuen Frameworks und Bibliotheken in einer Überfülle an Wahlmöglichkeiten, von denen zu viele noch nicht ausgereift sind. Die Fähigkeiten zur Interaktion mit anderen Applikationen oder Gerätefähigkeiten sind zudem sehr eingeschränkt. Dies ergibt jedoch aus der Tatsache, dass es in HTML5 bis auf Standortbestimmung, Kamera und lokale Datenbanken keine Standards gibt und eine Änderung den entsprechenden Verlust der Plattformunabhängigkeit zur Folge hätte.

Appcelerator Titanium

Titanium Mobile verfolgt das Ziel, eine plattformübergreifende high-level JavaScript Runtime und eine API für die mobile Entwicklung bereitzustellen. Zurzeit werden hierbei iOS, Android und Desktopbrowser unterstützt.

Auch bei Titanium sind zwei wichtige Annahmen zur Mobilentwicklung zu beachten. Auf der einen Seite gibt es einen Kern von APIs in der Mobilentwicklung, die sich über alle Plattformen hinweg vereinheitlichen lassen. Diese Bereiche sollten für Code-Recycling anvisiert werden. Auf der anderen Seite gibt es plattformspezifische APIs, UI-Konventionen und Eigenschaften, die Entwickler in den Entwicklungsprozess einbeziehen sollten. Für solche Fälle sollte ein plattformspezifischer Code existieren, um die bestmögliche Nutzungserfahrung zu gewährleisten.

Unser Fazit: Wir entscheiden uns für Xamarin

Nachdem man sich mit allen Möglichkeiten befasst hat, ist es ratsam, die Wahl des Entwicklungstools je nach den Produktbedürfnissen zu treffen. Generell ist es jedoch sinnvoll, dass man sich für eine Herangehensweise entscheidet.

Wir haben uns für Xamarin entschieden und sind sehr zufrieden mit unserer Wahl. Zu den Vorteilen zählen unter anderem:

  • Native Performance
  • Besser lesbarer Code gegenüber Scriptsprachen
  • Einfacheres Testen: Gemeinsamer Code braucht nur einmal getestet werden
  • Möglichkeit zur Nutzung der Testcloud
  • Gemeinsame Geschäftslogik über die Zielplattformen hinweg: je größer die Geschäftslogik – desto größer die Einsparungen
  • Support: Xamarin bietet umfangreichen Support an (direkt oder in der Community / im Forum)

Frank Ortner, Programmierer bei ISEO zu Cross-Platform Development mit Xamarin: „Die Auslagerung und gemeinsame Nutzung der Geschäftslogik und Datenhaltung schuf eine höhere Effektivität, Qualität und damit einen harmonischeren Projektverlauf als bei der konventionellen nativen App Entwicklung in Java und Objektive-C.“

Weitere Leistungen von ISEO finden Sie auf unserer Homepage sowie auf unserem Profil im App-Entwickler-Verzeichnis.

SHARE ONShare on FacebookTweet about this on TwitterGoogle+