学!

本文:https://www.jianshu.com/p/e3afe651052b

文章目录

  • 前言
  • Kotlin
  • 互操作性
  • 总结
  • 参考文献

前言

闲来无聊,和一个朋友聊天。
他突然问我:你知道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》

Kotlin 为什么可以和Java混合开发相关推荐

  1. 入门 Kotlin 和 Java 混合开发

    一.前沿 如果你学习过其他的编程语言,你就会发现 Java 的语法很是哆嗦,可是我们为什么没有放弃 Java 这门编程语言呢?因为 JVM 是一个非常好的平台,而且 Java 程序员目前在中国所占的比 ...

  2. Kotlin和Java混合开发总结(基于Kotlin1.3.0版本)

    我本来是不想学习kotlin的,但是现在的形势,很多公司都在使用kotlin开发,可以说学会kotlin也是无奈之举,既然是潮流,谷歌也在大力推广,所以还是只能硬着头皮逼迫自己学一下,也能更快适应公司 ...

  3. Kotlin和java混合开发

    Kotlin和java混合开发 kotlin继承Java的方法 调用java的方法,参数最好用可空类型,除非明确java的参数是非空 而java代码如果需要可空 可以通过@Nullable 需要不可空 ...

  4. kotlin与java混合开发_使用kotlin和Java混合开发Android项目爬坑记录

    使用kotlin和Java混合开发Android项目爬坑记录 不定期将开发过程中遇到的问题添加在此处,加深记忆. 主要内容包括但不限于java与kotlin语言的一些区别,以及在使用android-s ...

  5. java scala 混合打包_scala和java混合开发打包

    如何进行scala和java混合开发打包? 首先创建maven工程,在pom.xml添加一下依赖 1.8 UTF-8 3.8.1 1.6.4 3.1 2.11.8 2.3.2 org.scala-la ...

  6. Android开发之Java和Kotlin混合开发互相跳转报错的问题

    老套路报错如下: 关于这个错误我检查了不知道多少遍了,包路径啥的XML配置也都是没问题.我思来想去最后发现是Kotlin环境的问题: 我的项目是个Java版本的项目,然后再Java项目里面新建的Kot ...

  7. 《Kotlin从小白到大牛》第21章:Kotlin与Java混合编程

    第21章 Kotlin与Java混合编程 Kotlin毕竟还是一种新的语言,所以很多项目.组件和框架还是用Java开发的,目前Kotlin不能完全取代Java,因此有时会使用Kotlin调用Java写 ...

  8. 为什么 Java 后端开发没有大规模采用 Kotlin?

    点击关注公众号,Java干货及时送达 转自:InfoQ 作者:Ivan Sanchez,  译者:王者 链接:www.infoq.cn/article/dSSYAFSMMxx1sZkJwrN2 在使用 ...

  9. 《Springboot极简教程》Springboot使用Kotlin和Java混合编程

    配置 要想实现Springboot使用Kotlin和Java混合编程,需要使用kotlin插件: spring-boot-gradle-plugin kotlin-gradle-plugin 具体配置 ...

最新文章

  1. 一键安装lamp系统
  2. 想让论文能发表,应该星期几投稿?丨SCI研究
  3. SAP批次管理由物料级别转换到工厂级别的方法
  4. ubuntu19.10锁屏时间调节
  5. 会议交流 | CAAI BDSC2021大会专题七:社会计算与开放知识图谱
  6. word 代码块_如何优雅的写好 Pythonic 代码?
  7. ASP.NET Core 2.1:将VMD.RESTApiResponseWrapper.Core集成到REST API应用程序
  8. 第 10 章 桥接模式
  9. 计信院计算机英语期末考试,计算机英语考试题two
  10. python如何跳出函数_python如何跳出函数
  11. JAVA刷视频代码,Java+adb命令实现自动刷视频脚本
  12. mac上php的集成环境
  13. [HNOI2019]鱼
  14. 总是过目即忘,试试建立知识库吧
  15. Kinect v2.0原理介绍之十三:面部帧获取
  16. 基于asp.net742自驾游旅游服务网站的设计
  17. 项目管理必备工具——甘特图
  18. 博客园自定义(全部样式分享)
  19. cup过高是什么意思_cpu占用率过高是什么原因
  20. CSS滤镜和精灵技术

热门文章

  1. activity表结构详解
  2. npm install10054问题
  3. MacBook使用技巧:苹果笔记本的PrintScreen截屏快捷键使用方法
  4. DTOJ2548 翻转硬币
  5. 零基础CTF入门指南+工具
  6. 懒人必备公式快速插入word(latexocr+TyporaMathtype)保姆集教程
  7. 第十八届全国大学生智能汽车竞赛 智能视觉组比赛细则补充规定
  8. Java基础篇:什么是平台无关性
  9. 36 Oracle深度学习笔记 SLOB 工具使用
  10. Android入门教程三之使用Eclipse+ADT+SDK开发安卓APP