阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

JetBrains 发布 Kotlin 1.0

  • 2016-03-02
  • 本文字数:2092 字

    阅读完需:约 7 分钟

在 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”, 变量)),或者通过 StringBuilder/StringBuffer,如果性能是一个问题(new StringBuilder().append(“a “).append(variable).append(” b”).build())来构建字符串。Kotlin 支持很多 Ruby 和其他语言中的字符串插入的方法,意味着开发者能简单的输入“a ${变量} b”。
  • Java 8 环境之前的 Lambdas 表达式:Lambdas 表达式只在最新的 Java 版本中引入,虽然旧版本不再支持,它们仍然被广泛的使用。为了在之前的版本中使用Lambdas 表达式,用户需要使用一些工具,比如 Retrolambda 。但是 Kotlin 提供了 lambda 表达式支持,因为它基于 Java 6,它使得在旧环境中也能使用这个功能。

Kotlin 可以很容易的解决很多其他的日常问题。但是,尽管有很多好处,选用一种新语言会带来它自己的风险和挑战。一方面,在现有的项目中选用 Kotlin,可能会需要 Java 和 Kotlin 在一段时间内共存。JetBrains 试着让两者的互通性尽可能的透明来解决这个问题,同时提供一个Java-to-Kotlin 的转换工具。

另一方面,用户安全的投入到任何新工具中,都需要长期支持。JetBrains 已经通过分配大量的资源(超过20 个全职开发者)和承若通过社区贡献来进行标准化进程,来表明它对Kotlin 的承诺。JetBrains 也承诺Kotlin 的每个新版本都向后兼容。这些原则让人们想起了Java 本身的管理方式,其参考的平台是开源的(OpenJDK),标准化进程是社区领导的(JCP),并承诺每个新版本都向后兼容。

Kotlin 是否会在日益增长的 JVM 语言(迄今为止超过 50 种)中突出出来还有待观察;目前,GitHub 中已经有 200 万行 Kotlin 代码(不包括 JetBrains 项目), StackOverflow 中也有将近 700 个问题

查看英文原文: JetBrains Releases Kotlin 1.0


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者(已满),InfoQ 读者交流群(#2)InfoQ 好读者)。

2016-03-02 18:003919

评论

发布
暂无评论
发现更多内容

WorkPlus Meet提供高度安全的私有化会议解决方案,保护企业隐私

WorkPlus

鸿蒙的跨端技术实践方案

Geek_2305a8

软件测试学习笔记丨Allure2测试用例描述相关用法(测试报告类别划分、名字展示等)

测试人

软件测试

人工智能测试开发训练营,快速掌握AI测试,更好职业机会晋升空间

测试人

软件测试 测试开发

10 个解放双手的 IDEA插件,少些冤枉代码(第三弹)

程序员小富

IDEA 插件

快速掌握AI测试开发技能,获得更好的职业机会和晋升空间

霍格沃兹测试开发学社

客户说|从4小时到15分钟,一次分布式数据库的丝滑体验

阿里云瑶池数据库

数据库 云计算 阿里云 云原生 polarDB

WorkPlus移动应用平台,完美的移动化办公体验

WorkPlus

AutoCAD 2019(cad2019)汉化激活版下载附cad产品密钥

Rose

cad2019 AutoCAD 2019

大咖公开课 | 探索AI的边界:如何精准地测试人工智能

测吧(北京)科技有限公司

测试

WorkPlus助力企业构建高效内部通讯与协作平台

WorkPlus

全球视角, 本土行动 —— 本地化商品管理之道

第七在线

Maple 2024 mac下载(含maple注册文件及破解工具)兼容m芯片

Rose

软件下载 Maple 2024 Maple数学软件 Maple 2024 mac破解

毫末贺翔:DriveGPT让通用感知实现“万物识别”、通用认知具备“世界知识”

Geek_2d6073

Touch bar pet for Mac(在macbook上养一只宠物)

Rose

Mac软件 电子宠物 touchbar 宠物桌面

macos big sur 软件icons图标大全(新增至2719枚大苏尔风格图标)

Rose

macOS Big Sur icons图标

WorkPlus即时通讯平台,让沟通变得简单高效

WorkPlus

亮点功能:流水线编辑支持并行了!

都广科技

DevOps

Pandora飙升背后的ERC404 目前适合布局吗

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

人工智能测试开发训练营 带你快速掌握AI测试开发技能,获得更好的职业机会和晋升空间

测吧(北京)科技有限公司

测试

pd18虚拟机如何安装?哪里有Parallels 工具箱?

Rose

PD18虚拟机破解 Parallels 工具箱 Mac虚拟机安装 Parallels Desktop破解

WorkPlus Meet提供高效、安全视频会议解决方案

WorkPlus

Java面试必考题之线程的生命周期,结合源码,透彻讲解!

不在线第一只蜗牛

Java 面试 生命周期 开发语言

如何通过相对规模来估算用户故事?

敏捷开发

Scrum 敏捷 极限编程 用户故事 敏捷团队

『Java 语法基础』面向对象有哪些特性

EquatorCoco

Java JVM 语法 开发语言

软件测试学习笔记丨接口测试面试题

测试人

软件测试 面试题 测试开发

Digital Realty 在日本 NRT 园区设立第二座数据中心

财见

汽车软件市场迅猛扩张,Perforce Helix Core与Helix IPLM助力汽车软件开发的版本控制及IP生命周期管理

龙智—DevSecOps解决方案

汽车 汽车软件

WorkPlus即时通讯平台,让沟通变得简单高效

WorkPlus

JetBrains 发布Kotlin 1.0_Java_Abraham Marín Pérez_InfoQ精选文章