Mobile Apps entwickeln mit Appcelerator Titanium

Appcelerator Titanium help Photo by Daniel Korpai on Unsplash

Wer kennt das nicht: Man hat eine Idee für eine App oder bekommt eine Anfrage eines Kunden eine App zu entwickeln und dann sucht man nach "wie entwickelt man eine App". Schnell findet man bei Android die Sprache Java/Kotlin und bei iOS Objective-C/Swift. Aber gleich zwei Sprachen lernen um eine App zu schreiben ist viel Arbeit und braucht einiges an Zeit. Zum Glück gibt es sogenannte multiplatform Frameworks, die einem viel Zeit (und Geld) sparen können und man mit einer Sprache und Code-Basis für beide Plattformen entwickeln kann. Eines dieser Frameworks ist Appcelerator Titanium.
Gerade für Einsteiger oder Programmierer die aus der Fontend Entwicklung von Webseiten kommen bietet das auf JavaScript basierte Open-Source Projekt (Apache Lizenz) einen schnellen Einstieg. Das Titanium SDK (Software Development Kit) gibt es seit 2010 und wurde seit dem ständig weiterentwickelt, um mit den jährlichen Updates der Handy-Betriebssysteme Schritt zu halten oder neue Features zu implementieren. Da das Ganze SDK frei auf Github (https://github.com/appcelerator/titanium_mobile) zur Verfügung steht, kann man stets die Entwicklung und neuen Features im Auge behalten oder sich auch selbst an der Entwicklung beteiligen.


Welche Vorteile bietet Appcelerator Titanium?

Appcelerator Titanium workspace

Wie bereits erwähnt werden Apps in Titanium mit JavaScript geschrieben (ES5 und ES6 Support!) und man kann bis zu 90% des Codes für beide Plattformen verwenden. Die restlichen 10% sind meisten betreiberspezifische Unterschiede der beiden Plattformen: Es gibt Dinge, die es nur bei Android gibt, andere nur bei Apple. Bei den meisten Elementen wird aber auf Parität Wert gelegt, also ein JavaScript Aufruf produziert entsprechenden Android und iOS Code – ohne das Zutun des Entwicklers. Die Apps, die nachher entstehen, sind trotzdem native Apps! Das heißt, dass die späteren UI Elemente (User Interface, also die Oberfläche der App) auf Android bzw. iOS vom Verhalten und Aussehen her so sind, als hätte man die App in Java oder Swift geschrieben! Auch bei der Performance gibt es nahezu keine Unterschiede. Im Gegensatz dazu stehen sogenannte Web-Apps oder Progressive Web-Apps. Diese emulieren diese UI Elemente so gut sie können und laufen entweder im Browser oder innerhalb der App in einem sogenannten Webview (also einem "nackten" Browserfenster innerhalb der App). Diese Apps können im Vergleich zu einer nativen App langsamer sein und auch nicht auf alle Handy-Features zugreifen. Es gibt verschiedene Einsatzzwecke, warum man diese Art der Entwicklung wählen will, z.B. man will die App nicht über den normalen Store vertreiben oder es gibt bereits eine bestehende Webanwendung, die man nur in eine App "wrappen" will. Startet man aber mit einem neuen Projekt und will dieses ganz normal verteilen, dann sollte man direkt eine native App entwickeln.

Zur Strukturierung des Codes bietet Appcelerator ein sogenanntes MVC (Model View Container) Framework namens Alloy an (neue Projekte nutzen dieses standardmäßig). Das heißt, dass es drei Bereiche gibt in denen man zur besseren Lesbarkeit bzw. Orientierung den Code aufteilt. Die Trennung von Oberflächengestaltung (XML basierte Dateien; Views), Aussehen (CSS Variante namens TSS) und Code (JavaScript Dateien) hat den Vorteil, dass man gerade in größeren Projekten den Überblick nicht verliert, man fremde Projekte schneller lesen kann oder neue Programmierer sich direkt zurechtfinden können. Der Model Part wird durch Backbone.js bereitgestellt.

Seit 2018 gibt es auch eine Integration von Angular und Vue.js, die es ermöglicht, die beiden JavaScript Frameworks als Basis für Titanum Apps zu nutzen.

Wenn die über 250 bereitgestellten Funktionen wie Kamera, GPS, Kontakte, Datenbanken, Buttons, Bilder,…. von Titanium nicht ausreichen kann man das ganze Framework mit eigenen Java/Objective-C/Swift Modulen erweitern oder Hyperloop nutzen, das dem Entwickler erlaubt native API (Application Programmer Inferface) des Mobiltelefons direkt in JavaScript zu nutzen! Dabei kann man Java Code direkt in JavaScript verwenden und schreibt neue Funktionen direkt in seinem App Code ohne ein externes Modul zu entwickeln. Sogar auf bestehende Bibliotheken (jar, aar, swift, etc.) andere Nutzer kann man zurückgreifen.

Axway vertreibt Appcelerator Titanium auf verschiedene Arten: Zum einen kann man die Open Source Variante nutzen und damit von der ersten Zeile Code bis zur fertigen App im Store das gesamte Projekt entwickeln. Daneben gibt es eine kostenlose Indie Version, bei der man zusätzlich noch weitere Features nutzen kann wie:

  • Liveview, eine Hot-Reload Umgebung; sprich sobald man eine Datei ändert und speichert wird die App während der Entwicklung direkt aktualisiert
  • Analytics
  • Appcelerator Studio – eine auf Eclipse basierte Entwicklungsumgebung
  • Community Support (z.B. über JIRA)

Und es gibt eine - besonders für Unternehmen interessante – Pro bzw. Enterprise Variante. Diese enthält dann zusätzlich noch

  • Premium Module wie z.B. verschlüsselte Datenbanken
  • besseren Support
  • mehrere Nutzer
  • uvw.

Es spricht aber nichts dagegen, immer die Indie Version zu nutzen oder sogar die Open-Source Variante. Das enthaltene Titanium ist in allen Versionen gleich!


Wo fängt man an?

Appcelerator Titanium help

Um mit Appcelerator Titanium zu starten gibt es neben der offiziellen Dokumentation noch weitere Tutorials unter „From zero to App“ oder findet im Ti-Slack, Medium oder auf Stackoverflow Hilfe und Gleichgesinnte.


Gibt es Alternativen?

Natürlich! Gerade in den letzten Jahren sind viele neue multiplatform Frameworks entstanden. Unter anderem gibt es Flutter (Dart), React Native (JavaScript), Xamarin (C#) uvw. Hier entscheidet natürlich jeder selbst, welches Framework das beste für einen ist. Listen mit Vor- & Nachteilen findet man viele; ich komme aus der Titanium Welt, daher finde ich mich natürlich dort am besten zurecht 😉


Über den Autor

Ich entwickel seit 2010 mit Appcelerator Titanium und habe 2017 den Status "Titan 2.0" erhalten, da ich mich durch zahlreiche Beiträge in Form von Code, Tutorials und Hilfe im Slack an Community und dem Framwork beteilige.
In der Zeit habe ich weit über 30 Apps für diverse Kunden entwicklet und neben Business Apps, AR Apps und Spielen mit Unity auch Webseiten oder API Schnittstellen auf PHP Basis entwickelt.