Java至今还流行的7个原因 - foojay


在过去的二十年里,Java一直是并将继续是最受欢迎的语言。在TIOBE指数中,它的受欢迎程度一直排在前5位。除了受欢迎程度,Java在企业界尤其占主导地位。

然而,近年来,随着微服务和数据科学的普及,其他编程语言,如Python,也越来越受欢迎。一些开发者可能认为这是一个令人担忧的消息,因为它可能表明Java的衰落,而其他人则持不同的观点。

经过与Java开发者的多次讨论,结合我在Java社区和平台上的个人经验,我总结出以下七个关键原因,即为什么Java开发者在这么多年后仍然热爱Java,并希望在未来的日子里坚持使用它。

1. 社区
软件开发是人类历史上一个独特的、最新的现象。与其他不同,完整的知识体系尚未建立。这就是为什么在这个领域的学习和获得技能或多或少是由导师驱动的。我们可以阅读书籍,但我们从我们的同行,从我们的开发者伙伴,以及通过在团队中做事学到更多。

这就是为什么社区在传播知识和帮助建立正确的技能组合方面起着重要作用。在这方面,Java社区是独一无二的。它也是最全面欢迎的社区之一:在每个大城市,你都会发现一个Java用户组,帮助开发人员自愿地、免费地实现所需的技能。

他们定期安排研讨会、技术会议和物理/虚拟聚会,互相讨论和学习。他们帮助分发资源和解决方案,增加网络,并在全球范围内扩展Java知识。

我参与Java用户组的工作已经很多年了。当我伸出援手时,总是能得到社区的帮助,如围绕着指导、工作机会等。

您可以在以下链接中找到Java团体的名单:https://dev.java/community/jugs/
要想参与社区活动,请联系您当地的JUG,每个人都会以热情的态度欢迎您。

2. 语言和平台
Java是一种类型安全的、面向对象的编程语言,高度强调可读性。我们,它的开发者和用户,在工作中花了大量的时间阅读代码。Java的可读性极强,这让开发人员获得了巨大的好处,例如,在扩展团队方面。通常情况下,即使是非程序员也能读懂Java源代码,并理解代码中某个特定部分背后的意图。

这就是为什么它在企业软件系统中具有巨大吸引力的原因之一。通常情况下,企业大规模地生产产品,其在生产系统中的生命周期是相当长的。产品团队的规模经常成倍增加。拥有像Java这样富有表现力且易于阅读的语言,可以帮助新的开发人员迅速适应现有的代码库。

另外,Java是一个开源的编程平台,有很好的文档支持,为那些想深入挖掘并从源代码中学习的开发者培养了一个独特的机会。它使任何人都能实现掌握,并帮助揭开任何可能出现的神秘面纱。 

此外,虽然Java是一种优秀的编程语言,但它并不只限于一种语言。它是一个平台,容纳并启用了广泛的其他语言,例如,Kotlin、Scala、Groovy、Jython、JRuby等。所有这些编程语言都是可互操作的,这意味着它们可以利用已经建立的知名库。

这种语言和平台特性的结合和融合,使Java平台具有独特而强大的力量,这是其他平台所不具备的。

3. 比其他任何生态系统解决的问题都多
自Java发布以来,已经有26年了。作为主流的编程语言和平台,它所解决的问题比任何其他生态系统都多。这并不夸张:如果你在周围搜索一个问题,更有可能有人已经解决了它。仅Stackoverflow就有超过一百万个已回答的问题:https://stackoverflow.com/questions/tagged/java。

除此之外,Java的API是广泛的、可扩展的。标准的JDK有大量的Java包,可以解决我们日常的大部分编程问题。然而,标准API并不是唯一的来源:生态系统提供了更多。例如,Jakarta EE有广泛的规范和标准,支持企业软件开发的全面问题。

在这里,我们必须感谢的一件事是我们有规范。规范允许多个供应商实现具有不同能力的特定库--例如,JPA,即Java Persistence API。JPA为我们提供了一组接口,任何厂商都可以实现。一些流行的植入方式是Hibernate、EclipseLink和Apache OpenJPA。这样做的好处是,我们现在可以尝试多种实现,并为我们独特的用例选择合适的实现。

即使我们不得不在某个时候从一个实现转移到另一个实现,我们也可以在不改变代码的情况下做到这一点。这是软件开发中的一个巨大的福音。只有在共同遵守规范的情况下,这才有可能。这使我们可以自由地使用我们想要的任何东西,而不用考虑厂商锁定的问题。有趣的是,在大多数其他平台上可能不是这样的情况。通常只有一种实现方式,开发者没有选择,必须使用这种单一的实现方式。

