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是一种可编译的语言,可在不同的环境和/或设备上运行您的程序。
- Java类名中的Kotlin中的静态常量
- 如何在Kotlin中创建一个在类上运行的扩展函数?
- Lwjgl 3,如何获取当前线程中的OpenGL上下文?
- 试图编写高效的代码来使用Kotlin更新背景颜色
- LibGDX:其他库不工作?
- Kotlin:unit testing期间@JvmStatic方法NoClassDefFoundError / ClassNotFoundException
- Java – 在不允许使用@NotNull或@Nullable注释的情况下,在编译时检测NPE的最佳方法
- Android N Java 8function(Jack编译器)和Kotlin互操作
- 不能用Mockito 2来嘲笑最终的Kotlin课堂