2021-2022 Java 趋势报告

11,495 阅读27分钟

2022 年什么会火?什么该学?本文正在参与“聊聊 2022 技术趋势”征文活动 」

本文属译文,原文来源如下。

🤞 个人主页:@青Cheng序员石头
🤞 粉丝福利:加粉丝群 一对一问题解答,获取免费的丰富简历模板、提高学习资料等,做好新时代的卷卷王!

Key Takeaways

  • Java 11 has reached parity with Java 8 in terms of market share.
  • Java 11在市场份额方面已经达到了与 java8同等的水平。
  • Quarkus, introduced after Micronaut and Helidon, continues to be a popular framework and has "crossed the chasm" into the Early Majority space.
  • Quarkus 是在 Micronaut 和 Helidon 之后引入的,仍然是一个流行的框架,并且已经“越过鸿沟”进入了早期多数空间。
  • Containers have broken through and are now the way that the majority of Java applications are deployed.
  • 容器已经取得突破,现在大多数 Java 应用程序都是以这种方式部署的。
  • Microsoft furthers its commitment to Java with the release of their own downstream distribution of OpenJDK and having joined the Java Community Process. Microsoft Build of OpenJDK is a new participant in the OpenJDK downstream distribution space.
  • 微软发布了自己的下游发行版 OpenJDK,并加入了 Java 社区进程,从而进一步加强了对 Java 的承诺。OpenJDK 的 Microsoft Build 是 OpenJDK 下游分发空间中的一个新参与者。
  • Spring Framework 6 and Spring Boot 3, scheduled for GA releases in 2022, will be a major overhaul of these projects to adopt modularity. Spring Native has emerged as a new tool to convert existing Spring Boot applications, written in Java or Kotlin, to GraalVM native images.
  • Spring Framework 6和 Spring Boot 3计划于2022年发布 GA 版本,它们将是这些项目采用模块化的重大改进。Spring Native 已经作为一个新工具出现,用于将现有的 Spring Boot 应用程序(编写于 Java 或 Kotlin)转换为 GraalVM 本机映像。
  • MicroStream has emerged as a new participant in the Java ecosystem.
  • 已经成为 Java 生态系统中的一个新的参与者。
  • After years of stagnation, VS Code is shaking things up in the Java IDE space.
  • 经过多年的停滞,VS Code 正在改变 javaide 领域的格局。

This article provides a summary of how the InfoQ Java editorial team currently sees the adoption of technology and emerging trends within the Java space.

本文总结了 InfoQ Java 编辑团队目前如何看待 Java 领域中技术的采用和新兴趋势。

We focus on Java the language, as well as related languages like Kotlin and Scala, the Java Virtual Machine (JVM), and Java-based frameworks and utilities.

我们关注 Java 语言,以及相关的语言,如 Kotlin 和 Scala,Java 虚拟机(JVM) ,以及基于 Java 的框架和实用程序。

We discuss trends in core Java, such as the adoption of new versions of Java, and also the evolution of frameworks such as Jakarta EEQuarkusMicronautHelidonMicroProfile and MicroStream.

我们讨论了核心 Java 的发展趋势,比如 Java 的新版本的采用,以及诸如 Jakarta EE、 Quarkus、 Micronaut、 Helidon、 MicroProfile 和 MicroStream 等框架的演变。

This report has two main goals:

本报告有两个主要目标:

  • To assist technical leaders in making mid- to long-term technology investment decisions.
  • 协助技术领导者做出中长期技术投资决策。
  • To help individual developers in choosing where to invest their valuable time and resources for learning and skill development.
  • 帮助个别开发人员选择在哪里投入宝贵的时间和资源进行学习和技能开发。

This is our third published Java trends report. However, this topic has received ample news coverage as we have been internally tracking Java and JVM trends since 2006.

这是我们发布的第三份 Java 趋势报告。然而,自从2006年以来,我们一直在内部跟踪 Java 和 JVM 的发展趋势,这个话题已经得到了充分的报道。

To help navigate current and future trends at InfoQ and QCon, we make use of the “crossing the chasm” mental model for technology success pioneered by Geoffrey Moore in his book of the same name. We try to identify ideas that fit what Moore referred to as the early market, where “the customer base is made up of technology enthusiasts and visionaries who are looking to get ahead of either an opportunity or a looming problem.”

