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