Kotlin使用总结
后端 Java 项目也可引入 Kotlin
优点:
1,无缝引入到现有 Java 项目,只看了半天文档就上手了,并且没有因为两种语言混合开发带来副作用。
2,表达能力优于 Java,平均下来,在不影响可读性的情况下,大概可以比 Java 少写 1/3 的代码。
3,增加特性的同时,没有降低性能,部分 benchmark 中还有微弱的性能提升,马儿跑得更快还吃的更少。
4,适度的函数式编程支持,map-filter-fold 代替了一大堆 for-loop,简洁明了,代码中没有 map/list 构造工作干扰视线。
5,extension function 可以很方便的给现有的类扩充新的方法,而不用定义新类型,最常用的就是 TypeA.toTypeB()。
6,non-null 变量和 elvis 操作符,基本上消灭了 null 的烦恼,既不担心 NPE,又不用到处 if 判断是不是 null。
7,unchecked exception,可以自己决定在调用栈的某一层 catch 和处理,不必到处 try-catch 好麻烦。
8,val 和 var,在变量定义时决定它是否可以改变它的值,不能改变的值,是不用担心不小心覆盖的。
9,property 语法,不用让 IDE 自动生成 getter/setter 了,也不用 Lombok 自动合成这些方法了。
10,object,匿名对象信手拈来,并且编译器自动帮你搞成线程安全的 singleton。
delegate,和用它实现的 lazy evaluation,你甚至可以自行决定 lazy 求值在并发时的同步方式。
11,String Interpolation,"aaa{x.y}"是不是很面熟?多行字符串也很方便。
when/let/apply/also/takeIf 等等操作,可以实现非常简洁的操控,直接消除掉 builder 设计模式了。
12,imutable 的 list/set/map,imutable 是个很好的约束工具,默认就该 imutable。
REPL,就是类似 jshell 的那个东西,很方便,也很实用,比如直接命令行访问某个类。
13,Kotlin 当时可同时支持 Dalvik 和 Art 两种 Android 虚拟机。
缺点:,
1,Kotlin 体系不完整指的是需要依赖 java 提供生态,而不是像 Scala 一样,完全可以自成生态
2,Kotlin 在 JVM 调 C 库等同于 Java,Kotlin Native 只能调 C 库不能调 Java 库。
3,JVM 字节码混淆工具,理论上不应该区分 Java 和 Kotlin 生成的字节码。
4,。
5,spring-data 中 query builder 依赖的机制,目前不能方便的自动生成 Kotlin 的 Query Object。
6,资料还是偏少,不过官网的文档差不多也够了,毕竟大部分库和框架,都是沿用的 Java 的。
7,IDEA 自动转换工具,把 Java 转换成 Kotlin,转换质量明显比我人肉转的要差的多。
参考链接:
1,Kotlin 入坑半年总结
2,为什么我要改用Kotlin
3,再见NullPointerException。在Kotlin里null的处理(KAD 19)