为了帮助引导 InfoQ 和 QCon 的当前和未来趋势,我们利用 Geoffrey Moore 在他的同名书中首创的技术成功的“跨越鸿沟”心理模型。我们试图找到符合摩尔所说的“早期市场”的创意,“这个市场的客户基础是由技术爱好者和有远见的人组成的,他们希望抢在机会或迫在眉睫的问题之前。”

As we have done for the 2020 and 2019 Java trend reports, we present the internal topic graph for 2021:

正如我们为2020年和2019年的 Java 趋势报告所做的那样,我们提供了2021年的内部主题图:

For context, here is our internal topic graph for 2020

下面是我们2020年的内部主题图

Aside from some new technologies having been identified in the Innovators space, notable changes include: defining versions of Spring (and their related projects), Jakarta EE and Scala into different categories. We decided on this approach to avoid generalizing these technologies into one category when varying degrees of maturity and adoption exist.

除了在创新领域发现了一些新技术之外,值得注意的变化包括: 将 Spring (及其相关项目)、 Jakarta EE 和 Scala 的版本定义为不同的类别。我们决定采用这种方法,以避免在存在不同程度的成熟度和采用时将这些技术一般化为一个类别。

Spring Framework 6 and Spring Boot 3, scheduled for GA releases in late 2022, will be going through an overhaul to adopt modularity and will require JDK 17+ and Jakarta EE 9. A preview has recently been made available with the first milestone release of Spring Framework 6.

Spring Framework 6和 Spring Boot 3计划在2022年底发布 GA 版本,它们将进行全面改革,采用模块化,并将需要 JDK 17 + 和 Jakarta EE 9。最近,随着 Spring Framework 6的第一个里程碑版本的发布,一个预览版已经可用。

Introduced at the beginning of 2021, Spring Native is a new tool to convert existing Spring Boot applications, written in Java or Kotlin, to GraalVM native images and is in the very early stages of development.

在2021年初引入,Spring Native 是一个新的工具,用于将现有的 Spring Boot 应用程序(编写于 Java 或 Kotlin)转换为 GraalVM 原生映像,目前还处于非常早期的开发阶段。

Scala 3, released earlier this year, was overhauled with many new features, new syntax and the much-anticipated new Dotty compiler that has been under development for a number of years.

今年早些时候发布的 Scala 3进行了全面改进,增加了许多新特性、新语法和备受期待的新 Dotty 编译器,该编译器已经开发多年。

Earlier this year, Microsoft furthered their commitment to the Java programming language when they introduced Microsoft Build of OpenJDK, their own downstream distribution of OpenJDK.

今年早些时候,微软推出了他们自己的 OpenJDK 下游发行版 Microsoft Build,进一步承诺 Java 编程语言。

AdoptOpenJDK joined the Eclipse Foundation and was immediately renamed Adoptium. The transition to Adoptium included the creation of an Eclipse Working Group and a split of AdoptOpenJDK into multiple sub-projects under the Adoptium top level project: Eclipse AQAvitEclipse Temurin and Eclipse Temurin Compliance.

加入了 AdoptOpenJDK Eclipse基金会,并立即更名为 Adoptium。向 Adoptium 的过渡包括创建一个 Eclipse 工作组,并将 AdoptOpenJDK 拆分为 Adoptium 顶级项目下的多个子项目: Eclipse AQAvit、 Eclipse Temurin 和 Eclipse Temurin Compliance。

JDK 17

Beckwith: Java is now a more vigorous enforcement of OOP principles via JEP 403: Strongly Encapsulate JDK Internals. Vector computation via a platform-agnostic Vector API. The language additions, such as Records, and JVM improvements, such as project Valhalla, remove many verbosities and further embrace the concept of immutability, thus providing opportunities for performance optimizations.

通过 jep403: 强封装 JDK 内部构件,Java 现在是对 OOP 原则更加严格的执行。基于平台无关的 Vector API 的向量计算。添加的语言,如 Records,以及 JVM 改进,如 project 瓦尔哈拉,消除了许多冗长的错误,进一步接受了不变性的概念,从而为性能优化提供了机会。

Mihalceanu: This year pleasantly surprised Java developers with both LTS and non-LTS Java releases. The Java 17 release was the confirmation that many of those preview features are now generally and long-term available. It also added a sense of urgency for some projects that still run on Java 8 to migrate to a newer version. Java 17 is the LTS that fulfilled the lifelong dream of having helpful NullPointerExceptions.

