学!
本文:https://www.jianshu.com/p/e3afe651052b
前言
闲来无聊,和一个朋友聊天。 他突然问我:你知道Kotlin和Java为啥可以混合开发相互调用么? 我:???!!! 我:我还真没怎么想过,为啥呀? 他:你猜~ 我:呵呵哒。 他:[摊手] 我要是知道就不问你了。。。 我:哈哈,得了,一块探索吧。
Kotlin
Kotlin 到底是什么? 它本身就是一种针对Java平台的新编程语言。 Kotlin简洁、安全、务实,并且专注于与Java代码的互操作性。 它几乎可以用在现在Java使用的任何地方:服务器端开发、Android应用,等等。 Kotlin可以很好的和所有现存的Java库和框架一起工作,而且性能水平和Java旗鼓相当。 — 引自《Kotlin in Action》
我们知道Kotlin和Java同属静态类型的编程语言,而且同样都是基于JVM的静态编程语言,所以很多东西都是在编译期确定的。他们最终都会被对应编译器编译成JVM执行的字节码文件。 从最终产物的角度讲,他们其实是一样的,更别提Kotlin本身就是针对Java平台的一种新编程语言。而互操作性,就得看编译器都做了哪些更多的工作了。
互操作性
关于互操作性 与其它一些JVM语言不同,Kotlin在互操作性上更上一层楼,让Java代码也可以毫不费力的调用Kotlin的代码。Kotlin的类和方法可以像常规的Java类和方法一样被调用。 另一个Kotlin专注于互操作性的领域是在最大程度上使用现有的Java库。例如,Kotlin没有自己的集合库,它完全依赖Java标准库中的类,使用额外的函数来扩展它们,让他们在Kotlin中用起来更方便,这意味着在Kotlin中调用Java API时,永远不需要包装或者转换这些Java对象,反之亦然。 Kotlin工具也对跨语言项目提供了全面支持。它可以编译任意混合的Java和Kotlin源码,不管它们之间时怎样相互依赖的。
Kotlin编译器会分析源代码并生成.class 文件,这和Java编译器做的没什么不同。
总结
因为资料确实不算多,稍后有对应资料后会再补充下。 如果您有更好的理解,也期待您的指导和评论。
- 二者均为JVM的静态编程语言,最终产物都是JVM执行的字节码文件
- Kotlin本身就是针对于Java平台的新编程语言,虽然也支持了多平台的使用,如iOS等,但是与Java的互操作性更好
- Kotlin最大程度的使用Java现有的库,只是用额外的函数去扩展他们,这样在交互中就不需要额外的包装和转换,互操作性更好。
- 编译器也支持混合开发的二者编译问题。
参考文献
Kotlinlang.org 《Kotlin in Action》
|