Kotlin如何与Java和JavaScript互操作?

Kotlin网站指出:

Kotlin与Java 100%互操作。

Kotlin是Java的子集/超集吗?

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

Java插入到Kotlin吗?

Kotlin是一种静态类型的编程语言,可以在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中使用。

零安全和平台类型

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

关于Kotlin和Javascript

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

从Kotlin调用JavaScript

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

从JavaScript调用Kotlin

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

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

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