Mihalceanu: 今年喜欢·一个人 Java 开发人员同时发布了 LTS 和非 LTS Java 版本。Java 17的发布确认了许多预览功能现在已经普遍并且长期可用。这也增加了一些仍然运行在 Java 8上的项目迁移到新版本的紧迫感。17是实现了 nullpointerexception 的终身梦想的 LTS。

Rahman: As always, all parts of the Java ecosystem remain lively. This speaks to the fundamental strength of Java. I think Java SE 17 has been particularly well received, especially features like Records. Runtimes like WildFly, Payara and Open Liberty are adopting Java SE 17. While some developers have adopted Java SE 11, Java SE 8 remains remarkably sticky. It is possible Java SE 17 will finally change that.

Rahman: 一如既往,Java 生态系统的所有部分仍然是活跃的。这说明了 Java 的基本优势。我认为 Java SE 17特别受欢迎,尤其是像 Records 这样的特性。像 WildFly、 Payara 和 Open Liberty 这样的运行时正在采用 Java SE 17。虽然一些开发者已经采用了 Java SE 11,但是 Java SE 8仍然非常粘手。17最终有可能改变这一点。

Ritter: The release of JDK 17 has been significant. This means developers now have a new long-term support (LTS) release from all the OpenJDK distributions. For those not wishing to upgrade their Java version every six months to remain as stable and secure as possible, this is an important release.

Ritter: JDK 17的发布意义重大。这意味着开发人员现在有了来自所有 OpenJDK 发行版的新的长期支持(LTS)版本。对于那些不希望每六个月升级一次 Java 版本以尽可能保持稳定和安全的用户来说,这是一个重要的版本。

I like the way that we are seeing more small language features added to the platform more quickly than we've ever seen before. This is thanks to the six-month release cadence, which also makes both incubator modules and preview features practical.

我喜欢我们看到平台以前所未有的速度增加了更多的小语言功能。这要感谢为期六个月的发布节奏,这也使得孵化器模块和预览功能变得实用。

There are also some interesting developments in how the JVM can work in a cloud environment such as the new project in OpenJDK called co-ordinated restore at checkpoint (CRaC). Features, like records, are great for developing new code.

在 JVM 如何在云环境中工作方面也有一些有趣的进展,比如 OpenJDK 中称为 co-coordinated restore at checkpoint (CRaC)的新项目。特性,比如记录,对于开发新代码非常有用。

Evans: The release of Java 17 LTS, and the ability to finally start deploying code that leverages Records and Sealed Types, as well as JFR Streaming for monitoring groups of JVMs. The path towards standardization in the Observability space - especially OpenTelemetry. Early signs of a consensus emerging around what it means for Java to be statically deployed ("Static Java"). I also think Panama will be a bigger deal than people expect.

Evans: Java 17 LTS 的发布,以及最终开始部署利用 Records 和 Sealed Types 的代码的能力,以及 JFR Streaming 用于监视 jvm 组的能力。可观测空间的标准化路径——特别是 opentelementtry。关于静态部署 Java 意味着什么的早期迹象正在形成共识(“静态 Java”)。我也认为巴拿马会比人们预期的更重要。

Downstream Distributions of OpenJDK

Costlow: There are too many non-differentiated JDK distributions out there now. Microsoft has one, Eclipse has Adoptium with Temurin, Oracle has theirs and an OpenJDK build, Azul, AWS Corretto, Red Hat, Liberica, SAP Machine, etc. I'm seeing a proliferation of these, but it's hard to keep them straight. Snyk's survey seemed relatively in line with what I see in terms of usage. Given that they're all compatible, I'd like to see a "Just get me OpenJDK" randomizer in the marketplace to remove a decision for new junior Java devs.
The Eclipse branding in particular is confusing: Adoptium is a group inside Eclipse, which is also a group. Temurin is the thing you use and it is OpenJDK. Imagine learning Java on your own and reading this sentence: "Eclipse Temurin is the name of the OpenJDK distribution from Adoptium." Fewer brand names is better.

