美国上市公司,专注Java培训21年

JVM 语言的兴衰史


不管什么时候,都会有一些预测 Java 覆灭的帖子出现。但有趣的是,这些帖子从不写预言成真的日期。说实话,它们说的都算正确,因为这是每一种语言的最终命运都是:覆灭湮没,准确地说是越来越少地被利用到新项目中。问题是:最后谁会取代它们呢?

上周我们在 InfoQ 一篇同样类型的文章。至少,这篇文章说出来这个语言可能的替代者 Kotlin。这让我对 JVM 的语言现状和趋势有了许多思考:注意,语言的趋势与每个语言的技术优点和缺点无关。

我于 2001 年年底开始做 Java 开发,当时,Java 是真的很酷。每一个新开发者都想使用所谓的新技术:无论是 .NET 还是 Java,而有经验一些的开发者使用的是 COBOL。我在学校学习了 C 和 C++,所以 Java 内存管理对于我来说非常简单。我对 Java 很满意,但并不是每个人都这么认为。

Groovy 诞生于 2003 年。但我不记得我是什么时候开始学习它的。而实际上:使用它后我不再需要一门脚本语言了。在具有多个开发团队并长时间开发企业级应用程序的背景之下,静态类型相比动态类型拥有巨大优势。尤其在进行产品测试以检查类型系统时。我唯一需要创建脚本的时候,是作为 WebSphere 管理员时:选择 Python 还是 TCL。

一年之后,Scala在2004年被我接受。 我不记得是什么时候以及是怎样知道Scala的,但那时候确实是很晚了。与Groovy相反,我决定试试它。主要的理由是我长期以来对创建“更好”的代码(更好的可读性和可维护性)感兴趣。Scala是静态类型的,它更像我正在寻找的东西。我报了Coursera课程Scala中的函数式编程原理。它有三个主要的影响:

它让我质疑我写Java代码的方式。 例如,为什么当我设计类时要自动生成getter和setter方法?

对大多数开发者来说,我觉得Scala很容易写出缺乏可读性的的代码——包括我。

我开始寻找其他替代语言。

在 Groovy 和 Scala 之后,第二代(如果你把 Java 也算做第一代的话,则是第三代)JVM 语言包括:

JetBrains Kotlin

Red Hat Ceylon

Eclipse eXtend

大致浏览一遍后,我确信他们没有太多的吸引力,不值得我投入时间。

几年前,我决定自学基本的 Android 开发,以便能够了解移动开发者的开发环境。好家伙,即使有多年开发 Java EE 和 Spring 应用程序的经验,但它还真给我一个惊喜了 - 还不是愉快的那种。这就像回到过去十年前那样的开发体验,Android API 非常低级,更别说在本地测试应用程序。经过快速的搜索相关信息,我发现 Kotlin 在很多地方被提到,所以最后决定试一试。我立即爱上 Kotlin 了,得亏它的扩展功能,我可以将现有的垃圾 API 改进得更好,甚至更优雅。我开始更多的挖掘这门语言,并开始在服务器端项目中使用 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,如果你抛弃它强大的功能(如宏)?

我并不擅长预测,但这是我的一些展望:

1、Groovy拥有自己的强项——脚本,这就留下Java、Scala和Kotlin在服务器端的JVM上为纯应用程序开发而争夺占用率。

2、Scala也开创了自己的领域。Scala开发人员通常认为这种语言优于Java(或Kotlin),而不会转移到另一种语言。然而,由于Spring和Google的公告,Kotlin可能会成为对Java不满意的开发人员的Scala的替代。

3、Kotlin已在Android战场上获胜。Scala过去忽视了这个领域,并且不会在将来中继续投入,因此Kotlin在这场比赛中已经遥遥领先了。

4、Kotlin在手机上的崛起不是一个预期中的举动,而是一个不错的意想不到的惊喜。JetBrains一旦注意到这个趋势就把它用作了前进的路标。

5、Kotlin与Java的互操作性是杀手级别的功能,这可能会说服管理者将遗留项目迁移到Kotlin上然后开始新项目。正如Java的不间断的后向兼容性一样。

亲爱的读者,尽管(特别是)你不同意上述的观点,但我将对你的意见非常感兴趣。只要你有礼貌地提供事实,并证实你的观点即可。

感谢大家阅读“JVM 语言的兴衰史”希望对大家有所帮助,更多精彩内容请关注Java培训官网

免责声明:本文由小编转载自网络,本文内容不代表小编个人观点,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除


【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!

Java开发高端课程免费试学

大咖讲师+项目实战全面提升你的职场竞争力

  • 海量实战教程
  • 1V1答疑解惑
  • 行业动态分析
  • 大神学习路径图

相关推荐

更多
  • 一个故事讲完https
    一个故事讲完https
    感谢大家阅读由java培训机构分享的“一个故事讲完https”希望对大家有所帮助 详情>>

    2017-08-31

  • GitHub 上火的 Java 框架
    GitHub 上火的 Java 框架
    Java 是目前最需要的编程语言之一。在这里,我们已经挖掘了一些关于框架趋势的有用信息,也就是最受开发者青睐的 Java 框架,名单如下 详情>>

    2017-10-24

  • Java入门学习路径,没有之一
    Java入门学习路径,没有之一
    作为刚刚进入Java领域的新同学,无论是高校的毕业大学生,还是有志转行的在职人员,都面临着诸多的困惑。今天java培训班就来为大家讲解下Java入门学习路径 详情>>

    2017-11-23

  • java初学者学习心得
    java初学者学习心得
    学习了一学期的Java课程,觉得是该总结自己的心得体会了。开始学习任何一门课(包括java),兴趣最重要。下面请看java培训机构带来的分享 详情>>

    2017-12-12

  • Java开班时间

    收起