Kotlin如何与Java和JavaScript互操作?

Kotlin网站指出:

Kotlin与Java 100%互操作。

Kotlin是Java的子集/超集吗?

另外该文档指出,Kotlin与JavaScript兼容,所以如何编译以支持两者? Kotlin是像Xamarin这样的跨平台语言吗?

Java插入到Kotlin吗?

Kotlin是一种静态types的编程语言,可以在Java虚拟机上运行,​​也可以编译为JavaScript源代码。

这意味着Kotlin有两个编译器,前者产生可以在JVM中执行的字节码,后者只产生Javascript。

这让Kotlin能够与两种语言互操作。

关于Kotlin和Java

例如,当Java字节码和Kotlin字节码在相同的JVM中运行时,您可以从Kotlin调用Java和/或从Java调用Kotlin 。

从Kotlin调用Java代码并从Java调用Kotlin

Kotlin在设计时考虑到了Java互操作性。 现有的Java代码可以自然地从Kotlin中调用,Kotlin代码也可以顺利地从Java中使用。

零安全和平台types

Java中的任何引用都可能为空,这使得Kotlin对严格的null安全性的要求对于来自Java的对象来说是不切实际的。 Java声明的types在Kotlin中被专门处理,并被称为平台types。 这种types的空检查是放松的,所以它们的安全保证和Java一样

关于Kotlin和Javascript

以同样的方式,当您使用生成Javascript的Kotlin编译器时,您可以让Kotlin与Javascript源代码在同一个JavaScript引擎中一起运行。 所以你可以从Javascript调用Kotlin和/或从Kotlin调用Javascript 。

从Kotlin调用JavaScript

Kotlin被设计用来与Java平台进行简单的互操作。 它将Java类视为Kotlin类,而Java将Kotlin类视为Java类。 但是,JavaScript是一种动态types的语言,这意味着它不会在编译时检查types。 您可以通过动态types自由地与Kotlin的JavaScript对话,但是如果您想要Kotlintypes系统的全部function,则可以为JavaScript库创建Kotlin标头。

从JavaScript调用Kotlin

Kotlin编译器生成可以从JavaScript代码自由使用的常规JavaScript类,函数和属性。 不过,你应该记住一些微妙的东西。 为了防止破坏全局>对象,Kotlin创建一个包含当前模块的所有Kotlin声明的对象。 所以,如果你将模块命名为myModule ,所有>声明都可以通过myModule对象访问JavaScript。

关于你对Xamarin的问题,我只能说Xamarin和Kotlin是两个完全不同的东西。 您可以将Xamarin与Ionic或PhoneGap进行比较,因为它们是可以创建多平台应用程序的产品。

另一方面,Kotlin是一种可编译的语言,可在不同的环境和/或设备上运行您的程序。