Programmiersprache für die Entwicklung von Android Apps

Diese Programmiersprachen kann/sollte man für die Entwicklung von Android-Apps nutzen.

Aktuell bietet sich eine große Bandbreite an Programmiersprachen, die sowohl für die Erstellung von Android-Apps gedacht sind als auch vom Hersteller Google unterstützt werden. Die bekannteste und am häufigsten verwendete Sprache ist definitiv Java. Die vollständige Integration in die Entwicklungsumgebung von Google und die Möglichkeit, ebenso die bekannte IDE Eclipse zu verwenden, machen Java zusammen mit der einfachen Syntax und dem umfassenden Framework so populär. Aber es gibt Alternativen.

Java ist der Platzhirsch

Ähnlich wie die Java Virtual Machine auf Desktop-Geräten wandelt die Dalvik Virtual Machine auf Android-Geräten Java Code in Bytecode um, welcher dann vom jeweiligen Prozessor interpretiert wird. Ab Version 5.0 Lollipop wurde die DVM durch eine Android Runtime ersetzt. Im Gegensatz zu der Just-in-time Kompilierung der virtuellen Maschine wird nun direkt auf den Befehlssatz des jeweiligen Prozessors kompiliert. Vorteile sind neben der geringeren Prozessorlast auch der schnellere Start von Apps, da nur einmal der Binärcode erzeugt wird und nicht, wie bei einem JIT-Compiler, bei jedem Aufruf.

Kotlin ist in Android Studio integriert

Google präsentierte auf seiner letzte Entwicklerkonferenz I/O die vollständige Integration von Kotlin in Android Studio und dessen Framework. Kotlin ist kompatibel mit Java, das bedeutet, dass Java Code problemlos in Kotlin-Projekte eingebunden und verwendet werden kann. Trotz der jungen Vergangenheit erfreut sich Kotlin wachsender Beliebtheit. Allerdings sind Beispielcode und Referenzen deutlich spärlicher gesät, als das bei Java der Fall ist. Die offizielle Dokumentation hilft dir, einen Überblick über die Sprache zu erhalten und kleinere Probleme zu lösen.

C und C++ sind mit Anpassungen möglich

Für Personen, die deutlich näher an die Hardware und weitestgehend auf vorgefertigte Funktionen von Google verzichten wollen, eignet sich C++. Auch diese Sprache wird von Android Studio unterstützt, erfordert allerdings das Einbinden von externen Komponenten. Das Android Native Development Kit zusammen mit dem externen Build-Tool CMake und dem Debugger für nativen Code, LLDB, ermöglichen erst das Arbeiten mit C bzw. C++.

C# über Xamarin

Das Framework Xamarin schafft die Voraussetzungen, C# zusammen mit Visual Studio für die App-Entwicklung zu verwenden. Aufgrund der nötigen Einbindung diverser Xamarin-Libraries fühlt sich das Programmieren doch sehr nach Java an, da diese die Schnittstellen des Android-Frameworks nachbilden. Der Aufbau einer App-Oberfläche über XML-Dateien ist identisch, ebenso wie das nötige Überschreiben von Activity-Methoden und fremden Klassen.

Vorstellung der Sprachen und ihre Vor- und Nachteile

Java spielt auch im Android-Umfeld seine Stärken aus. Die Kombination aus einfacher Syntax und umfassendem Framework ermöglichen Dir einen schnellen Einstieg. Allerdings unterstützt das Android-Framework noch nicht alle neuen, mit Java 8 hinzugekommenen, Features. Für Event-Handler von UI-Elementen und dem Erweitern von Klassen ist teilweise relativ umfangreicher Boilerplate-Code nötig.

Dieser Aufwand wird mit der neuen Sprache Kotlin, vom bekannten IDE-Hersteller JetBrains, stellenweise deutlich reduziert. Auch wurde die Syntax noch weiter vereinfacht. Bekannte Codekonstrukte wie Switch-Statements werden mit Lambda-Ausdrücken kombiniert, allgemein verwendet Kotlin viele Java 8 Neuerungen standardmäßig. Lästige NullPointer-Exceptions aus Java sind nun Geschichte. Automatische Assertions sichern nämlich zu, dass ein Objekt nicht null sein darf während zusätzliche Syntax-Konstrukte verhindern, dass Methoden eines null-Objekts aufgerufen werden. Alles in Allem viele Verbesserungen, die zu kompakterem Code führen.

In Zeiten der DVM (Dalvik Virtual Machine) war C++ eine echte Alternative zu Java für möglichst effiziente Apps, da dessen Programme zu Binärcode kompiliert werden. Besonders bei rechenintensiven und zeitkritischen Anwendungen ist das von Vorteil, teilweise waren vergleichbare Programme in Java bis zu 100 mal langsamer. Durch die Einführung der Android Runtime hat sich dieser Unterschied drastisch reduziert, in den meisten Fällen liegen heutzutage beide Kandidaten gleich auf. Der Entwicklungsaufwand in C++ ist weiterhin deutlich aufwändiger und komplexer, da das Arbeiten mit Pointern und Referenzen unerlässlich ist und viele Teile des Android-Frameworks nicht benutzt werden können. Dessen Schnittstellen sind nämlich nur mit Java und Kotlin kompatibel.

Mit C# verhält es sich ähnlich wie mit Java. Aufgrund des nicht-offiziellen Xamarin-Frameworks müssen Funktionen allerdings aus den neuesten Android-Versionen erst nachgebaut werden. Daraus ergibt sich eine zeitliche Verzögerung. Da meistens nicht nur für die aktuellste sondern auch für Ältere Versionen entwickelt wird, spielt das jedoch keine große Rolle. Wer sich an die Entwicklung mit Visual Studio und C# gewöhnt hat, wird hier einen schnellen Einstieg finden.

Anwendungsgebiete

Die genannten Hochsprachen Java, Kotlin und C#, sind für effektive Android-Entwicklung geeignet. Für Personen, die sich auf das offizielle Framework stützen und Updates so schnell wie möglich erhalten möchten, sind Java und Kotlin zu empfehlen. C++ wird meist nur noch in einem spezifischen Teil einer App, über den größtmögliche Kontrolle wichtig ist, verwendet. Die gesamte Entwicklung in C++ zu erledigen wäre schlicht zu aufwändig und bringt wenig bis keine Vorteile mit sich.

Empfehlung an Dich

Für einen einfachen Einstieg empfehle ich Dir Kotlin, auch wenn Du bereits Erfahrung in Java hast. Kürzerer und verständlicherer Code, aufgrund einiger Syntax-Neuerungen, zusammen mit der Interoperabilität mit Java und der guten Integration in Android Studio macht Kotlin zur für mich favorisierten Sprache.

Rückmeldungen