本文转至 《Kotlin 官网大变样?这是要干啥?》html
Kotlin 官网此次更新能够算是历史上最大的一次了,跨平台、数据科学等内容也搬到了最前面。前端
最近有小伙伴提醒我,Kotlin 官网更新了,我打开一看直接吓尿: git
最有意思的是竟然把 Android 放到了最后,hmmm,Kotlin 开发者里面搞 Android 的应该是最多的吧?这么不受待见?github
因此我有个大胆的想法,Kotlin 团队确定以为 Android 大军切换 Kotlin 指日可待,基本上稳稳的,因此过河拆桥:Android 已经再也不是 Kotlin 惟一的大腿啦,大家看看,最前面的是移动端跨平台,原来谷爸爸的大腿刚捂热乎,就又抱上了果爸爸,真是不得了哇:面试
其实很早以前咱们就一直在聊到 Kotlin 2019 年的重心必定在 Native 上,当时以为多是盯上了 5G 时代的物联网的机会?不过一年过去了,5G 手机我还没用上,这不小米 10 刚发布,正琢磨要不要换个呢,嵌入式领域 C 称霸天下哪里会那么快换代,再说还有 Go 和 Rust 虎视眈眈,哪儿有 Kotlin 什么事儿。npm
不过从 Android 起家的 Kotlin 横向切入 iOS 这个路子真的是很合适,用户群体都不用怎么变,还让过去不会 iOS 的 Android 开发者有了更多更容易的机会扩展本身的技术栈,便可以扩大本身的影响力,又给开发者带来福利,真是共赢 666。编程
固然,这个移动端跨平台并非什么特别新鲜的事儿,毕竟开源项目嘛,没事儿刷刷 Kotlin 的 Slack,啥都能提早知道。并且自己 Kotlin 跨平台共享代码从 1.2 刚开始公测就理论上包含了 Kotlin-Jvm@Android 和 Kotlin-Native@iOS 的代码共享能力,因此咱们彷佛不该该意外,我只是想说 JetBrains 竟然把移动端跨平台专门上升到了这么高的优先级,还专门作了 Kotlin Native 与 Objective-C & Swift 的互调用的支持,真是任性~~架构
若是过一段时间 Dukat 这个项目逐渐成熟,Kotlin-Js 的编译工具也进一步完善,特别是对 npm 依赖的管理能更加灵活(目前 Kotlin-js 的 Gradle 依赖当中不会自动携带 npm 依赖这个让人很是难受),JavaScript 常见的框架都有了本身的 Kotlin 接口声明,那时候我估计写到最前面的也许还会发生一些变化,那时候也许叫 “Kotlin for 大前端”?框架
说到这里有人担忧 Kotlin 这是否是在跟 Flutter 叫板。显然不是嘛,Kotlin 跨平台一直都声称本身只是为了逻辑代码的共享,UI 你们仍是用原生的就好啦。因而乎 Android 原来该用 ConstraintLayout 你就用你的 XML 布局,iOS 呢就仍是用你的 storyboard。异步
Flutter 抢的是 UI 的饭碗,UI 层跨平台的问题解决了,有人就说咱们底层的逻辑也选一套跨平台的方案好很差?这要是放到几年前,怕是没有别的选择了,C++ 是最好的语言;而如今,你能够选择 Kotlin,最为神奇的是 Kotlin 的跨平台和 C++ 的机制很是不一样,它在 Android 上使用 Kotlin-Jvm,iOS 上则使用 Kotlin-Native。你要是非想在 Android 上使用 JNI 的话,Kotlin-Native 也已经支持了绝大多数 Android 的 CPU 架构。因此很早就有人发文章报告 Flutter + Kotlin-Native 实现移动端跨平台开发的优秀体验,因此 Flutter 该学就学,不矛盾。
并且它俩的这基友关系嘛。。。依我看,这 Logo 就已经说明一切了。。。
还有一个比较引人注目的就是 Data science 了吧。毕竟 Python 由于这个都火的不得了了,过去的一年里我已经鼓动咱们组好几个小伙伴上手 Python,要恰饭的嘛,艺多不压身,省得错过一些项目的机会。如今好了,Kotlin 也能搞科学计算了,目测大概的切入思路暂时仍是依托于强大的 Jvm,Java 能用的框架 Kotlin 天然能用,Java 不能直接用的,例如 Python numpy,能够 JNI 直接搞一个封装 kotlin-numpy;等 Kotlin Native 翅膀硬了以后就更省事儿了,直接跟 C 玩去,连 Jvm 都用不着了。这么发展着,最后也许是个人固然是个人,你的也是个人。。。
忘了说了,如今已经有了 Jupyter 的 Kotlin 内核,因此之前在 Jupyter Notebook 里用 Python 写的代码也能够用 Kotlin 写了,贴一张官网的效果图:
很美是吧,以前 KotlinConf 2019 期间官博就发了一篇文章介绍这个能力,也能够参考一下:Making Kotlin Ready for Data Science 原文 中文翻译。
顺便提一句,调用 GPU 其实也是 IO 操做,我看了几个 cuda 的程序都颇有意思,要么是阻塞调用,要么就是异步调用以后在主流程里死循环等待结果返回。这彷佛与咱们的 Socket 读写相似,异步的 API 可能在大规模调用时性能更好,但代码编写起来更加复杂。前几天读到一篇论文讲的就是如何使用 C++ 的协程来下降 GPU 编程的复杂度(Integrating GPGPU computations with CPU coroutines in C++),随着 Kotlin Native 的逐渐成熟稳定,咱们能够直接经过 C 接口编写 GPU 相关程序,Kotlin 协程也许能够为 GPU 编程带来必定的便利。
这么看来,预计在 2020年春天发布的 Kotlin 1.4 的形势也比较明朗了,正如 Kotlin 之父 Andrey 说的,这个版本没有什么太多的新特性。由于做为一门语言自己,Kotlin 已经比较成熟,如今最应当关注的是开发体验,开发效率,稳定性,易用性以及应用场景等等语言生态的内容。
我以前还比较担忧 Kotlin Multiplatform 和 Kotlin Native 会不会借此机会正式发布,从官网的此次改动来看,这样的担忧应该是多余的了。咱们来回顾一下过去 Kotlin 的重要版本的发布时间:
多数状况下 Kotlin 的大版本都是保持一年左右一个的(1.2 这个版本估计是趁着热度努力冲了一波 KPI,毕竟 2017 年 Kotlin 出名了),小版本大概两个月一个,因此通常小版本到 1.x.7 的时候也就是下一个大版本发布的时间。如今 1.3.70 已经 EAP 了一个多月了,大家懂我意思吧。
若是你们想要快速上手 Kotlin 或者想要全面深刻地学习 Kotlin 的相关知识,能够关注我基于 Kotlin 1.3.50 全新制做的新课,课程初版曾帮助3000多名同窗掌握 Kotlin,此次更新回归内容更精彩:
扫描二维码或者点击连接《Kotlin 入门到精通》便可进入课程啦!
想要找到好 Offer、想要实现技术进阶的迷茫中的 Android 工程师们,推荐你们关注下个人新课《破解Android高级面试》,这门课涉及内容均非浅尝辄止,目前已经有700+同窗在学习,你还在等什么(*≧∪≦):
扫描二维码或者点击连接《破解Android高级面试》便可进入课程啦!
中文官网:www.kotlincn.net/
中文官方博客:www.kotliner.cn/
公众号:Kotlin
知乎专栏:Kotlin
CSDN:Kotlin中文社区
掘金:Kotlin中文社区
简书:Kotlin中文社区