BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Kotlin语言1.0Beta发布,JetBrain介绍其设计理念

| 作者 百占辉 关注 0 他的粉丝 发布于 2015年11月6日. 估计阅读时间: 6 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

KotlinJetBrains开发的现代编程语言,可运行于JVM环境同时也能用来开发Android应用。它的1.0Beta版本已经发布,这里是新版本的特性列表;

Kotlin起源与设计理念

2010年,长达是十年之久的Java开发让JetBrains的工程师认为老旧的Java语言已经严重阻碍了生产力。他们认为是时候开发一款现代化的JVM语言了,这也是因为他们有足够的资源和专家。本身做各种IDEs起家的JetBrains就开始着手新工具的开发——一个编程语言。

开发新语言有诸多因素需要考虑:首先之前的代码几乎全部用Java编写,所以要考虑平滑迁移的需求;新语言在生产力方面要有巨大提升;同时它要易于学习和理解。这样的工程牵扯到许多方面,不可能从一开始就满足所有需求。这就是为什么他们对核心设计选择进行了一段时间实验和验证,方式是持续收集JetBrains内部和外部的早期使用者的反馈报告,并根据反馈作出进一步的调整。

JetBrains已经在Intelli IDEAYouTrack和其它产品中使用Kotlin有一段时间了。也有一些产品完全使用Kotlin(account.jetbrains.com)编写.Kotlin语言已经达到可与Java自由透明交互的地步,Kotlin可以通过versa调用Java方法,源码可在同一项目中混合使用,甚至生成的.class文件完全兼容Java工具。JetBrains内部现在已经有一个超过20个开发人员的团队使用Kotlin开发。

目前已经有大量的开发人员使用Kotlin开发web服务后端和Android应用。下面是GitHub中的公开仓库中Kotlin代码行数的变化:

Kotlin初印象

根据JetBrains开发人员自己的经验和外部用户总结的对Kotlin的印象有:

  • 更少代码量
  • 高可读性
  • 跟高的类型安全性
  • 更高的表现力
  • 同工具的交互操作流畅

Beta版本的意义

  • 正在准备发布官方正式版本相关工作
  • 二进制格式已经完成
  • 主要的语言变化已经完成

兼容性

Kotlin会很快发布正式版。在开发之初JetBrains就承诺了流畅的用户体验,这当然也包括Kotlin语言版本的兼容性。1.0版本之后语言的所有变化都将是后向兼容的:

  • 新版本的编译器将兼容旧版本二进制文件,但旧版编译器或许不能兼容新的二进制文件,就像javac 1.6不能读取javac 1.8 编译的classes文件。
  • 旧版本二进制文件将能够和新版本二进制文件一起在runtime一起运行,但新版本代码可能需要新的依赖。

以上的所有特性仅保证支持JVM/Android平台。

关于Kotlin的一些事实

  • 它是开源的(在Apache 2.0 许可证下):编译器、运行时库和所有的工具,包括IDE。
  • 它提倡函数式编程风格(同时也是一个多范式语言)
  • 它是静态编译的,相较于Java它没有运行时开销
  • 它通过Quasar支持高效安全的并发。
  • 它和IntelliJ IDEA是绑定的(最终版和OSS社区版也是),同时也是开箱即用的。
  • 它有Android Studio、Eclipse、Maven、Gradle和Ant插件(更不用说IntelliJ IDEA和TeamCity)。
  • 它有REPL
  • 它有一个活跃和有帮助的社区,提供有用的库。
  • 目前已经有两本关于它的书出版了:Kotlin in ActionKotlin for Android Developers

迁移

目前为止基本所有的Java或Android框架或库都能平滑地和Kotlin一起工作。当然还有像Spring MVC、Vaadin和Jackson等等其它框架和库。Kotlin也有由JetBrains和社区开发的自己的框架和库。比如:AnkoRxKotlinfunKtionalekohesivekovenantKobalt构建工具等等

学习

学习资料链接:KoansPlayground介绍语言文档

安装方法: * IntelliJ IDEA 15高级版或者社区版):直接在创建一个Kotlin项目或在Java项目中创建Kotlin文件。 * **Android Studio:通过插件管理器安装插件。 * Eclipse:通过MarketPlace安装插件。 * 命令行:下载编译器

社区:ForumSlackget invite)、StackOverflowGitHub(欢迎PRs)。

新闻:博客Twitter

问题追踪


感谢徐川对本文的审校。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT