Kotlin 作为粘合剂:与 Java、Python、C 和 JS 的集成

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Kotlin 并非孤立存在:为何以及如何与其他语言协作

\n\n

想象一下:您正在使用 Kotlin 编写代码——一种现代、简洁且安全的语言。但您的项目并非从零开始。在系统的某个角落,存在着基于 Java 的遗留代码,分析人员需要 Python 库,而底层操作则需要 C 语言。或者,您希望在前端复用用 Kotlin 编写的业务逻辑,但那里却是 JavaScript 的天下。

\n\n

好消息是:Kotlin 与其他语言的集成 并非痛苦,而是一种超能力。Kotlin 被设计成一种“胶水语言”。它可以在 JVM 上运行(与 Java 并肩),可以编译成本地代码(Kotlin/Native),甚至可以编译成 JavaScript(Kotlin/JS)。

\n\n

在本文中,我们将通过实际示例,剖析 Kotlin 与其他语言交互 的四个关键场景。您将了解如何从 Kotlin 调用 Python、如何通过 JNI 嵌入 C 代码、如何与 Java 无缝协作,甚至如何在前端使用 Kotlin。让我们开始吧!

\n\n

1. Kotlin 和 Java:从第一行代码就血脉相连

\n\n

最显而易见且最简单的场景是 Kotlin Java 互操作。由于 Kotlin 编译为 JVM 字节码,它与 Java 100% 兼容。您可以从 Kotlin 调用任何 Java 代码,反之亦然——无需桥梁、适配器,也无需痛苦。

\n\n

如何从 Kotlin 调用 Java

\n

假设您有一个用于处理日期的旧 Java 类:

\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

在 Kotlin 中,您可以像使用原生类一样使用它:

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

一切“开箱即用”。但有一个注意事项:null 安全性。Java 不了解 Kotlin 的可空类型,因此在调用 Java 方法时,Kotlin 会将返回值视为 平台类型(例如 String!)。建议:始终显式指定类型,或明智地使用 !! / ?.。

\n\n

如何从 Java 调用 Kotlin

\n

反向兼容性同样存在。假设您有一个 Kotlin 文件:

\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

从 Java 中这样调用:

\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

关键是不要忘记为静态方法添加 @JvmStatic 注解,以及使用 @JvmName 来解决名称冲突。Kotlin 与 Java 的集成 如此紧密,以至于您可以在同一个项目中混合使用这两种语言——这是 Android 开发和许多基于 Spring 的后端项目的标准做法。

\n\n

2. Kotlin 和 Python:两个世界,同一个 JVM(以及 GraalVM)

\n\n

这就更有趣了。Kotlin Python 并非最平凡的组合,但它是可行的。虽然没有直接的本地桥梁,但我们可以使用基于 JVM 的解决方案。

\n\n

方案 A:GraalVM——在 JVM 上运行 Python

\n

GraalVM 是一种虚拟机,能够在同一个进程中运行多种语言(Java、Kotlin、JavaScript、Python、Ruby)。这是 Kotlin 与 Python 集成 的理想工具。

\n\n

安装 GraalVM 并添加 Python 支持:

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

现在,可以在 Kotlin 代码中调用 Python 函数:

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

博客

书籍推荐