Costlow: 现在有太多没有区分的 JDK 发行版。微软有一个,Eclipse 有 Adoptium 和 Temurin,Oracle 有他们的和 OpenJDK 构建,Azul,AWS Corretto,Red Hat,Liberica,SAP Machine,等等。我看到这些东西越来越多,但很难把它们弄清楚。斯奈克的调查似乎与我所看到的使用情况相对一致。考虑到它们都是兼容的,我希望看到市场上有一个“ Just get me OpenJDK”随机化器来移除新的初级 Java 开发者的决定。Eclipse 品牌特别令人困惑: Adoptium 是 Eclipse 内部的一个组,它也是一个组。是你使用的东西,它是 OpenJDK。想象一下自己学习 Java 并读到这句话: “ Eclipse Temurin 是 Adoptium 公司的 OpenJDK 发行版的名称。”品牌越少越好。

Janssen: Liberica, which is from Bellsoft, actually offers quite some interesting products which differentiate them from other JDK vendors. For instance, a full JDK which still contains JavaFX. I only know of ojdkbuild which offers a similar build. Next to that, they have more variants of the JDK and the JRE.

Janssen: 来自 Bellsoft 的 Liberica 实际上提供了一些有趣的产品,使它们有别于其他 JDK 供应商。例如,一个完整的 JDK 仍然包含 JavaFX。我只知道 ojdkbuild 提供了类似的构建。除此之外,他们还有更多 JDK 和 JRE 的变体。

Azul supports non-LTS versions with minor updates for a longer period of time. Some vendors offer Docker images, etc. So there are some differences, but it's hard for end users to compare them and make a good decision about which one to select.

Azul 支持非 lts 版本,支持较长时间的小更新。一些供应商提供 Docker 图像等。所以有一些差异,但是对于最终用户来说很难比较它们并且做出一个好的决定选择哪一个。

Java EE/Jakarta EE

Javaee/Jakarta EE

Rahman: The transition from Java EE to Jakarta EE is one of the largest and most significant technology transfers in our space. That is finally on solid ground with Jakarta EE 9.x. It is very good to see how Jakarta EE 10 is now progressing towards a release early next year. It looks like many of the items in the Jakarta EE Ambassador's Contribution Guide are materializing, closing some long-standing gaps. I think this is a big relief to long term Java EE users.

Rahman: 从 javaee 到 Jakarta EE 的过渡是我们这个领域最大、最重要的技术转让之一。最终通过 Jakarta EE 9. x 奠定了坚实的基础。很高兴看到 Jakarta EE 10正朝着明年年初发布的方向取得进展。看来《雅加达能源效益大使贡献指南》中的许多项目正在得到落实,缩小了一些长期存在的差距。我认为这对于长期使用 javaee 的用户来说是一个很大的安慰。

I am also very happy to see Jakarta EE 9.x building momentum. Most runtimes have adopted the javax to jakarta namespace transition including Tomcat and Jetty. Spring Framework 6 is committed to adopting both Java SE 17 and Jakarta EE 9. Similarly, MicroProfile 5 is transitioning to Jakarta EE. According to the 2021 Jakarta EE Developer Survey, a substantial number of developers have already transitioned to the jakarta namespace or are planning to do so.

我也很高兴看到 Jakarta EE 9. x 正在形成势头。大多数运行时都采用了 javax 到 jakarta 的名称空间转换,包括 Tomcat 和 Jetty。Spring Framework 6致力于采用 Java SE 17和 Jakarta EE 9。同样,MicroProfile 5正在向 Jakarta EE 过渡。根据2021年 Jakarta EE 开发人员调查,相当多的开发人员已经或计划转移到 Jakarta 名称空间。

The Jakarta EE 10 Core Profile is paving the way for Quarkus and Helidon becoming fully compatible, the MicroProfile Config API is transitioning to the new Jakarta Configuration specification and the same is happening with MicroProfile Context Propagation. It is possible the same will happen with the MicroProfile REST Client and JWT Propagation.

10 Core Profile 正在为 Quarkus 和 Helidon 的完全兼容铺平道路,MicroProfile Config API 正在过渡到新的 Jakarta Configuration 规范,MicroProfile Context 的传播也是如此。MicroProfile REST 客户机和 JWT 传播可能也会发生同样的情况。

Redlich: With the release of Jakarta EE 9, tooling vendors can support the new jakarta package namespace, development teams can test migration of their applications to the new namespace, and runtime vendors can test and deliver options and capabilities that support migration and backwards compatibility with Jakarta EE 8.

