Java与kotlin详细对比

 更新时间:2021年09月02日 11:43:00   作者:请输入妮称  
这篇文章主要介绍了Java与kotlin详细对比,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。

为什么选择 Kotlin? 简洁: 大大减少样板代码的数量。 安全: 避免空指针异常等整个类的错误。 互操作性: 充分利用 JVM、Android 和浏览器的现有库。 工具友好: 可用任何 Java IDE 或者使用命令行构建。

使用kotlin已经有一段时间了。打算从宏观上做一下java和kotlin的对比。java8虽然也有很多新特性,但是android低版本并不兼容。因此这里以旧版本为例。

kotlin 简介

Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。

Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。

易用性

  1. 在语法糖的加持下,kotlin能够用更短的代码实现更多的功能。这是java 无法比拟的。所谓代码量越少,出bug的可能性就越低。
  2. kotlin特有的扩展属性,不再需要java工具类,对开发更加友好。
    比如我们想实现字符串判空操作,在java中需要写一个StringUtil类,这样其他开发同学想实现该功能的时候,可能并不知道已经有人实现了该功能,存在重复造轮子的可能。通过扩展属性,我们可以很方便的看出String类都存在哪些方法。
  3. java中的bean类总是需要使用插件生成setter getter方法。kotlin中的data关键字可以解决这类问题,data类在编译期自动生成getter setter方法。

规范性

工程项目都是需要指定开发规范的。比如变量命名等。在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慢。增量编译下,两者几乎没有差距。

其他kotlin特性

懒加载、高阶函数、协程、inline操作符、运算符重载、默认参数等。

到此这篇关于Java与kotlin详细对比的文章就介绍到这了,更多相关Java与kotlin对比内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot整合Thymeleaf的方法

    SpringBoot整合Thymeleaf的方法

    这篇文章主要介绍了SpringBoot整合Thymeleaf的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下,希望能够帮助到你
    2021-07-07
  • mybatis如何实现saveOrUpdate

    mybatis如何实现saveOrUpdate

    这篇文章主要介绍了mybatis如何实现saveOrUpdate问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 将Sublime Text 2配置为Java的IDE的教程

    将Sublime Text 2配置为Java的IDE的教程

    这篇文章主要介绍了将Sublime Text 2配置为Java的IDE的教程,包括能让Sublime这个文本编辑器编译和运行Java程序等,需要的朋友可以参考下
    2015-07-07
  • SpringBoot项目在IntelliJ IDEA中如何实现热部署

    SpringBoot项目在IntelliJ IDEA中如何实现热部署

    spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。,这篇文章主要介绍了SpringBoot项目在IntelliJ IDEA中如何实现热部署,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • java实现学生选课系统

    java实现学生选课系统

    这篇文章主要为大家详细介绍了java实现学生选课系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • Java排序算法总结之堆排序

    Java排序算法总结之堆排序

    这篇文章主要介绍了Java排序算法总结之堆排序,详细分析了堆排序的原理与java实现技巧,需要的朋友可以参考下
    2015-05-05
  • Java如何使用Query动态拼接SQL详解

    Java如何使用Query动态拼接SQL详解

    这篇文章主要给大家介绍了关于Java如何使用Query动态拼接SQL的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • java如何根据日期生成单号

    java如何根据日期生成单号

    这篇文章主要介绍了java如何根据日期生成单号问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • 使用Java实现转换扫描的文档为可搜索的PDF

    使用Java实现转换扫描的文档为可搜索的PDF

    这篇文章主要为大家详细介绍了如何使用Java实现转换扫描的文档为可搜索的PDF,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • Java实现多线程模拟龟兔赛跑

    Java实现多线程模拟龟兔赛跑

    这篇文章主要为大家详细介绍了Java实现多线程模拟龟兔赛跑,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11

最新评论