Kotlin als Klebstoff: Integration mit Java, Python, C und JS

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Kotlin lebt nicht im Vakuum: Warum und wie man sich mit anderen Sprachen anfreundet

\n\n

Stellen Sie sich vor: Sie schreiben in Kotlin – einer modernen, prägnanten und sicheren Sprache. Aber Ihr Projekt ist kein unbeschriebenes Blatt. Irgendwo in den Tiefen des Systems lebt Legacy-Code in Java, die Analysten brauchen eine Bibliothek in Python, und für Low-Level-Operationen wird C benötigt. Oder Sie möchten Geschäftslogik im Frontend wiederverwenden, indem Sie sie in Kotlin schreiben, aber dort regiert JavaScript.

\n\n

Die gute Nachricht: Integration von Kotlin mit anderen Sprachen ist kein Schmerz, sondern eine Superkraft. Kotlin ist so konzipiert, dass es eine "Klebstoff-Sprache" ist. Es kann auf der JVM (neben Java) arbeiten, in nativen Code (Kotlin/Native) und sogar in JavaScript (Kotlin/JS) kompilieren.

\n\n

In diesem Artikel werden wir vier Schlüsselszenarien der Interaktion von Kotlin mit anderen Sprachen anhand praktischer Beispiele durchgehen. Sie erfahren, wie Sie Python aus Kotlin aufrufen, C-Code über JNI einbetten, nahtlos mit Java arbeiten und Kotlin sogar im Frontend einsetzen können. Los geht's!

\n\n

1. Kotlin und Java: Seelenverwandte von der ersten Zeile an

\n\n

Das offensichtlichste und einfachste Szenario ist die Kotlin Java Interaktion. Da Kotlin in JVM-Bytecode kompiliert wird, ist es zu 100% mit Java kompatibel. Sie können jeden Java-Code aus Kotlin aufrufen und umgekehrt – ohne Brücken, Adapter und Schmerz.

\n\n

Wie man Java aus Kotlin aufruft

\n

Angenommen, Sie haben eine alte Java-Klasse für die Arbeit mit Daten:

\n\n
// Java: DateUtils.java\npublic class DateUtils {\n    public static String formatDate(long timestamp) {\n        return new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date(timestamp));\n    }\n}\n
\n\n

In Kotlin verwenden Sie sie wie eine eigene:

\n\n
// Kotlin\nfun main() {\n    val formatted = DateUtils.formatDate(System.currentTimeMillis())\n    println("Heute: $formatted") // Heute: 2025-04-03\n}\n
\n\n

Alles funktioniert "out of the box". Aber es gibt Nuancen: null-Sicherheit. Java kennt keine nullable-Typen von Kotlin, daher behandelt Kotlin beim Aufruf von Java-Methoden die Rückgabewerte als Plattformtypen (z.B. String!). Tipp: Geben Sie immer explizit den Typ an oder verwenden Sie !! / ?. mit Bedacht.

\n\n

Wie man Kotlin aus Java aufruft

\n

Die Rückwärtskompatibilität ist ebenfalls gegeben. Nehmen wir an, Sie haben eine Kotlin-Datei:

\n\n
// Kotlin: Calculator.kt\npackage utils\n\nobject Calculator {\n    @JvmStatic\n    fun sum(a: Int, b: Int): Int = a + b\n}\n
\n\n

Aus Java rufen wir so auf:

\n\n
// Java\nimport utils.Calculator;\n\npublic class Main {\n    public static void main(String[] args) {\n        int result = Calculator.sum(5, 3);\n        System.out.println(result); // 8\n    }\n}\n
\n\n

Wichtig ist, die Annotation @JvmStatic für statische Methoden und @JvmName zur Auflösung von Namenskonflikten nicht zu vergessen. Die Integration von Kotlin mit Java ist so eng, dass Sie beide Sprachen in einem Projekt mischen können – das ist Standard für die Android-Entwicklung und viele Backends auf Spring.

\n\n

2. Kotlin und Python: Zwei Welten, eine JVM (und GraalVM)

\n\n

Das ist schon interessanter. Kotlin Python ist nicht die trivialste Kombination, aber sie ist möglich. Es gibt keine direkte native Brücke, aber wir können JVM-Lösungen nutzen.

\n\n

Variante A: GraalVM – Python auf der JVM ausführen

\n

GraalVM ist eine virtuelle Maschine, die mehrere Sprachen (Java, Kotlin, JavaScript, Python, Ruby) in einem Prozess ausführen kann. Es ist das ideale Werkzeug für die Integration von Kotlin mit Python.

\n\n

Installieren Sie GraalVM und fügen Sie Python-Unterstützung hinzu:

\n\n
gu install python\n
\n\n

Jetzt können Sie in Kotlin-Code Python-Funktionen aufrufen:

\n\n
// Kotlin (GraalVM Polyglot API)\nimport org.graalvm.polyglot.*\n\nfun main() {\n    val context = Context.create("python")\n    // Ausf                

Blogs

Buchempfehlungen