在Beta 之后仅仅几个月,JetBrains 正式宣布Kotlin 的第一个稳定版本,其基于JVM 并兼容Android的新语言。制造商表示,Kotlin 打算作为一个“好工具”,目的是为了驱动设计决策向实用性和互操作性前进。Kotlin 希望解决Java 中只能通过类库和外部工具来修复的许多问题,同时提供平滑和渐进的过渡机会。

\\

在2010年的初步设想中,JetBrains 决定创建Kotlin ,以此来提高开发他们自己的产品时(Kotlin 现在被使用在JetBrains 的产品中,比如IntelliJ IDEA)的生产效率。考虑到许多其他用户将不得不面对同样的问题,JetBrains 决定开源Kotlin,并且鼓励参与和贡献。因为它基于Java 1.6,Kotlin 很快在Android 开发者中流行起来,为他们提供了获取一系列其他版本和语言所拥有的流行特性。事实上流行的证据就是新的Android 开发工具,比如JRebel for Android,包含了对Kotlin 的支持。

\\

虽然Kotlin 在Android 开发中超越Java 的优势会在Android 完成迁移到OpenJDK 之后减弱,但是开发者能够在一些其他的领域获得益处。其中包括:

\\

  • Getter/Setter 引用:Java 中写代码来访问属性,典型的操作是通过IDE 辅助的代码生成、像Project Lombok 这样的字节码操作,或者是简单的将内部属性公开(这违背了封装的原则)。在Kotlin 中,数据类的创建默认为所有的属性提供了getter 和setter。 \\
  • toString、hashCode、equals:Java 为这三个方法提供默认实现,但是这些很少有用处,这意味着开发者通常必须重写默认方法并创建他们自己的。很多情况下,所需要的实现是足够简单的,以便于通过一些类库,比如Apache Commons Lang 和Google Guava 来提供。Kotlin 的数据类基于类的字段为这些方法提供了一个默认实现,类似于大部分开发者所需要的,这意味着不需要去重写这些方法。此外,Kotlin 的“==”操作符不是比较引用,而是和equals 方法一样。 \\
  • 对象的部分构建:在很多时候,一个对象需要在只有部分参数被提供,同时其他参数保持默认值的情况下被构建。这通常通过建造者模式来完成,它创建一个建造者类和目标类来创建需要的对象。Kotlin 通过支持命名参数来解决这个问题。 \\
  • 空值检查:对Java 开发者来说,避免空值是一个普遍头疼的问题,通常通过IDE检查(检测值一直为空)、类里面的断言(Objects.requireNotNull())、类似@NotNull 或者@NonNull 这样的注解的隐含验证、Google 的Optional,或者之后的Java 8的Optional来解决。在Kotlin 中,空值的概念已经被转移到语言自身,这意味着变量在编译时就知道它们自己是否为空: \
val x: String? = \"Hi\" // Declaring x as a nullable String\x.length // Does not compile, x could be null, null check needs to happen first\\if (x != null) {\    x.length // Compiles, Kotlin understands that x is not null by this point\}\\val y: String = null // Does not compile, y is not declared as nullable

