时间:2022-04-16 09:58:44 | 栏目:JAVA代码 | 点击:次
在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。
为什么选择 Kotlin? 简洁: 大大减少样板代码的数量。 安全: 避免空指针异常等整个类的错误。 互操作性: 充分利用 JVM、Android 和浏览器的现有库。 工具友好: 可用任何 Java IDE 或者使用命令行构建。
使用kotlin已经有一段时间了。打算从宏观上做一下java和kotlin的对比。java8虽然也有很多新特性,但是android低版本并不兼容。因此这里以旧版本为例。
Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。
Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。
工程项目都是需要指定开发规范的。比如变量命名等。在java中,方法重载的时候会生成@Override注解,但是这并不是强制约束的。kotlin的方法采用override关键字进行了强制约束。
再比如TODO。java中的TODO是以注释的形式存在,即使没有实现TODO处的代码,也没什么运行时问题。kotlin的TODO形式如下:
fun main(args: Array<String>) {
TODO()
}
kotlin TODO的实现
@kotlin.internal.InlineOnly public inline fun TODO(): Nothing = throw NotImplementedError()
可以看到运行时会抛出异常。
思考:这里为什么不在编译期抛出异常呢?
java中虽然有@Nullable @NotNull等注解。但是不会在编译期起作用,而是在运行期抛出异常。kotlin在声明变量的时候,可以指定变量是否为空,调用可为空对象时,需要进行空判断。
java在jvm的协助下虽然也是跨平台语言,但是不能像kotlin一样可以既可以编译成class字节码,又可以编译成js。
只有全量编译下,kotlin比java慢。增量编译下,两者几乎没有差距。
懒加载、高阶函数、协程、inline操作符、运算符重载、默认参数等。