当然,这个移动端跨平台并不是什么特别新鲜的事儿,毕竟开源项目嘛,没事儿刷刷 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.0:2016.2
-
Kotlin 1.1:2017.3(13个月之后)
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
资源分享
- 最新大厂面试专题
这个题库内容是比较多的,除了一些流行的热门技术面试题,如Kotlin,数据库,Java虚拟机面试题,数组,Framework ,混合跨平台开发,等
- 对应导图的Android高级工程师进阶系统学习视频
最近热门的,NDK,热修复,MVVM,源码等一系列系统学习视频都有!
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**