Redlich: 随着 Jakarta EE 9的发布,工具供应商可以支持新的 Jakarta 包名称空间,开发团队可以测试应用程序向新名称空间的迁移,运行时供应商可以测试和交付支持迁移和与 Jakarta EE 8向后兼容的选项和功能。

Jakarta EE 9 may also be considered a foundation for innovation to drive new features in Jakarta EE 10 and beyond.

雅加达 EE 9也可以被视为创新的基础,以推动雅加达 EE 10及以后的新特性。

GraalVM/Spring Native

Mihalceanu: Building a native executable is another topic often marked as “most wanted” as the race for smaller, faster containerized applications continues.

Mihalceanu: 随着对更小、更快的容器化应用程序的竞争的继续,构建本地可执行文件是另一个经常被标记为“最想要”的主题。

Rahman: It is also very good to see that Spring Native is making progress.

拉赫曼: 看到《Spring Native》取得进展也很好。

Costlow: I like seeing the role of native apps taking shape, but disappointed by the lack of an actual specification or working group. It seems to be kind of "you get whatever GraalVM happens to do" and it behaves differently at times than a standard JDK - similar but not the same.

科斯特洛: 我喜欢看到本地应用程序的角色逐渐成型,但对缺乏实际的规范或工作组感到失望。它看起来有点像“ GraalVM 碰巧要做什么就做什么”,有时它的行为与标准 JDK 不同——类似但不同。

Janssen: Spring Native competes with all the GraalVM and other frameworks with fast startup times and low memory usage.

与 GraalVM 和其他框架竞争的是启动速度快、内存使用率低的 Spring Native。

Silz: Once Spring Boot supports native compilation with GraalVM, fast and small native Java programs will go mainstream. This makes Java more competitive for serverless solutions and may help it in the microservices arena. I say "may" because as of today, I think that the JVM JIT still has better throughput/performance for long-running processes than GraalVM. Either way, that'll get a lot of press and make Java more competitive overall.

Silz: 一旦 Spring Boot 支持 GraalVM 的本地编译,快速和小型的本地 Java 程序将成为主流。这使得 Java 在无服务器解决方案中更具竞争力,并可能有助于它在微服务领域的发展。我说“可能”是因为到目前为止,我认为 JVM JIT 对于长时间运行的流程仍然比 GraalVM 具有更好的吞吐量/性能。无论哪种方式,这都会引起很大的关注,并使 Java 在总体上更具竞争力。

ARM64/Windows on ARM

Beckwith: ARM64 is now commodity hardware. As a result, the presence of Java development kits and the Java runtime environments optimized for deployment on ARM64 have gained mainstream popularity.

Arm64现在是商品硬件。因此,Java 开发工具包和为部署在 arm64上优化的 Java 运行时环境的出现已经获得了主流的欢迎。

Silz: Java 16 supports Windows on ARM. But I think only Java 17 with ARM on macOS will blow the doors wide-open. I believe about a quarter of all Java developers use Macs. And by the end of 2022, they can only buy Macs with ARM. I expect that this will push both Windows and Linux on ARM to get better, too.

16支持 ARM 上的 Windows。但是我认为只有在 macOS 上安装了 ARM 的 java17才能打开大门。我相信大约四分之一的 Java 开发者使用 mac。到2022年底,他们只能用 ARM 购买 mac 电脑。我希望这也能推动 ARM 上的 Windows 和 Linux 系统变得更好。

Jakarta EE and MicroProfile Alignment == Cloud Native for Java

Redlich: The MicroProfile and Jakarta EE Working Groups, two complementary initiatives under the auspices of the Eclipse Foundation, have collaborated to form a Cloud Native for Java (CN4J), an alliance to define Jakarta EE and MicroProfile positioning and alignment, both branding and technical for cloud-native technologies.

Redlich: MicroProfile 和 Jakarta EE 工作组,这两个在 Eclipse基金会的支持下互为补充的项目,已经合作形成了一个针对 Java 的 Cloud Native for Java (CN4J) ,一个定义 Jakarta EE 和 MicroProfile 定位和调整的联盟,包括针对本地云技术的品牌和技术。

Rahman: It is a pleasant surprise to see Quarkus making well-earned headway with both Java EE and Spring developers. It is also very good to see Jakarta EE and MicroProfile alignment finally happening.

