Kotlin:比 Java 做得更好

管理员账号

2018-03-09

这几年互联网领域先后经历了几次大革命,包括物联网、大数据、云计算等,如今则处于人工智能的火热时代。伴随其中的一个重要的编程语言便是Java。

(Java口号“一次编写,到处运行”)

Java由于其强大的跨平台(主要指操作系统)能力,而备受各种中间件组件开发人员的钟爱。而Java之所以能够跨平台,主要归功于JVM虚拟机。

在Java刚推出来的几年里,由于JVM的性能低下,导致不太被认可。

但是后来随着各种黑科技的引入,例如:

JIT即时编译

基于Java字节码的栈顶缓存技术

垃圾回收算法的改进

JDK高性能类库

JVM的性能得到长足改进和飞速提升,早已今非昔比,在部分场景下甚至比C/C++的性能还要高。

(Top 10 编程语言 TIOBE 指数走势)

人们再也没有任何理由拒绝使用Java,所以Java得到了飞速发展,多年来稳居服务端应用编程语言使用率第一的宝座。

(Top 5 编程语言 近20年排位)

同时,JVM是一个开源的产品,在统一的技术规范下,不对实现做任何约束。因此各种基于JVM规范的编程语言也得以被发明出来,例如Scala、Clojure、Groovy等,甚至PHP、Ruby等程序也可以转换到JVM规范。

(基于JVM规范的编程语言占比)

虽然Java与JVM在最近这些年取得了巨大的成功,但是也并非没有缺点。


例如Java是一种严格的面向对象设计的编程语言,一切编程要素都被严格编写在Java类型内部,你不可能像C语言那样,直接在源程序中定义一个函数。这种完全的面向对象设计的特性也给Java自己造成了很多不便,例如无法对底层类库进行扩展,除非你去继承并实现一个新的类型。

同时,Java编程语言的语法太过于严格和死板,不像很多其他编程语言那样,有不少让人心动的功能特性,这种死板和严格往往会造成工作效率的低下。

于是,Kotlin诞生了。

2017 年度的 Google I/O 上的重磅消息相信大家都知道,Kotlin 正式成为了官方的 Android 开发语言。该消息迅速占据了国内各大技术媒体的头条。

同时,谷歌技术大牛 Steve Yegge在 Hacker News写了一篇关于 Kotlin 的使用体会总结文章《Kotlin is better》在首页引发了热烈讨论。

Kotlin带给Steve Yegge的体验与所有实践过它的开发者相同:它的发明者 JetBrains 所言非虚,这是一门简洁、安全、实用的语言,用了就停不下来,就忍不住地想推荐给周围的人。

(务实、简洁、安全与互操作性正是Kotlin设计哲学)

虽然Kotlin底层仍然基于JVM虚拟机,但随着对Kotlin特性了解的加深,你会越来越发现Kotlin真的不是随随便便搞出来的一个全新的编程语言。因为这真的是一门融合了众多编程语言特性的编程语言,并且是在不违反JVM规范的基础上,将其他众多语言的特性融入了进来,说其是博采众家之长,一点也不为过。

口碑畅销好书《揭秘Java虚拟机:JVM设计原理与实现》作者封亚飞,将自己对Kotlin语言的透彻理解和分析,以浅显易懂的形式完整地浓缩在新作《揭秘Kotlin编程原理》一书中。

本书主要从封装、继承和多态这三方面介绍Kotlin的面向对象设计的语法特性及其背后的实现方式。

Kotlin保留了Java封装好的一面,勇敢地摒弃了其不好的一面。例如对静态字段和方法的舍弃与变通。而在方法封装上,Kotlin更是玩出了新花样,打破了Java封装的彻底性,让Java开发者可以体验“面向过程”编程的感觉。同时,Kotlin充分吸收其他编程语言中的好的语言特性,提供了诸如VB语言中的“with语法”。

在继承方面,Kotlin也有自己的思考,其综合了Java和C++等面向对象编程语言继承的优缺点,设计出自己的一套独特的继承机制。不过Kotlin依然保留了Java语言中一个类不能同时继承多个类的强制约束。

Kotlin给人最多的惊艳,都集中在“多态”这一领域。其中,最让人惊叹的便是Kotiln提供了这样一种能力:不用修改原有类,也无须通过继承的方式,就能为某个类增加新的行为。虽然Kotlin仅仅是取巧,仅仅实现了一个语法糖的包装,但是这种小的改变却秀出了“美”的新高度。或许,这都不能算是继承,这里姑且将其与继承混为一谈吧。

