infinite state machine

Kotlin in Android Studio

Introduction

user

Franziska Neumeister

Hat "Media Systems" studiert, entwickelt mobile Apps und will wissen, ob Androiden auch von elektrischen Schafen träumen


LATEST POSTS

Multithreading mit RxJava 18th April, 2016

Testbaren Code schreiben (Teil 1) 23rd April, 2015

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 Typkonvertierungoptionale 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“.
kotlin-plugin

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.

profile

Franziska Neumeister

Hat "Media Systems" studiert, entwickelt mobile Apps und will wissen, ob Androiden auch von elektrischen Schafen träumen

Navigation