最近有一门语言非常火, 就是 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 现在已经支持 WindowsLinuxmacOSiOSAndroid 和 WebAssembl
来源: http://rdc.hundsun.com/portal/article/860.html