Kotlin:比 Java 做得更好
这几年互联网领域先后经历了几次大革命,包括物联网、大数据、云计算等,如今则处于人工智能的火热时代。伴随其中的一个重要的编程语言便是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 类定义
Kotlin:比 Java 做得更好相关推荐
- 用Ruby替代Java做rest接口的单元测试!
Ruby早就该代替java做一些更灵活更需要变化的事情了,如果不是公司的java文化根深蒂固,我想...... 下面是我写的用来对Rest接口做的测试套件,同样适用于其他的web接口测试. 用Test ...
- 现在企业编程用java还是python_想转行做程序员,是学习 Java 还是 Python 更好?
只有小孩子才做选择,我都要 我们学习的目的是为了更好的就业,那当然Java就是首先,然后在学Python 下面给你谈谈我为什么建议你先学Java JAVA的市场占有率相当高,因其广泛的应用型和不易出错 ...
- 应届生学C好还是学JAVA好,做什么更挣钱
老师: 你好. 我是一名09界刚毕业工作不久的java菜鸟级程序员.本人对java水平可以混口饭了,现在可以在工作中开发一般的小项目,都是B/S的. 本人基础很烂,基本上:算法 .数据结构.计算机组成 ...
- 【转】应届生学C好还是学JAVA好,做什么更挣钱
老师: 你好. 我是一名09界刚毕业工作不久的java菜鸟级程序员.本人对java水平可以混口饭了,现在可以在工作中开发一般的小项目,都是B/S的. 本人基础很烂,基本上: ...
- Kotlin极简教程:第10章 Kotlin与Java互操作
Kotlin is 100% interoperable with Java™ and Android™ 在前面的章节中,我们已经学习了Kotlin的基础语法.类型系统.泛型与集合类.面向对象与函数式 ...
- Kotlin 与 Java有什么区别(最全最新的)
目录 什么是Kotlin? 什么是Java? 主要区别: Kotlin 的特点 Java的特点 Kotlin 的历史 JAVA的历史 Kotlin 和 Java 的区别 Kotlin 的优势 Java ...
- Kotlin与Java之争
Kotlin \\ Kotlin是一门相对比较新的JVM语言,JetBrains自2011年以来一直在积极地开发. \\ 多年来,该语言在Android社区受到的关注度越来越高,并在Google IO ...
- Kotlin和Java混合开发总结(基于Kotlin1.3.0版本)
我本来是不想学习kotlin的,但是现在的形势,很多公司都在使用kotlin开发,可以说学会kotlin也是无奈之举,既然是潮流,谷歌也在大力推广,所以还是只能硬着头皮逼迫自己学一下,也能更快适应公司 ...
- kotlin和java语言_Kotlin VS Java – 2020年您应该学习哪种编程语言?
kotlin和java语言 It has been several years since Kotlin came out, and it has been doing well. Since it ...
- java:数字转string 报空指针_超干货详解:kotlin(4) java转kotlin潜规则
前言 以一个java老鸟的角度,如何去看 kotlin. Java源代码应该如何用Kotlin重构. 如何正确学习kotlin并且应用到实际开发中.本文将会探究. 本文分两大块,重难点和潜规则. 重难 ...
最新文章
- SAP CRM呼叫中心和Hybris Commerce Backoffice的轮询设计
- 数据结构与算法--二叉查找树实现原理
- win7系统如何取消自动开机
- mips语言实现 f(n) = f(n-1) + 2*f(n-2) + 3*f(n-3)
- 用SpringGraph制作拓扑图和关系图
- eclipse lombok插件安装_Eclipse安装virgo插件
- Linux:VMware Tools安装方法及共享文件夹设置方法
- 论文笔记_S2D.50_Kimera 具有结构规律的增量视觉-惯性三维网格生成
- MADlib——基于SQL的数据挖掘解决方案(7)——数据转换之其它转换
- 珠玉落盘【珠盘玉落】
- Matlab实现图像简单的几何校正
- java跑p_javap使用
- 微信小程序实现身份证识别-ocr
- win7电脑右键菜单选项的顺序怎么调整
- Python实现京东抢秒杀
- 兔斯基QQ表情全集GIF篇下载(到8月2日)234整理
- SDNUOJ 1058 人名查询 (练习map的用法)
- 广东计算机学会 信息学省初赛,广东CCF NOIP2019信息学竞赛复赛提高组一等奖获奖名单...
- php微信支付判断是否成功,微信支付,大家是通过什么来进行判断支付成功的
- QQ新功能,申请专属QQ号,申请QID教程