Kotlin核心编程:Kotlin,改良的Java
极客时间编辑部
讲述:丁婵大小:7.88M时长:05:44
你好,欢迎收听极客视点。
2010 年,JetBrains 产生创造 Kotlin 的想法。JetBrains 团队设计 Kotlin 所要面临的第一个问题,就是必须兼容他们所拥有的数百万行 Java 代码库,这个背景也决定了 Kotlin 的核心目标——为 Java 程序员提供一门更好的编程语言。那么,Kotlin 到底做了什么?我们能用它做什么呢?《Kotlin 核心编程》一书中的内容很好的解释了这两个问题,如下。
Kotlin 的实用主义
Kotlin 常常被认为是一门近似于 Scala 的语言。的确,它们的诞生都源于对 Java 语言的改良,同时都在面向对象和函数式之间建立起了多范式的桥梁。不可否认的是,Kotlin 确实从 Scala 身上借鉴了许多。
然而,Kotlin 与 Scala 的设计哲学又十分不同。Kotlin 并没有像 Scala 那样热衷于编程语言本身的研究和探索。相反,它在解放 Java 的同时,又在语言特性的选择上表现得相当克制。
相较于 Scala,Kotlin 更加立足现实,它现阶段仍没有宏,也拒绝了很多所谓的高级函数式语言特性。但它在 Java 的基础上发展出很多改善生产力的语言特性,如数据类、when 表达式(一定程度上的模式匹配)、扩展函数(和属性)、可空类型等,而且它似乎偏好语法糖,比如 Smart Casts,因为这可以让编程人员的工程开发变得更加容易。
可以看出,Kotlin 的自我定位非常清晰,它的目标就是在计算机应用领域成为一门实用且高效的编程语言。如果说 Scala 的设计理念是 more than Java(不仅仅是 Java),那么 Kotlin 才是一门真正意义上的 better Java(更好的 Java)。
更好的 Java
如果你用 Kotlin 开发过业务,很快就会意识到它相较于 Java 的语法更加简洁、高效。比如 Kotlin 做了这些改良:
在很大程度上实现了类型推导,而 Java 在 SE 10 才支持了局部变量的推导。
放弃了 static 关键字,但又引入了 object,可以直接用它来声明一个单例。而作为比较,Java 则必须依靠构建所谓的“单例模式”才能等效表达。
引入了一些在 Java 中没有的“特殊类”,比如 Data Classes(数据类)、Sealed Classes(密封类),我们可以构建更深程度上的代数数据类型,结合 when 表达式来使用。
但可能你会问,以上 Kotlin 的特性,Scala 也有,能否可以说前者只是后者的一个子集呢?这种表述其实是不恰当的。其实,Kotlin 在致力于成为更好的 Java 的道路上,不仅仅依靠这些新增的语言特性,它在兼容 Java 方面做了大量的工作,比 Scala 走得更远。
首先,从语言命名上就可以看出 Kotlin 在严格遵循 Java 的传统,它们都采用了岛屿的名字。Java 的名字来源于印度尼西亚爪哇岛的英文名称,而 Kotlin 是俄罗斯圣彼得堡附近的一个岛屿的名字。
其次,虽然都是兼容 Java,Scala(最近的几个版本)必须要求 Java 8,而 Kotlin 则可以与 Java 6 一起工作,这也是后者在 Android 上更加流行的原因之一。
另外,Kotlin 并没有像 Scala 那样在语法的探索上表现得“随心所欲”,Java 程序员在学习 Kotlin 新语法特性的同时,依旧可以保留更多原有的习惯。
由于 Kotlin 比 Scala 更加兼容 Java 的生态和语法,Java 程序员可以更加容易地掌握它。同时,Kotlin 非常注重语法的简洁表达。如果你了解 Scala 中的 implicit,可能曾被这个 Scala 的语法惊吓到,因为它非常强大。
然而,正如我们提到的,“简单灵活”的另一面意味着抽象和晦涩。Kotlin 注重的是工程的实用性,所以它创造了扩展的语法,虽然相比 implicit 在功能上有损失,但显得更加具体直观,且依旧非常强大,可满足日常开发中绝大多数的需求。值得一提的是,Android 则依靠这个 Java 所没有的特性,推出了扩展库 android-ktx。
总体而言,Kotlin 旨在成为一门提升 Java 生产力的更好的编程语言,它拥有简洁的表达能力、强大的工具支持,同时至今仍然保持着非常快速的编译能力。相较而言,用 Scala 开发则常常受到编译过慢带来的困扰。
强大的生态
关于 Kotlin,还有一个问题需要解答:我们究竟可以用它来做什么?你可能是因为 Kotlin 成为 Android 官方支持语言的新闻而知晓它的。事实上,Kotlin 不仅支持 Android,它还是一门通用语言,如果用一句话来总结,那就是“Targeting JVM / JavaScript and Native”。现阶段,我们至少可以用 Kotlin 做以下的事情:
Android 开发
服务端开发
前端开发
原生环境开发
此外,Kotlin 还是一门非常开放、具有强大生态的编程语言。如果说与 Java 兼容能让它运行在所有支持 Java 的地方,那么它的革命创新使得它超越了 Java,进入了更加广阔的世界。
以上就是今天的内容,希望对你有所帮助。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(1)
- 最新
- 精选
- 丁丁历险记服务器端开发还是交给go 吧
收起评论