首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我们建议尝试一下新颖简洁的现代语言Kotlin?

最近有一门语言非常火,就是Kotlin-现代多平台应用静态编程语言。2017年5月17日,安卓官方宣布,安卓3.0正式支持Kotlin。安卓官方Blog是这样说的:“从现在开始,安卓3.0开箱即用地支持Kotlin。也就是说,安卓开发者再也不需要安装额外的补丁或者为兼容性而担忧。

同时在未来,谷歌和JetBrains两家公司会一起为用Kotlin做安卓开发做坚强的后盾。如果你在担心其他Kotlin支持的平台(Kotlin/JVM 服务器和桌面开发, Kotlin/JS 前端开发Kotlin/Native 原生应用),请相信他们对我们来说同样重要,而且会一直如此。

2011年7月19日,JetBrains公司正式发布Kotlin。在当天的Blog上是这么写的:“今天在JVM语言峰会上,JetBrains公司正式揭幕一个我们已经耕耘了一年左右的项目,这个项目就是Kotlin,一个新的静态JVM编程语言。在这个项目上,我们贡献了我们多年来为多种编程语言编写开发工具的宝贵经验,希望带来一个能适应当下环境足够高产的编程语言,同时对普通程序员而言也能容易上手。”

这里必须说一下JetBrains公司,这家公司虽然不大,但是在Java社区却是一家著名公司,因为它旗下的Java开发工具IDEA实在是太出色了。IDEA以它的简单、优雅、快速、高产迅速搞定了一大批程序员。JetBrains是一家捷克公司,对捷克我唯一的印象就是内德维德了。JetBrains发布Kotlin使用的是Apache2协议,最开放的协议,这里必须给他们点赞。

那为什么是 Kotlin?

【简洁】

见图1-a,产生一个有getter,setter,hashCode和copy方法的pojo居然只需要一行代码。就算IDEA和Eclipse里有getter,setter方法的自动生成器(这个生成器是IDEA先有的Eclipse迅速copy),也抵不过这一行代码这么简洁是不是。

见图1-b,使用lambda表达式过滤一个列表居然也只需要一行代码!各位Java程序员看到这里是不是已经不好了?捶胸顿足的有没有?哭天抢地的有没有?

见图1-c,产生一个单例对象,加上括号三行!各位Java程序员是不是已经开始当当下单买Kotlin的书了?武装自己得趁早啊!

【安全】

见图2-a,对非空类型赋值会报编译错误,去除那些恼人的空指针异常。

见图2-b,操作为null的对象时会报编译错误,保护你因为错误地操作可为空的对象而产生的空指针异常。

见图2-c,如果类型检查通过了,编译器会自动完成类型转换的工作。

【互通性】

见图3-a,可以使用任何JVM上的库,100%兼容。

见图3-b,可以部署于JVM上运行,也可以在客户端形成Js运行。

【工具友好】

这方面是JetBrains的本行了,这个code complition比Eclipse强的不是一点半点啊。

▲学习资源

在线文档和其他书籍:

https://www.kotlincn.net/docs/reference/

https://www.kotlincn.net/docs/books.html

短短的篇幅无法介绍所有的内容,大家还是自己看reference吧。书籍首选《Kotlin In Action》。

下面的代码片段展示了如何访问iOS的框架:

新平台提供了这种魔力。底层类库提供了访问下层操作系统级用户界面的能力。这就让大家在平台这个层面访问POSIX OS层的函数成为一种可能。举个例子:可以调用fopen,fread等函数。以前,和下层平台的互通性会需要显式打桩。

另一个新功能,目标是用C调用Kotlin对象,叫做Object pinning(对象刺探),这个功能可以用在确保对象已经在内存中锁定,当C Api需要消费这个对象的时候。Kotlin/Native现在也支持WebAssembly,这意味着Kotlin也可以用于开发浏览器前端应用。但是现在这个支持只是试验性的,因为浏览器对WebAssembly的支持还不够好,Lgotti说。

在开发工具支持方面,运行时调试现在已经支持观察内存中的变量。而且,JeBrains的C/C++开发工具CLoin已经提供了一个支持Kotlin/Native的插件。Kotlin/Native是最近Kotlin项目的一个进展,它使得原本这种基于JVM的解释性语言编译成为可能。它对于iOS和嵌入式应用更为适用,因为在这些平台上不允许虚拟机或者根本不需要。Kotlin/Native现在已经支持Windows、Linux、macOS、iOS、Android和WebAssembly。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180303B16EF600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券