Rahman: 看到 Quarkus 与 javaee 和 Spring 开发人员取得了良好的进展,这是一个令人愉快的惊喜。很高兴看到 Jakarta EE 和 MicroProfile 的对齐最终实现。

JavaFX/Gluon

Costlow: I am extremely impressed at the work that Gluon is doing to make a single JavaFX codebase run across everywhere. Web was the missing piece from before and, frankly, client Java now seems cool again.

Costlow: 我对 Gluon 所做的工作印象深刻,它让 JavaFX 的代码库遍布各个角落。Web 是以前缺失的部分,坦率地说,客户机 Java 现在看起来又很酷了。

Adopting Modularity

Silz: I think that JPMS tries to solve three problems: class loading woes for app servers; better structuring of the JDK and all Java applications; and reducing the JVM footprint for deployment/runtime.

Silz: 我认为 JPMS 试图解决三个问题: 应用服务器的类加载困难; 更好地构建 JDK 和所有 Java 应用程序; 以及减少部署/运行时的 JVM 占用。

But at least when JPMS finally launched after multiple delays, there were good enough solutions for these problems already: OSGI for class loading; Domain-Driven Design/Clean Architecture/Modulith/ArchUnit tests for Java program structure; and ahead-of-time compilation for reduced JVM footprint.

但至少当 JPMS 在多次延迟后最终发布时,已经有了足够好的解决方案来解决这些问题: 用于类装载的 OSGI; 用于 Java 程序结构的领域驱动设计/清洁架构/模块/ArchUnit 测试; 以及用于减少 JVM 占用的提前编译。

As few unreliable data points we may have, they all show usage of Java 8 and older either being greater than or equal to that of Java 11 and later. I think this is partly because modules gave Java 9+ the reputation of being "hard to upgrade to from Java 8," as Mark Reinhold acknowledges. That's an unintended consequence of JPMS. And it means that at least half of all Java developers can't use the Java advances of the last seven years because they're stuck on Java 8.

尽管我们可能有一些不可靠的数据点,但它们都显示Java 8及以上版本的使用量大于或等于Java 11及以上版本。我认为这部分是因为模块给了Java 9+"很难从Java 8升级到 "的名声,正如Mark Reinhold 承认的一样。这是JPMS的一个意想不到的后果。这意味着至少有一半的Java开发者不能使用过去7年的Java进步,因为他们被困在Java 8上。

The opportunity cost of working on modules for probably 7+ years means that many other Java improvements either fell to the wayside or only appeared in Java 10 and later. The var keyword for variables, the new switch syntax, and Java records reduce a lot of the boilerplate that Java's infamous for. If those were in Java 9 instead of Java modules, I think Java would be in a better place now because it had better developer productivity.

在模块上工作7年以上的机会成本意味着许多其他的 Java 改进要么半途而废,要么只出现在 Java 10及以后的版本中。变量的 var 关键字、新的 switch 语法和 Java 记录减少了很多 Java 声名狼藉的样板文件。如果这些模块是在 Java 9而不是 Java 模块中,我认为 Java 现在会处于一个更好的位置,因为它有更好的开发效率。

What Has Changed Since Last Year?

Beckwith: Many architects and developers have tamed the GC (garbage collection) pause times due to the improvements to the existing collectors. Many others have tamed the tail latencies by transitioning to low-latency, adaptive GCs for their workloads.

Beckwith: 由于对现有收集器的改进,许多架构师和开发人员已经驯服了 GC (垃圾收集)暂停时间。许多其他人已经通过过渡到低延迟、工作负载的自适应 gc 来驯服了尾潜伏期。

Evans: Java 11 has essentially reached parity with Java 8 in terms of market share. Containers have broken through and are now the way that the majority of Java apps are deployed. Quarkus continues to mature and gain ground and new fans.

11在市场份额方面基本上已经达到了与 java8同等的水平。容器已经打破了这一局面,现在大多数 Java 应用程序都是这样部署的。夸库斯不断成熟,不断发展壮大,不断吸引新的粉丝。

Redlich: A few Eclipse Foundation Working Groups have been established: MicroProfile, OSGi and Adoptium (formerly known as AdoptOpenJDK). The MicroProfile Working Group and the Jakarta EE Working Group have collaborated on a Cloud Native for Java (CN4J) Alliance initiative.

