Kotlin网站声明:
Kotlin与Java 100%可互操作。
Kotlin是Java的子集/超集吗?
此外,文档还指出Kotlin与JavaScript兼容,那么如何编译它以支持两者? Kotlin是一种像Xamarin一样的跨平台语言吗?
Java是否插回到Kotlin?
答案 0 :(得分:8)
Kotlin是一种静态类型的编程语言 Java虚拟机也可以编译为JavaScript源代码 代码。
这意味着Kotlin有两个编译器,前者生成可以在JVM中执行的字节码,后者只生成Javascript。
这使得Kotlin可以与这两种语言互操作。
例如,当Java字节码和Kotlin字节码在同一个JVM中运行时,您可以call Java from Kotlin和/或call Kotlin from Java。
Calling Java code from Kotlin和Calling Kotlin from Java
Kotlin在设计时充分考虑了Java互操作性。现有的Java 代码可以从Kotlin以自然方式调用,而Kotlin代码可以 也可以从Java中使用。
零安全和平台类型
Java中的任何引用都可能为null,这就是Kotlin的要求 对于来自Java的对象,严格的null安全性是不切实际的。类型 Java声明在Kotlin中被特别处理并被调用 平台类型。对于这些类型,放宽空检查,以确保安全 对它们的保证与Java相同
以同样的方式,当您使用生成Javascript的Kotlin编译器时,您可以让Kotlin与Javascript源一起运行在同一JavaScript engine中。 所以你可以call Kotlin from Javascript和/或call Javascript from Kotlin。
<强> Calling JavaScript from Kotlin 强>
Kotlin旨在与Java平台轻松互操作。它 将Java类视为Kotlin类,Java将Kotlin类视为 Java类。但是,JavaScript是一种动态类型语言, 这意味着它不会在编译时检查类型。你可以自由地 通过动态与Kotlin的JavaScript交谈 类型,但如果你想要Kotlin型系统的全部功能,你可以 为JavaScript库创建Kotlin头文件。
<强> Calling Kotlin from JavaScript 强>
Kotlin编译器生成普通的JavaScript类,函数和 您可以从JavaScript代码中自由使用的属性。尽管如此, 你应该记住一些微妙的事情。为防止破坏全局&gt;对象,Kotlin创建一个包含所有Kotlin声明的对象 来自当前的模块。因此,如果您将模块命名为
myModule
,则所有&gt;声明可供JavaScript使用 通过myModule
对象。
关于你关于Xamarin的问题我只会说Xamarin和Kotlin是两个完全不同的东西。您可以将Xamarin与Ionic或PhoneGap进行比较,因为它们是可以让您创建多平台应用程序的产品。
另一方面,Kotlin是一种语言,您可以编译该语言以在不同的环境和/或设备上运行您的程序。