1.5 Kotlin与Java的比较
作为面向对象编程时代的明星编程语言,Java在开放的生态环境下,赢得了Oracle、Google、Apache、Eclipse基金会等各大厂商的支持,这些厂商的支持加快了Java生态圈的建设。一时间Java的生态圈异常繁荣,各种优秀的开源框架层出不穷,较为著名的有Spring Boot、Spring Cloud、Hadoop、Spark和Kafka等。
虽然Java的生态圈异常强大,但是作为纯命令式语言时代的产物,Java和当前流行的函数式编程语言相比,在类型、语法与编程范式方面显得越来越落后。所以,寻找一种既可以突破Java的这些局限,又可以与Java和谐共处的语言成为软件行业努力的方向。不过庆幸的是,Java之父詹姆斯·高斯林在创造Java语言时就想到了这些问题,所以在设计之初,就有意将Java语言与运行时环境JVM进行分离。JVM负责与操作系统的交互,屏蔽了具体操作系统的细节,这使得基于JVM开发的系统可以运行在任何操作系统之上。如今众多的新兴语言都运行在JVM上,Groovy、Scala、Kotlin、Clojure算得上是其中的佼佼者。
那么,Kotlin相比Java有哪些优势呢?
•更容易学习:Kotlin是一门具备函数式编程思想的面向对象编程语言,它具有静态编程语言的很多特点,更加容易学习。
•更快的编译速度:第一次编译Kotlin代码时,它需要比Java更长的时间,当使用增量编译的时候,Kotlin则比Java更快。
•性能:由于有着非常相似的字节码结构,因此Kotlin应用程序的运行速度与Java类似。随着Kotlin对内联函数的支持,使用Lambda表达式的代码通常比用Java写的代码运行得更快。
•空指针安全:Kotlin对比于Java的一个优点就是可以有效解决空指针问题,毕竟“价值十亿美元的错误”不是人人都犯得起的。
•跨平台特性:Kotlin除了可以用来开发移动Android App之外,还可以用来进行服务端框架开发和Web浏览器开发。
•与IDE无缝融合:在Google官方发布的Android Studio 3.0上,已经默认集成了Kotlin,对于一些老版本,也可以通过插件的方式来集成Kotlin。所以,使用JetBrains提供的IDE,可以为Kotlin开发提供较好的环境支持。
当然,除了上面提到的一些优势之外,Kotlin还具有很多现代静态编程语言的编程特点,如类型推断、多范式支持、可空性表达、扩展函数、DSL支持等,而这些功能Java在最近的版本才陆续添加。
另外,对于Android开发来说,Kotlin还提供了Kotlin Android扩展和Anko库。其中,Kotlin Android扩展是编译器扩展,可以让开发者摆脱代码中繁杂的findViewById() 调用并将其替换为合成的编译器生成的属性。Anko是JetBrains开发的围绕Android API的包装器库,目的是替代传统XML方式构建UI布局。