Redlich: 已经建立了一些 Eclipse基金会工作组: MicroProfile,OSGi 和 AdoptOpenJDK。MicroProfile 工作组和雅加达电子工程工作组合作开发了一个针对 Java 的云本机(CN4J)联盟倡议。

Microsoft furthers its commitment to Java by creating its own downstream distribution of OpenJDK, Microsoft Build of OpenJDK, and by joining the Java Community Process.

微软通过创建自己的 OpenJDK 的下游发行版,OpenJDK 的 Microsoft Build,以及加入 Java 社区进程,进一步加强了对 Java 的承诺。

What is the Java Community Saying?

Beckwith: Pattern matching for switch statements, native image, cloud native-JVM, and JVM on accelerators, project Loom and Graal.

Beckwith: 用于 switch 语句、本机映像、云本机 JVM 和在加速器、项目 Loom 和 Graal 上的 JVM 的模式匹配。

Mihalceanu: Upgrading. Because the Java language evolved, framework features flourished as well. In my experience, writing clean and secure code promptly depends on the practices shared by a team. Nowadays, it is possible to minimize the time spent developing or fixing code with continuous testing and fewer local configurations thanks to some framework built-in capabilities.

Mihalceanu: 升级。由于 Java 语言的发展,框架特性也得到了蓬勃发展。根据我的经验,及时编写干净、安全的代码取决于团队共享的实践。如今,由于一些框架内置的功能,通过持续的测试和更少的本地配置,可以最小化开发或修复代码所花费的时间。

Rahman: Java SE 17 and Quarkus are enjoying the limelight. Kubernetes remains wildly popular. There is early enthusiasm around Spring Native. Folks in the open standard Java community are watching Jakarta EE 10 and MicroProfile/Jakarta EE alignment closely. There is something good happening pretty much for everyone in the ecosystem.

Rahman: Java SE 17和夸库斯正在享受聚光灯。库伯内特斯依然广受欢迎。早期的人们对《Spring Native》充满热情。开放标准 Java 社区的人们正在密切关注 Jakarta EE 10和 MicroProfile/Jakarta EE 对齐。对于生态系统中的每个人来说,都有一些好的事情发生。

Ritter: The focus for pretty much all developers, at least when working on new development, is how to make the most effective use of the cloud, especially through a microservice architecture. Leveraging containers and technologies like Kubernetes and Spring Boot are very powerful when writing these types of applications. I hear a lot of discussion about how to use these.

Ritter: 几乎所有开发人员的关注点,至少在开发新项目时,是如何最有效地利用云,尤其是通过微服务架构。在编写这些类型的应用程序时,利用 Kubernetes 和 Spring Boot 等容器和技术是非常强大的。我听到很多关于如何使用这些的讨论。

Evans: Java 17, Loom, Quarkus.

17,Loom,Quarkus.

What’s New and Exciting That We Didn’t Expect?

什么是我们没有预料到的新鲜刺激的?

Beckwith: I had anticipated the richness of the Java ecosystem and the different JDK vendor flavors of the Java Dev Kits offerings. Still, the sheer participation and the agreement towards the accelerated release cadence were a welcome surprise.

Beckwith: 我已经预料到了 Java 生态系统的丰富性,以及 Java Dev Kits 提供的不同 JDK 供应商风格。尽管如此,对于加速发布节奏的参与和协议仍然是一个受欢迎的惊喜。

Mihalceanu: What I love about Java is that each release adjusts both the language and the experience of developers. Enhancements such as the new date formatter for period-of-day introduced in java.time.format.DateTimeFormatter and DateTimeFormatterBuilder classes, pattern matching with switch, or the default method toList() in java.util.stream.Stream interface help developers to write cleaner and easier to read code.

Mihalceanu: 我喜欢 Java 的一点是,每个版本都调整了开发者的语言和经验。以 java.time.format 引入了诸如日期格式化程序之类的增强功能。DateTimeFormatter 和 DateTimeFormatterBuilder 类、带有 switch 的模式匹配或 java.util.stream 中的默认方法 toList ()。流接口帮助开发人员编写更清晰和更容易阅读的代码。

Ritter: Looking at the Java platform, there wasn't anything we didn't expect and that's a good thing. Now that new features use JEPs to define what they are intended to do, we have a clear roadmap of the things that will be included in Java looking some years into the future. This means developers can be comfortable that there are not going to be big changes that impact backwards compatibility, at least not without plenty of time to evaluate and discuss them.

