Kotlin正当红,但取代Java的论调被夸大了!
Kotlin继续在Android开发者中获得动力。你是否熟悉Kotlin,它是一种静态类型,基于JVM的语言,可与Java互操作。它由IntelliJ IDE提供商Jetbrains开发,它于2011年发布。版本1.0是第一个正式稳定版本,于2016年2月推出。
然而,当Google在2017年5月的Google I/O大会上表示将其作为Android环境的主要编程语言时,Kotlin的地位立即提升。到2017年底,TIOBE预测Kotlin将取代Java进行Android应用程序开发时,立即将其推上了风口浪尖。
Kotlin的相关调查数据
Realm的一份报告,其中涵盖了其活跃的移动应用开发人员的全球社区收集的调查趋势。2017年第四季度发布的最初报告显示,Kotlin的采用率从发布1.0版之前的零增长到2017年5月Google宣布后的4.28%。截至2017年9月,Kotlin的使用率已增加至7.54%,而Java则在同一时间内从50.66%下滑至46.23%。
Redmonk也报告了Kotlin的强劲增长。在2017年第三季度,Kotlin在Redmonk的100强语言列表中从#65升至第46位。到2018年1月,Kotlin已经跃升至第27位,成为Swift之后发展最快的语言。
同时,根据对搜索引擎结果的分析,TIOBE的2018年6月最受欢迎的100种编程语言榜单将Kotlin排在第49位。
TIOBE的常务董事Paul Jansen表示,“通常编程语言的采用是一个缓慢的过程,但Kotlin的使用相当快”。
PYPL榜单将Kotlin排名第18位,在2018年6月时为22位,Java排名第2。有趣的是,在2017年6月至2018年6月期间,Kotlin增加了0.6%,而Java则下降了相同的数量。具体来说,该榜单显示,Kotlin在2018年6月的市场份额为0.93%,而Java为22.45%。
最近,Pusher发布了对2744名开发人员的调查结果,其中60%的人使用Kotlin进行工作和个人项目。
所有迹象都表明Kotlin正在蚕食Java的市场,并逐步走向成功。尽管如此,Gartner Research副总裁Mark Driver表示,Kotlin开发人员的数量非常少。
Driver表示,“这很有意思,它正在增长,但Kotlin开发人员的数量远远少于市场声音所能保证的数量。它将取代Java的想法被夸大了。我们没有看到Kotlin特有的东西高于某个雷达阈值。”
很多问题依然很碎片化。再者,今天有越来越多的编程语言在抢夺市场份额,而这是过去不曾有过的。
Driver表示,“开源市场具有扁平化特色,Kotlin需要几十万开发人员才能成功,也许现在不止这个数量。可以假设每编写一行Kotlin代码,Java少一行代码或一部分,是否意味着取代Java?答案显然不是。”
Kotlin的优势
Android Studio支持可提供更稳定的开发人员体验。它还有助于Android Studio基于JetBrains的IntelliJ,使Kotlin具有超越其他语言的独特优势。而且由于Android Studio随Kotlin一起提供,因此启动Kotlin项目只需点击即可,不需要像以前那样使用插件。此外,调试Kotlin代码与调试Java代码相同。
Driver指出,“许多Android开发人员不一定是Java开发人员,因此他们不会预先要求Java。他们的一种语言可能是Objective-C或Swift,因为他们正在构建一个iOS应用程序,现在他们被要求开发一个Android应用程序。”
Android Studio支持还使软件开发经理对语言更有信心,因为他们不再需要担心语言的未来是否堪忧。
Kotlin可以与Java互操作,因此企业可以按照自己的进度迁移,而不是重写整个应用程序。互操作性使Kotlin代码能够转换为Java代码,反之亦然。也可以在同一个应用程序中组合Kotlin和Java代码。但是,在进行转换之前,开发人员需要阅读互操作性指南。
Driver指出,“不存在不兼容的风险,因为它在JVM上运行。但是,如果你不是Java开发人员,你可能不会看Kotlin。”
Kotlin应用程序性能与Java应用程序性能相当,但Kotlin构建可能比Java构建花费更多或更少的时间,具体取决于所执行的构建类型。例如,干净的Kotlin构建可能比干净的Java构建花费更长时间,而增量Kotlin构建实际上可能更快。但是,构建时间的差异并不足以影响Kotlin的使用。
开发人员也喜欢Kotlin的简洁语法,因为它减少了出错的可能性。
Driver强调,“简化的语法避免了你必须通过Java造大量脚手架。你可以用更少的代码行完成许多相同的事情,因此你不太可能犯错,因此它更有可能降低维护代码的成本,但这还不能够带来行业的颠覆,这只是小改进。它与苹果公司对Swift的做法类似。”
Kotlin的null安全性也很有吸引力,特别是考虑到null导致Java开发人员的焦虑。例如,软件分析公司OverOps发现,在10亿个Java记录错误中,97%的错误是由10个独特的错误引起的,其中最常见的是NullPointerException错误。后来对1000个应用程序的研究证实,发现这些错误影响了70%的生产环境。
Kotlin强大的工具也是优势。与其他语言不同,Kotlin是由IDE提供商开发的,他同时构建了Kotlin和IDE。
Driver指出,“IntelliJ是一个非常受欢迎的IDE,我认为JetBrains看到了Java与某些IDE之间的繁琐关系,并表示我们可以构建一种更加简化和现代化的语言。Java创建于25年前。如果你今天创建Java,可能你最终会得到像Kotlin类似的产品,因为可利用在过去25年中的经验。”
Kotlin的现状
在2018年Google I/O大会上,谷歌发布了Android Jetpack,这是最新一代的Android组件。Jetpack提供向后兼容性和即时更新到更大的组件集,因此开发人员可以更快,更低成本地构建更高质量的应用程序。它还管理后台任务,导航和生命周期管理。
Android Jetpack中包含Android KTX,它是Kotlin特有的组件,旨在改善开发人员体验。组件包括WorkManager,分页,导航和切片。
谷歌还提高了Android Runtime(ART)的性能,因此Kotlin应用可以更快地运行。代码片段已添加到官方文档中,Google发布了Kotlin版本的API参考文档。还在Udacity上推出了Kotlin Bootcamp,它现在拥有Google开发者专家计划中的Kotlin专业版。
与此同时,语言本身也在不断发展。Kotlin 1.2是最新的主要版本,它支持JVM和JavaScript之间的代码重用,因此开发人员可以编写应用程序的业务逻辑一次,就能在后端,浏览器前端和Android移动应用程序中重复使用它。v1.2的编译速度比v1.1快25%。Kotlin 1.1包含一个JavaScript目标,允许开发人员将Kotlin代码编译为在浏览器中运行的Javascript。次要版本包括对Gradle构建缓存(v1.2.2)的支持,一些错误修复,JUnit 5支持等等。
Kotlin Native也继续成熟。它于2017年11月宣布,现在为0.7。它将Kotlin编译成机器代码并生成不需要虚拟机的可执行文件。