不论甚么时分,都会有一些猜测 Java 毁灭的帖子呈现。但风趣的是,这些帖子从不写预言成真的日期。说假话,它们说的都算准确,由于这是每种言语的终极运气都是:毁灭埋没,精确地说是愈来愈少地被应用到新项目中。问题是:最初谁会代替它们呢?
上周我们在 InfoQ 一篇异样类型的文章。最少,这篇文章说出来这个言语可能的替换者 Kotlin。这让我对 JVM 的言语近况和趋向有了很多考虑:留意,言语的趋向与每一个言语的技术长处和缺陷有关。
其它翻译版本 (3) 加载中我于 2001 年年末Start做 Java 开发,事先,Java 是真的很酷。每个新开发者都想运用所谓的新技术:不管是 .NET 仍是 Java,而有经历一些的开发者运用的是 COBOL。我在黉舍进修了 C 和 C++,所以 Java 内存管理关于我来讲十分容易。我对 Java 很称心,但并非每一个人都这么以为。
Groovy 降生于 2003 年。但我不记得我是甚么时分Start进修它的。而实践上:运用它后我不再需求一门剧本言语了。在具有多个开发团队并长工夫开发企业级使用顺序的布景之下,静态类型比拟静态类型具有宏大优势。特别在实行产品测试以反省类型系统时。我独一需求创立剧本的时分,是作为 WebSphere ***时:选择 Python 仍是 TCL。
一年以后,Scala在2004年被我承受。 我不记得是甚么时分和是如何晓得Scala的,但那时分的确是很晚了。与Groovy相反,我决议尝尝它。首要的来由是我长久以来对创立“更好”的代码(更好的可读性和可保护性)感兴味。Scala是静态类型的,它更像我正在寻觅的工具。我报了Coursera课程Scala中的函数式编程道理。它有三个首要的影响:
它让我质疑我写Java代码的方法。 例如,为何当我设计类时要主动生成getter和setter办法?
对大大多数开发者来讲,我感到Scala很轻易写有缺乏可读性的的代码——包含我。
我Start寻觅其他替换言语。
在 Groovy 和 Scala 以后,第二代(假如你把 Java 也举动当作第一代的话,则是第三代)JVM 言语包含:
大致阅读一遍后,我确信他们没有太多的吸引力,不值得我投入工夫。
几年前,我决议自学根本的 Android 开发,以便可以了解Mobile开发者的开发情况。好家伙,即便有多年开发 Java EE 和 Spring 使用顺序的经历,但它还真给我一个欣喜了 - 还不是高兴的那种。这就像回到过来十年前那样的开发体验,Android API 十分初级,更别说在当地测试使用顺序。颠末疾速的搜刮相干信息,我发明 Kotlin 在非常多地方被提到,所以最初决议试一试。我立刻爱上 Kotlin 了,得亏它的扩大功用,我可以将现有的渣滓 API 改良得更好,乃至更优雅。我Start更多的发掘这门言语,并Start在Server端项目中运用 Kotlin。然后,Spring 框架公布了与 Kotlin 的整合。然后在 Google I/O 大会上,Google 也公布在 Android 开发中官方支撑 Kotlin。
这篇文章基于我个人的体验和观念。假如你更爱好浏览你赞成的帖子,请随时中止浏览。
除我本人的经历,这些言语的近况是怎么呢? 我在Google Trends中实行了一个疾速搜刮。
有几件风趣的工作值得存眷:
Google曾经辨认到诸如Scala、Groovy和Kotlin作为"编程言语"的搜刮关键词,而没有把Ceylon和eXtend作为关键词。关于Ceylon来讲,我只能伪装它是由于Ceylon是一个受欢送的地方。关于eXtend,生怕是由于大师很少在Google中搜刮它。
Scala是迄今为止最受欢送的,其次是Groovy和Kotlin。我没有关于Scala的真实线路图。
蒲月份的Kotlin搜刮巅峰是与谷歌在Google I/O上的支撑通知布告相干的。
大大多数搜刮Scala和Kotlin的数据来自中国,思索到天文地位上的均衡,Groovy更胜一筹。
Scala搜刮与术语“Spark”激烈相干,Kotlin搜刮与术语“Android”相干。
进一步发掘可能会发明风趣的现实:
xTend没有死,由于它从未活过。历来没有读过任何干于它的帖子。历来没有听过一个关于它的峰会。
2017年,红帽公司将Ceylon捐赠给Eclipse基金会,创立了Eclipse Ceylon。将软件赠予给基金会的个人行动可能会被分歧的方法说明。在这类状况下,虽然缭绕这一举动实行了牢靠的会谈,但这其实不意味着Ceylon的将来。
2015年,Pivotal中止资助Groovy,并转移到Apache基金会。固然我置信Groovy有足够的支撑根底,而且在JVM剧本上也是无独有偶的,但这并非一个好兆头。这与Groovy中心创立者的提交频率相干:它们的提交次数急剧减少 - 到某些中止点。
风趣的是,Scala和Kotlin比来都入侵了其他范畴,并将其翻译成JavaScript并编译成原生代码。
在Java中,JEP 286是运用类型揣度来加强言语的提议,这是Scala和Kotlin曾经供给的功用。但是,它仅限于部分变量。
成心思的是,经过保存言语的一小部分,来尽力晋升Scala编译工夫。然后提出问题,为何要坚持Scala,假如你丢弃它弱小的功用(如宏)?
我其实不善于猜测,但这是我的一些瞻望:
Groovy具有本人的强项——剧本,这就留下Java、Scala和Kotlin在Server真个JVM上为纯使用顺序开发而抢夺占用率。
Scala也创始了本人的范畴。Scala开发职员凡是以为这类言语优于Java(或Kotlin),而不会转移到另外一种言语。但是,因为Spring和Google的通知布告,Kotlin可能会成为对Java不称心的开发职员的Scala的替换。
Kotlin已在Android疆场上获胜。Scala过来无视了这个范畴,而且不会在未来中继续投入,因而Kotlin在这场竞赛中曾经遥遥抢先了。
Kotlin在手机上的突起不是一个预期中的举措,而是一个不错的意想不到的欣喜。JetBrains一旦留意到这个趋向就把它用作了行进的路标。
Kotlin与Java的互操作性是杀手级此外功用,这可能会压服管理者将遗留项目迁徙到Kotlin上然后Start新项目。正如Java的不连续的后向兼容性一样。
亲爱的读者,虽然(特殊是)你分歧意上述的观念,但我将对你的看法十分感兴味。只需你有礼貌地供给现实,并证明你的观念便可。
2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务