下面是免费和开源的Java库的质量推广计划的列表,你可以从中学习和贡献:https://wiki.openjdk.java.net/display/quality/Quality+Outreach

除了这些标准和库,许多开源框架,如Spring,特别是Spring Boot,使我们在编写Web服务时生活变得超级轻松。同样,许多其他框架,如Micronaut、Quarkus和Helidon,也在逐渐受到关注。网络上有大量的内容,关于所有这些框架的书籍都可以找到,使学习变得很容易。

此外,OpenJDK本身也有多种实现方式。Oracle绝不是OpenJDK的唯一提供者。虽然每个OpenJDK供应商都有自己的实现和独特的酱料,但如果他们做得对,他们就会遵守共享的技术兼容工具包(TCK)。

各个OpenJDK供应商的性能可能有所不同,但输出结果是一样的。例如,Oracle JDK的默认GC是G1,它的性能很高。但是,如果我们想使用一个商业GC,比如Azul C4,也是可以的。我们可以在不改变我们的应用代码的情况下做到这一点。这是一个巨大的自由。
以下是OpenJDK供应商的名单:https://foojay.io/almanac/java-17/ 

4. 稳定性
稳定性是Java社区非常自豪的一个重要方面。每当有新功能发布时,向后兼容性都是最优先的。因此,即使是过去尘封的JAR,也可以在最新的OpenJDK发行版上运行。

这种无可比拟的稳定性是其他平台所无法比拟的。在升级他们的Java版本时,它使开发者的生活变得非常舒适,这不涉及任何代码的改变。

考虑到这种稳定性,许多组织都自信地将Java作为他们的主要语言,因为他们的脑海中有一个事实,即他们的代码将在未来的许多年里运行在OpenJDK发行版上。

5. 创新
与稳定性形成鲜明对比的是,在Java生态系统中,有大量的创新在进行。从Java 9开始,每六个月就有一个新的主要版本,这使得向OpenJDK添加新功能变得超级容易。每个版本都有丰富的新功能,同时改善现有代码库的性能并修复安全问题。

例如,Java 8在lambda表达式的帮助下,用函数式编程范式重新构想了我们编写Java代码的方式。同样,Streams API、Java DateTime、Optional、围绕集合的新工厂方法、本地类型推理、文本块、模式行进、JShell等等,都是最近添加到OpenJDK中的一些令人兴奋和有用的新特性。还有许多其他的功能也将被添加。这些新功能使我们的代码更可读、更简洁、更容易解决故障。

更远的未来,我们将看到Project Loom:轻量级的并发模型,我们希望它能改变未来的Java并发。除了Project Loom,其他项目,如Valhalla、Amber、Panama和Leydon将使我们的编程生活比以前更有效率。

6. 工具化
一门语言和一个平台的富裕程度在很大程度上取决于其工具支持。

在这个意义上,Java可能是所有语言中最丰富的。它有许多IDE和编辑器可供选择,如Eclipse、IntelliJ IDEA、Apache NetBeans、Visual Studio Code等等。这些集成开发环境和编辑器具有丰富的功能,如代码完成和代码生成、测试运行器、调试工具、重构功能、版本控制集成、框架支持,这些功能大大帮助开发人员减少错误和整体开发时间。

除了IDE和编辑器,还需要构建工具和依赖性管理。同样,Java有很多选择,如Apache Ant、Gradle、Maven等。这些工具使我们能够快速集成第三方库,有时我们甚至感觉不到它们是项目的一个独立部分。

此外,当软件进入生产阶段时,我们需要不断监测系统的行为,为此我们有一套完善的工具集,如JMC、JFR、jstack。Mbeans,和Java Agents。

7. 就业机会
现在我们已经涵盖了Java生态系统的技术层面,坚持这个生态系统的最重要的原因是Java的广泛性这一简单事实。

据说,世界上有1200万名Java开发人员。这使得开发人员很容易被雇用。这样做的副作用是,如果你了解Java,你会很快或迟早会得到一份工作。

由于这种语言很普遍,可以被认为是一种通用的编程方法,可用于开发从智能卡到大型企业数据应用,从智能手机应用到火星上的探测器等几乎所有的东西,你总能找到一些有趣的事情来使用Java。此外,除了简单地找到一份工作外,作为一名Java开发人员,在美国也是收入最高的工作之一。