本书推荐

在《揭秘 Kotlin 编程原理》中,读者不仅能清晰地了解Kotlin的语法、高级特性,还能真正地掌握Kotlin背后的实现机制和设计哲学,形成对Kotlin语言既直观、又深刻的认识——在此基础上,读者能准确、快速地上手实践,大大提升自己的移动开发能力。

例如,Kotlin在不违反JVM规范的基础上,融合了众多编程语言的特性:它打破了Java封闭的彻底性,让开发者可以体验“面向过程”编程的感觉;它充分吸收了其他编辑语言中的好特性,提供了诸如VB语言中的“with语法”……此外,它提供了这样一种能力,不用修改原有类,也无须通过继承的方式,就能为某个类增加新的行为,等等。

Kotlin的这些特性和实现机制,可以帮助开发者扫清开发道路上的一些障碍,让开发变得更加简单!《揭秘Kotlin编程原理》是一本值得拥有,能切实帮助读者加薪提职的好书!

本书获得了诸多业内人士的赞誉

张建锋,永源中间件共同创始人

《揭秘Kotlin编程原理》从语言的本质方面对Kotlin进行了全面讲解,对于学习Kotlin语言的Java开发者,是一本难得的技术书籍。

占军(公众号:占小狼的博客),美团点评基础架构组技术专家

目前市面上还没有见到剖析Kotlin内部机制的著作。本书作者,基于多年来对Java虚拟机的深刻理解,在第一时间研究了Kotlin语言,并将自己对Kotlin的透彻理解条分缕析地分享在这本《揭秘Kotlin编程原理》中:从浅显易懂的入门知识到豁然开朗的原理分析,使读者不仅能够知其然,并且能够知其所以然,从而能得心应手地运用好Kotlin。

骆昊,北京千锋互联(成都)科技有限公司技术总监

《揭秘Kotlin编程原理》对Kotlin的关键语法和核心特性进行了深入的讲解,通过与其他语言(Java、C++)的比较以及直达JVM字节码的分析,为有编程经验尤其是对Java语言有经验的读者迅速掌握Kotlin语言构建了一条快速通道。

本书目录结构
1 快速入门
• 1.1 简介
• 1.2 编写第一个Hello World程序
• 1.3 程序结构
2 基本语法
• 2.1 基本类型
• 2.2 变量与常量
• 2.3 函数
3 封装
• 3.1 构造函数与实例化
• 3.2 内存分配
• 3.3 初始化
• 3.4 类成员变量
• 3.5 数组
• 3.6 静态函数与伴随对象
4 继承
• 4.1 继承基础概念
• 4.2 多重继承
• 4.3 继承初始化
• 4.4 类型转换
5 多态
• 5.1 概念
• 5.2 扩展
• 5.3 操作符重载
• 5.4 指针与传递
6 Kotlin的I/O
• 6.1 Java I/O类库
• 6.2 Kotlin I/O类库
• 6.3 终端I/O
• 6.4 文件I/O
• 6.5 文件压缩示例
• 6.6 序列化
7 Kotlin机制
• 7.1 函数定义
• 7.2 变量与属性
• 7.3 类定义

读者评论

相关博文

  • 社区使用反馈专区

    陈晓猛 2016-10-04

    尊敬的博文视点用户您好: 欢迎您访问本站,您在本站点访问过程中遇到任何问题,均可以在本页留言,我们会根据您的意见和建议,对网站进行不断的优化和改进,给您带来更好的访问体验! 同时,您被采纳的意见和建议,管理员也会赠送您相应的积分...

    陈晓猛 2016-10-04
    2230 392 2 5
  • 迎战“双12”!《Unity3D实战核心技术详解》独家预售开启!

    陈晓猛 2016-12-05

    时隔一周,让大家时刻挂念的《Unity3D实战核心技术详解》终于开放预售啦! 这本书不仅满足了很多年轻人的学习欲望,并且与实际开发相结合,能够解决工作中真实遇到的问题。预售期间优惠多多,实在不容错过! Unity 3D实战核心技术详解 ...

    陈晓猛 2016-12-05
    1839 34 0 1
  • 新书试读员征集

    陈晓猛 2016-12-01

    活动获奖名单公布 恭喜以下10位读者朋友获得本次试读员征集的名额,请私信 陈晓猛 将您的QQ号发给小编,以便加入读者VIP群,给您送出图书! 获奖名单 程续缘 悠悠的一杯茶 313150284@qq.com llaomao 落伍特青年 ...

    陈晓猛 2016-12-01
    663 12 0 0