Ritter: 看看 Java 平台,没有什么是我们没有预料到的,这是一件好事。既然新特性使用 jep 来定义它们打算做什么,我们就有了一个明确的路线图,展望未来几年 Java 中将包含哪些内容。这意味着开发人员可以放心,不会发生影响向后兼容性的重大变化,至少在没有足够时间评估和讨论这些变化的情况下是这样。

Evans: A new focus on warm start / suspend-and-resume / CRaC technologies from a number of providers, including Azul and Red Hat.

Evans: 许多供应商,包括 Azul 和 Red Hat,对热启动/暂停和恢复/CRaC 技术的新关注。

Redlich: The emergence of MicroStream, a Java persistence company. While their history goes back to 2013, the company was formally founded in 2019. Since then, they open-sourced MicroStream earlier this year with the release of MicroStream 5.0 and has collaborated with MicroStream has been integrated with Helidon and has just released version 6.0.

Redlich: MicroStream 的出现,一个 Java 持久化公司。虽然他们的历史可以追溯到2013年,但该公司于2019年正式成立。此后,他们在今年早些时候发布了开源的 MicroStream 5.0,并与 MicroStream 合作,已经与 Helidon 集成,刚刚发布了6.0版本。

Silz: After years of stagnation, VS Code is shaking things up in the Java IDE space. It's something new: A cross-platform, cross-language IDE that's fast, has great plug-ins, and is loved by its users! If that sounds like "Eclipse IDE 20 years ago", you're right!

Silz: 经过多年的停滞,VS Code 正在改变 javaide 领域的格局。这是一个新的东西: 一个跨平台、跨语言的 IDE,速度快,有很好的插件,并且深受用户的喜爱!如果这听起来像“20年前的 Eclipse IDE”,那么你是对的!

VS Code recently boosted its Java capabilities. I expect it to become the best free Java IDE. I think Eclipse recognized that threat and created a Working Group to coordinate a defense. I'm not sure how much IntelliJ will be affected.

最近提高了它的 Java 能力。我希望它能成为最好的免费 Java IDE。我认为 Eclipse 意识到了这种威胁,并创建了一个工作组来协调防御工作。我不知道这会影响到多少情报。

One exciting side effect of using VS Code for Java development is that you can easily develop with non-JVM languages. I don't think you can do that in Eclipse at all, or only in a limited way. You can develop with non-JVM languages using JetBrains "All Products Pack", but then you have to launch different IDES that don't share settings, plug-ins, or keyboard shortcuts.

在 Java 开发中使用 VS 代码的一个令人兴奋的副作用是,您可以很容易地使用非 jvm 语言进行开发。我认为在 Eclipse 中完全不能这样做,或者只能以有限的方式这样做。您可以使用 JetBrains“ All Products Pack”使用非 jvm 语言进行开发,但必须启动不共享设置、插件或键盘快捷键的不同的 ide。

The Java Community

Mihalceanu: I started my Java journey while in university, learning that Java supports Object-Oriented Programming with design patterns and coding best practices. As a professional, I am happy to see that throughout the time, the language has embraced other paradigms as well: functional, reactive thus giving more implementation options without losing the readability. How to choose between each model? Occasionally profile your application, spot bottlenecks, and improve your implementation logic.

我在大学的时候开始了我的 Java 之旅,了解到 Java 通过设计模式和编写最佳实践来支持面向对象程序设计。作为一个专业人士,我很高兴地看到,整个过程中,语言也包含了其他范式: 功能性的、反应性的,因此在不丧失可读性的情况下提供了更多的实现选项。如何在每种模式之间进行选择?偶尔分析您的应用程序,发现瓶颈,并改进您的实现逻辑。

Yet, no advancement is possible without people. The Java Community is large, vibrant, and welcoming, present both physically and virtually all for one purpose: to share knowledge, improve ourselves, and succeed when facing problems.

然而,没有人就不可能有进步。Java社区是一个庞大的、充满活力的、热情洋溢的社区,无论是实际存在还是虚拟存在,都是为了一个目的:分享知识,提高自己,并在面对问题时取得成功。


少年,没看够?点击石头的详情介绍,随便点点看看,说不定有惊喜呢?欢迎支持点赞/关注/评论,有你们的支持是我更文最大的动力,多谢啦!