轨范员为什么运用Kotlin?_措辞_函数
如今,在软件开拓领域,除了现在比较热门的人工智能技能和大数据技能之外,移动开拓依然是受到大家关注的领域分支,而移动开拓中非常主要的一门技能便是Android开拓。Java作为Android开拓的官方标准措辞,其语法的设计思想还勾留在纯命令式措辞时期,在函数式措辞的大背景下,Java显得有点后进。虽然随着Java 8和Java 9版本的发布,Java也在向函数式措辞靠近,但是Java 8和Java 9的市场份额并不高,很多项目还勾留在Java 6的时期。特殊是对付Android开拓者来说,想体验函数式编程的上风彷佛太过迢遥。以是,利用Kotlin成为一个不错的选择。
作为一款明星措辞,在被Android官方宣告为支持措辞之前,Kotlin早已是Android开拓中的热门话题了,很多开源的项目都利用Kotlin开拓。也正是基于这些缘故原由,在2017年的Google I/O大会上,Google将Kotlin列为Android开拓的官方支持措辞。在最近TIOBE的热门编程措辞排行榜中,它一度进入编程措辞前50名,在Github上也得到了很高的关注度。相信随着版本的持续发布和性能的优化,Kotlin一定会走得更远。
在创造Kotlin的过程中,其作者从很多编程措辞那里得到了灵感,比如Java、Scala、Groovy,可以说是博采众长。利用Kotlin编写程序,不仅编译运行速率快,而且实现相同功能的代码量远远小于Java。
利用Kotlin紧张有以下上风。
1.跨平台开拓能力
由于Kotlin是基于JVM开拓的,以是它同时具备了Android 开拓、Web浏览器开拓和原生Native开拓的能力。在原生Native开拓方面,目前Kotlin官方在Github上开源了Native的源码。在Web开拓方面,Kotlin可以结合Spring框架利用,也可以编译天生JavaScript模块,便于在一些JavaScript的虚拟机上编译运行。
2.开源
20世纪80年代,自由软件运动拉开序幕,开源软件为软件行业的快速发展供应了源源不断的动力。众人拾柴火焰高,对付一门新技能、新措辞,开源可以帮助开拓者更快速地创造Bug,从而利用开源的力量更快地推动新技能的发展。在开源领域方面,Java便是一个很好的例子,从措辞标准到Core API、虚拟机、开拓者工具,都能找到开放的影子。
3.空指针安全
在利用Java编程的过程中,大家聊得最多的话题莫过于如何避免空指针非常(NullPointerException)。针对空指针问题,Kotlin有专门的语法来避免。
4.完备兼容Java
Kotlin能够和Java达到100%互通,也便是说,利用Kotlin,依旧可以调用 Java已有的代码或库,也可以同时利用Java和Kotlin来稠浊编写代码。同时,为了方便项目的过渡,JetBrains供应的开拓工具可以很大略地实现Java代码到Kotlin的转换。
5.措辞简洁,学习本钱低
Kotlin语法简洁直不雅观,看上去非常像Scala,但更大略易学。同时,Kotlin利用了大量的语法糖,使得代码更加简洁。Kotlin并不遵照特定的编程规范,它借鉴了函数式风格和面向工具风格的诸多优点。
6.支持Lambda表达式
函数式编程是软件技能的发展方向,而Lambda是函数式编程的根本内容,因此,在Java 8版本中加入Lambda表达式本身是符合技能发展方向的。引入Lambda,一个直不雅观的改进是,不用再写大量的匿名内部类。事实上,还有更多由函数式编程本身特性带来的性能。比如,代码的可读性会更好、高阶函数引入了函数组合的观点等。
除此之外,由于Lambda的引入,凑集操作也得到了极大的改进,比如引入Stream API,把map、reduce、filter这样的基本函数式编程观点与Java凑集结合起来。在大多数情形下,Java程序员在处理凑集时,可以告别繁杂的for、while、if等逻辑语句。
不过,利用Lambda表达式并非只有好处,根据C#之父Anders Hejlsberg所说,未来的编程措辞将逐渐领悟各自的特性,而不会只存在纯挚的声明式措辞或者函数编程措辞。
7.类型推断
利用Kotlin编程,开拓职员不必为每个变量明确指定类型,编译器可以在编译的时候推导出某个参数的数据类型,从而使得代码更为简洁。Java在Java 8版本中也推出这一功能。
8.支持自定义的DSL
DSL(Domain-Specific Language),中文含义是领域特定措辞,指的是专注于特定问题领域的打算机措辞。不同于通用的打算机措辞,领域特定措辞只用于某些特定的领域。
DSL措辞能让开发者以一种更优雅、更简洁的办法来表达和解决领域问题。例如,Gradle便是一种用Groovy定义的DSL。Kotlin的Lambda系统使其成为创建DSL的空想选择。
9.IDE环境的支持
作为JetBrains旗下的产品,JetBrains旗下浩瀚的IDE可以为Kotlin开拓供应无缝支持,并相互协作,协同发展。
可以用图1-7来大致总结Kotlin的紧张上风。
图1-7 利用Kotlin的紧张上风
正是由于Kotlin的这些上风,在2017年的Google I/O大会上,Google将Kotlin列为Android开拓的第一措辞。在旧金山举行的第一届Kotlin专题会议上,Kotlin官方宣告将会在1.2版本中添加支持iOS开拓的功能。这难道是要成为全栈措辞的节奏吗?
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布局。
本文系作者个人观点,不代表本站立场,转载请注明出处!