随着Kotlin的兴起,让我们看看对Java的不满是如何开始的,JVM语言是如何形成的——以及哪些语言在争夺头把交椅。时不时会有一篇文章预测Java语言的消亡。有趣的是,他们都没有写日期。但老实说,它们可能都是真的。这是每种语言的命运:消失在遗忘中——或者更准确地说,在新项目中越来越少地被使用。问题是什么将取代它们?上周在InfoQ上看到了另一篇这样的文章。至少,这个讨论了一个可能的替代品,Kotlin。它让我开始思考JVM语言的现状和趋势。请注意,趋势与每种语言的技术优势和劣势无关。2001年底,我开始使用Java进行开发。当时,Java非常酷。每个年轻的开发人员都想从事一种所谓的新技术:.NET或Java,因为年长的开发人员被困在Cobol上。我在学校学习了C和C++,而在Java中内存管理要容易得多。我对Java很满意……但不是每个人都这样。Groovy是2003年出来的,我不记得是什么时候知道的了。我只是忽略它:那时我不需要脚本语言。在许多开发人员团队开发的具有长生命周期的企业级应用程序的上下文中,静态类型与动态类型相比具有巨大的优势。进行生产测试来检查类型系统是一种净损失。我必须创建脚本的唯一一次是作为WebSphere管理员:在Python和TCL之间做出选择。Scala于一年后的2004年问世。我不记得我是何时或如何听说它的,但那是很晚的事了。但是针对Groovy,我决定试一试。主要原因是我长期以来对创建“更好”代码的兴趣——阅读更具可读性和可维护性。Scala是静态类型的,比较符合我的要求。我从Coursera课程中学习了Scala中的函数式编程原理。它产生了三个主要后果:它质疑我编写Java代码的方式。比如为什么我设计一个类的时候会自动生成getters和setters?我认为Scala使得编写大多数开发人员无法阅读的代码变得太容易了——包括我自己在内我开始寻找其他替代语言在Groovy和Scala出现第二代之后(如果你把Java算作第一代,那么就是第三代)JVM语言,包括:JetBrainsKotlinRedHatCeylon和EclipseExtensions随便看了一眼,我确信它们没有太大吸引力,不值得我花时间。几年前,我决定自学Android基础知识,以便了解移动开发环境。好小子!在开发JavaEE和Spring应用程序多年之后,这是一个惊喜——并不令人愉快。仿佛穿越回十年前。AndroidAPI太低级了……更不用说在本地测试应用程序了。快速搜索了一下,很多地方都提到了Kotlin,最后决定试一试。我立即爱上了它:借助Kotlin,我可以将现有的垃圾API改进为更好、更优雅的东西,这要归功于扩展功能。我深入研究了这门语言并开始将Kotlin用于服务器端项目。随后,Spring框架宣布集成Kotlin。在谷歌I/O大会上,谷歌宣布在Android上支持Kotlin。需要注意一些有趣的事情:Google已经识别出搜索词Scala、Groovy和Kotlin,即“编程语言”,但不识别Ceylon和eXtend。对于锡兰,我只能假设这是因为锡兰是一个受欢迎的地方。对于eXtend,恐怕Google搜索是不够的。Scala是迄今为止最受欢迎的,其次是Groovy和Kotlin。我对规模一无所知。5月份Kotlin的飙升与谷歌在GoogleI/O上的支持声明有关。Scala和Kotlin的大部分搜索来自中国,而Groovy在位置上更为平衡。Scala搜索与术语“Spark”密切相关,而Kotlin搜索与术语“Android”密切相关。进一步挖掘可能会揭示有趣的事实:xTend并未消亡,因为它从未存在过。永远不要阅读有关它的任何帖子。也从未听过会议演讲。2017年,RedHat将Ceylon交给了EclipseFoundation,创建了EclipseCeylon。向基金会捐赠软件的私人行为者可能会有不同的解释。在这种情况下,尽管围绕此举进行的谈判令人放心,但这对锡兰的未来来说并不是一个好兆头。2015年,Pivotal停止赞助Groovy,转而加入Apache基金会。虽然我相信Groovy有足够广泛的支持基础并且在JVM上有一个独特的利基——脚本,但这也不是一个好兆头。这与核心Groovy提交者的提交频率相关:他们的提交次数急剧下降——以至于有些人已经停止提交。有趣的是,最近Scala和Kotlin都入侵了其他领域,转换为JavaScript并编译为原生。在Java中,JEP286是一项通过类型推断来增强语言的提案,Scala和Kotlin已经提供了一个功能。但是,它仅限于局部变量。有趣的是,Scala编译时间通过只保留语言的一个子集而减少。这就引出了一个问题,如果你放弃了Scala的强大功能(比如宏),为什么要保留它?我不擅长预测Groovy有自己的利基——脚本,它有Java、Scala和Kotlin争夺服务器端JVM上的纯应用程序开发空间。Scala也开辟了自己的空间。Scala开发人员普遍认为这种语言优于Java(或Kotlin),不会迁移到另一种语言。然而,由于Spring和谷歌的公告,如果Java不满意,Kotlin可能会取代Scala成为首选语言开发人员。Kotlin赢得了Android之战。鉴于Kotlin遥遥领先,Scala过去忽略了这方面,未来也不会投入。Kotlin在移动设备上的兴起并非有意为之,而是一个意外的惊喜。但一旦JetBrains注意到这一趋势,它就将其作为前进的方向。Kotlin与Java的互操作性是一个杀手级特性,可以说服管理人员将遗留项目迁移到Kotlin或使用Kotlin启动新项目。就像Java的不间断向后兼容性一样。加群获取更多免费资讯:3907814
