Alexander Hanschke techdev Solutions GmbH

Ein Wechsel von Java nach Kotlin ist ohne Weiteres möglich. Existiert bereits eine bestehende Codebasis, kann sie nach und nach migriert werden.

Kotlin und Java können ohne Probleme zusammen verwendet werden. Dennoch gibt es gerade in Kotlin einige Sprachelemente, die sich nicht eins zu eins nach Java übersetzen lassen. Der Artikel geht auf die Unterschiede in den verschiedenen Bereichen ein und zeigt in neun Lektionen, worauf bei der Verwendung von beiden Sprachen zu achten ist.

Wir gehen von einem bestehenden Java-Projekt auf Basis von Gradle aus, das um Kotlin-Code erweitert werden soll. Das Projekt folgt der von Maven und Gradle bekannten Struktur. Unter src/main/java liegen die Java-Quelldateien. Unterhalb des Pakets de.techdev existiert eine Klasse App. Wie von Java gefordert, bildet die Verzeichnisstruktur die Paketstruktur direkt nach. Das heißt, die Datei App.java ist im Dateisystem in dem Ordner src/main/java/de/techdev zu finden. Um unserem Projekt nun Kotlin hinzuzufügen, passen wir die Build-Datei an, wie in Listing 1 dargestellt:

group 'de.techdev'
version '1.0.0'

buildscript {
  ext.kotlin_version = '1.0.5-2'

  repositories {
    jcenter()
  }

  dependencies {
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
  }
}

apply plugin: 'java' 
apply plugin: 'kotlin'

repositories {
  jcenter()
}

dependencies {
  compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}

Die Kotlin-Standardbibliothek wird einfach als Abhängigkeit definiert. Zusätzlich verwenden wir das Kotlin-Gradle-Plug-in, das sich um das Kompilieren der Quelldateien und Module kümmert. Um zu testen, ob alles funktioniert, legen wir zuerst eine Datei scratchpad.kt mit der Funktion main an. Analog zu den Java-Quellcodedateien erzeugen wir den Ordner src/main/kotlin für den Kotlin-Quellcode. Das Paket de.techdev behalten wir bei und erstellen die Datei mit der globalen Funktion main, wie im folgenden Listing dargestellt:

fun main(args: Array) {
  println(args.joinToString())
}

Wie zuvor haben wir die Dateien analog zu ihrer Organisation im Verzeichnis abgelegt. Das ist in Kotlin aber gar nicht zwingend nötig. Anders als Java verwendet Kotlin Pakete nicht für die Zugriffskontrolle, sondern zur Vergabe von Namensräumen. Wir könnten das Paket auch ebenso de.techdev.foo nennen, ohne die Struktur anzupassen. Das erzeugt zwar eine Warnung der IDE, der Code kompiliert aber dennoch. In der Regel empfiehlt es sich aber, die Pakete analog zur Verzeichnisstruktur anzulegen. Gerade bei einer Migration bestehender Java-Projekt hin zu Kotlin kann das andernfalls für unangenehme Überraschungen sorgen.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 3.17 - "Kotlin"

Alle Infos zum Heft
579765751Unterschiede unter Freunden: Java und Kotlin
X
- Gib Deinen Standort ein -
- or -