零基础学Kotlin之Android项目开发实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 为什么选择Kotlin

正在从事Java编程工作的程序员深知Java存在诸多问题,Kotlin除解决这些问题外,还提供了Java不具备的一些特性,并且100%兼容Java,支持无成本迁移,这为Java程序员提供了一个非常好的选择。

1.4.1 Java程序员的选择

下面先来看看Java存在的问题。

●空引用(Null references):连空引用的发明者都承认这是一个“十亿美元(billion-dollar)的错误”。不论怎样都无法避免它,因为Java的类型系统就是不安全的。

●原始类型(Raw types):开发应用程序时总会为了保持兼容性而卡在泛型原始类型的问题上,我们都知道要努力避免Raw types的警告,但是它们毕竟是在语言层面上存在的,这必定会造成误解并形成不安全因素。

●协变数组(Covariant arrays):可以创建一个string类型的数组和一个object类型的数组,然后把string数组分配给object数组。这样的代码虽然可以通过编译,但是一旦尝试在运行时分配一个数给object数组,就会在运行时抛出异常。

●Java 8存在高阶方法(Higher-order functions),但是它们是通过SAM类型实现的。SAM是一个单个抽象方法,每个函数类型都需要一个对应的接口。当想要创建一个并不存在的Lambda表达式或不存在对应关系的函数类型时,就要自己创建函数类型作为接口。

●泛型中的通配符:泛型总是难以操作、阅读、书写和理解。对编译器而言,异常检查也变得很困难。

对于上面列出的这些缺陷,Kotlin通常直接移除了那些特性,同时添加了一些新的特性。

●Lambda表达式。

●数据类(Data classes)。

●函数字面量和内联函数(Function literals & inline functions)。

●函数扩展(Extension functions)。

●空安全(Null safety)。

●智能转换(Smart casts)。

●字符串模板(String templates)。

●主构造函数(Primary constructors)。

●类委托(Class delegation)。

●类型推断(Type inference)。

●单例(Singletons)。

●声明点变量(Declaration-site variance)。

●区间表达式(Range expressions)。

Kotlin之所以能跟随JVM的生态系统不断地进步,是因为它没有任何限制。Kotlin编译出来的正是JVM字节码。在JVM看来,Kotlin跟其他语言是一样的。事实上,在IntelliJ或Android Studio上用Kotlin的插件时,会自带一个字节码查看器,可以显示每个方法生成的JVM字节码。

Kotlin 来自业界而不是学术界,它解决了开发者现今面临的很多实际问题,上面列出的只是比较重要的。从Java切换到Kotlin无须成本,Kotlin提供了一个高质量的从Java转换到Kotlin的工具,可以一键将现有Java项目一次性转换成Kotlin项目,而该项目仍可以正常编译,即使是一个包含上百万行代码的复杂项目。

Kotlin程序能够使用所有现存的Java框架和库,甚至包括那些依赖注解处理的高级框架。它们之间的交互是无缝的,不需要包装或适配层。Kotlin 可以整合 Maven、Gradle及其他构建系统。

1.4.2 新手的选择

对于新手程序员来说,他们所有的选择都会围绕从业收入及自己的能力来进行。能够带来理想的收入,需要掌握的知识是在自己能力范围内的,这种语言就是新手程序员最容易选择的。

目前,从事移动开发工作是一个不错的选择,多数人使用Java语言从事Android开发。但是,Kotlin替代Java只是时间问题。不需要太多的原因,解决了Java现存的问题、100%兼容Java,即使没有其他新的特性,仅这两个原因就足够了,况且它确实还引入了很多新特性。除此之外,Google公司选择Kotlin作为Android第一开发语言,后面会持续地投入和支持,这为Kotlin语言的长远发展奠定了基础。

前面已经介绍了Kotlin的很多特点,下面总结一下影响程序员选择Kotlin的几点原因。

●Kotlin十分平易近人,语法精炼直观。

●Kotlin不苛求特定的编程哲学,例如极度的函数式编程或面向对象编程风格。

●Kotlin允许用户继续使用工作效率提升工具。IntelliJ的IDE对Kotlin的支持十分完善:可以对代码进行重构、搜索、导航,以及使用自动完成功能,而且IDE充分支持调试、单元测试和性能分析等。

●由知名公司为Kotlin提供强大的商业支持。JetBrains公司有一个高度称职的大团队负责该项目,有稳定的商业模式,甚至在其部分旗舰产品中使用Kotlin,这表明短期内Kotlin不会被放弃。尽管Kotlin是免费的,但是JetBrains公司还是能够通过它增加商业版本IDE的销售来赚大钱,这将激励他们根据用户的意愿持续改进它。与此相比,对于那些由不相关产品资助的语言开发者,当用户需求与之前的设计理念冲突时,他们很少会因此做出调整。

●Kotlin语言十分注重语法的可读性,代码审查不会成为问题,对Kotlin不熟悉的团队成员仍然能够完成该工作。