\\

  • 字符串构建:在Java 中,我们可以通过使用连接运算符(\"a \" + 变量 + \" b\"),String.format() 方法能提供更好的可读性(String.format(\"a %s b\

JetBrains 发布Kotlin 1.0相关推荐

  1. JetBrains发布DataGrip 1.0——数据库与SQL领域中的瑞士军刀

    近日,来自捷克的软件公司JetBrains发布了全新的重量级产品DataGrip 1.0--号称数据库与SQL领域中的瑞士军刀.DataGrip的前身0xDBE已经发布一年多的时间了,这也是JetBr ...

  2. 与Andrey Breslav谈论Kotlin 1.0的发布

    在经过了三个月的beta测试后,Kotlin团队终于宣布发布Kotlin的 1.0版本,该版本的目标是提升这门语言在API与ABI方面的稳定性. \\ 从该语言的第四个beta发布,到发布候选版本的出 ...

  3. JetBrains发布Toolbox 采用新的订阅模式

    正如此前宣布的那样,JetBrains发布了他们的桌面工具(IDE.工具及扩展)集合产品Toolbox,该产品采用了新的订阅模式,用月付费或者年付费的订阅方式代替了一次性预付费. \\ Toolbox ...

  4. JetBrains 发布 2019 年 Java 调查报告

    整理:安卓开发精选 最近知名 IDE 厂商 JetBrains 发布了 2019 年开发者调查报告.本文汇总和 Jave 相关的调查数据和结果. JetBrains 从阿根廷.巴西.加拿大.中国.法国 ...

  5. 安卓绿色联盟两项免费福利重磅发布:EMUI9.0和绿色应用2.0测试能力

    为什么要把华为的EMUI9.0系统和安卓绿色联盟绿色应用标准2.0放在一块提?有兴趣的朋友可以自行google百度,小编这里卖个关子~ 9月5日,华为正式对外发布EMUI 9.0系统,这也是目前国内首 ...

  6. Soul网关发布2.2.0:让高性能网关变得如此简单!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者:猫大人 来源:转载自公众号「Dromara分布式事 ...

  7. 鸿蒙os2.0系统什么时候,鸿蒙OS 2.0beta什么时候发布 鸿蒙OS2.0功能介绍

    鸿蒙OS 2.0beta什么时候发布呢?华为发布了面向全场景的分布式操作系统 HarmonyOS 2.0,宣布年底面向开发者发布智能手机 Beta 版本,下面就让小编给大家介绍一下. 鸿蒙OS 2.0 ...

  8. mysql数据库行业应用_腾讯云发布MySQL 8.0数据库 可应用至更多行业场景

    原标题:腾讯云发布MySQL 8.0数据库 可应用至更多行业场景 来源:21财经 目前,腾讯云数据库已有20多种数据库服务,包括云数据库MySQL.云原生数据库CynosDB.数据库智能管家DBbra ...

  9. Soul网关发布2.2.0 | 让高性能网关变得如此简单!

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群",加入新技术 本文来自:猫大人的Dromara分布式事务 Soul发布全新的架构 ...

最新文章

  1. 这块抖音爆红的支架,搞到一波优惠,按需而入!
  2. Windows权限设置详解
  3. 单片机汇编编程300例_pic单片机编程串烧,pic单片机汇编语言讲解下篇
  4. Linux网络编程 | 信号 :信号函数、信号集、统一事件源 、网络编程相关信号
  5. 操作系统动态库调用过程
  6. 卖一头猪亏500元,“猪茅”也扛不住了?
  7. 小女出世,暂停工作,全职照料大人小孩
  8. ASP.NET错误处理的方式(一)
  9. lnmp一键安装包 安装php-fpm,为LNMP一键安装包下PHP编译安装fileinfo扩展
  10. numpy——随机取样
  11. MATLAB数值计算——矩阵的逆、矩阵的特征值、矩阵的特征多项式
  12. CAML: FAST CONTEXT ADAPTATION VIA META-LEARNING
  13. 校园多媒体直播系统方案
  14. Dynamic Programming 什么意思
  15. Python基本语法一
  16. Retrofit2.0介绍使用封装
  17. Mac下查找支持的字体
  18. 计算机管理映像路径,手把手教你解决win7系统任务管理器显示映像路径的恢复办法...
  19. 什么是脚本语言?什么是解释性语言?什么是编译性语言?
  20. 2017年华为实习面试心得

热门文章

  1. 使用自己的数据集训练GoogLenet InceptionNet V1 V2 V3模型(TensorFlow)
  2. 常见索引结构—B-树
  3. sql每一个join都要加on
  4. 乱谈数学--我理解的函数极限运算
  5. ubuntu-11.10-server-i386学习笔记-SVN版本服务器安装
  6. TCP/IP GUIDE
  7. UOJ #577. 基因变异
  8. vector-空间增长
  9. WEBBASE篇: 第五篇, CSS知识3
  10. springboot 日志数据