Android
Kotlin in Android Studio
Posted on .Apple hat die Sprache Swift als moderne Alternative zu dem 30 Jahre alten Objetive-C vorgestellt für die Entwicklung von iOS Apps. Java hat vielleicht nicht ganz so viele Altlasten oder sperrigen Syntax, allerdings sind auch seid der Entstehung von Java viele moderne Konzepte entstanden, die sich in Sprachen wie Swift oder Groovy finden. Außerdem arbeitet man bei Android auf der Basis von Apache Harmony, der inzwischen eingestellten Open Source Implementierung von Java 6. Google ist auch nicht besonders engagiert dabei Neuerungen aus Java 7 oder 8 zu portieren.
Die Sprache Kotlin
Eine Sprache für die JVM, die ganz ähnliche Ziele wie Swift hat, ist Kotlin. Dabei handelt es sich um eine objektorientierte Programmiersprache mit statischer Typisierung und Lambda Funktionen. Sie kann wahlweise zu Bytecode oder Javascript kompiliert werden.
Außerdem lässt sie sich einfach in die Android Entwicklung integrieren und setzt nur eine kleine Laufzeit-Bibliothek voraus. Kotlin lässt sich in bestehende Projekte einbinden druch seine Java-Interoperabilität, dass heißt Java-Code kann Kotlin-Code aufrufen und umgekehrt. Die Entwickler hinter der Sprache sind JetBrains, daher besteht bereits eine sehr gute Integration in die IntelliJ und Android Studio IDEs.
Der Syntax ist auf Lesbarkeit ausgerichtet und sieht wie vereinfachtes Java aus: Semikolons am Zeilenende sind optional, das Schlüsselwort new
entfällt und Typ-Definitionen können weggelassen werden, wenn sie implizit für den Compiler erkennbar sind.
Zu den Highlights der Sprache gehört neben den oben erwähnten Lamdas Mehrfachvererbung durch Traits, Erweiterungsfunktionen, automatische Typkonvertierung, optionale Angabe von Typen, NULL-sichere Variablen und Operatorüberladung.
Kotlin in einem Android Studio Projekt benutzen
Als erstes muss man das Kotlin language support plugin für IntelliJ bzw. Android Studio installieren. Dazu wählt man in den Preferences den Punkt Plugins aus und klickt auf Browse Repositories. Dort sucht man nach „Kotlin“ und installiert das gefundene Plugin vom Typ „custom languages“.
Als nächstes braucht man das „kotlin-gradle-plugin“. Dazu trägt man in der top-level build.gradle
Datei des Projekts das Plugin als Dependency ein und wendet das Plugin danach gleich an:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:0.10.195"
}
}
apply plugin: "kotlin"
Durch die Interoperabilität zu Java benutzt Kotlin die normalen Bibliotheken aus dem JDK, bringt aber noch seine eigene Laufzeit Bibliothek mit, um einige Klassen zu erweitern. Die fügt man in der build.gradle
Datei des Moduls der App als Dependency hinzu:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile "org.jetbrains.kotlin:kotlin-stdlib:0.10.195"
}
Kotlin bekommt sein eigenes Quellcode-Verzeichnis. Das wird angelegt unter „src/main/kotlin“. Damit Android Studio das Verzeichnis auch erkennt muss es noch in der build.gradle
den Source Sets hinzugefügt werden:
android{
// ....
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
}
Jetzt kann man neuen Code in Kotlin schreiben und dabei auch Klassen aus dem Android SDK benutzen oder auch erweitern. Bestehende Java Klassen kann man automatisch nach Kotlin konvertieren lassen von der IDE. Dazu wählt man unter „Code“ den Befehl „Convert Java File to Kotlin file“. Nach der Konvertierung hat die Datei auch die Endung .kt und die IDE gibt folgenden Hinweis „Kotlin file in Gradle Project should be under source root with name kotlin“ mit der Option die Datei gleich an die richtige Stelle im Projekt zu verschieben.