众所周知,Go 、Rust 语言已经成为云原生的主导开发语言,虽然 Rust 在市场范围内不及 Go,但其也在努力地扩展自己的市场地位。作为云原生生态的幸运宠儿,云原生架构中大概 63% 的具有核心竞争力的云原生项目基本上都是基于 Go 来构建,因此,足以证明其牛逼的地位。
此时,Where is Java ?
背景概述
在探讨 Jakarta EE 10 的当下与未来发展时,Eclipse 基金会 Jakarta EE 工作组发布 Jakarta EE 10 迎接云原生 Java 时代,即预示着 Java 也要分一杯云原生时代的“羹”。
根据 Eclipse 基金会执行董事 Mike Milinkovich 所述,Jakarta EE 10 是在现代微服务和容器时代牢牢嵌入 Jakarta EE 的“终极里程碑版本”,引入了用于构建现代、简化和轻量级云原生 Java 应用程序的功能。Jakarta EE 10 的发布反映了全球贡献者社区的工作战绩,基于此版本,使得 Java 在云原生时代带来了关键创新,奠定了其云原生生态地位,这对我们行业的未来至关重要。
据发布的一项关于 2022 年 Jakarta EE 开发人员调查的报告,其结果显示了 Java 企业标准在新的云原生应用程序和微服务开发中的使用越来越多。2022 年 3 月 9 日至 5 月 6 日期间,共有来自世界各地的 1,439 名 Java 开发人员做出了回应,其中 53% 表示他们使用 Jakarta EE 作为其云原生应用程序开发框架的基础。
虽然与 2021 年相比,Jakarta EE 的使用量增加了 6%,但 Spring/Spring Boot、MicroProfile 和 Micronaut 等其他框架的使用量略有下降。然而,Spring/Spring Boot 仍然是最流行的 Java 企业框架,占所有提及的 57%。根据官方报告,Spring Boot 与 Jakarta EE 没有竞争力,因为它依赖 Jakarta EE 开发,两者都是健康的企业 Java 生态系统的重要组成部分。
其实,从本质上来讲,在这个激烈的市场竞争中,尤其是云原生时代的生态环境下,面对 Go、Rust 等语言 2 大高手,Jakarta EE 可能心里面很迫切地希望能够抢回属于自己的那一份。基于云原生生态中最火热的容器化技术的蓬勃发展,因此,与 Kubernetes 容器编排平台的本地集成以及更好地支持微服务或许是其发展规划中的首要核心任务。然而,虽然去年调查参与者仍然希望加快创新步伐,但现在的重点是现有云平台和 Java EE/Jakarta EE 供应商更快地提供支持,以便获得市场份额。
Jakarta EE 10 功能特性
诚然,Jakarta EE 10 给自己的定位是开放的、社区驱动的创新以及推动云原生 Java 技术的未来。光吹牛逼压根没有卵用,那么,它到底具备哪些硬核呢?接下来,我们来了解一下 Jakarta EE 10 的特征与优势,具体如下所示。
正如上文所述,Jakarta EE 10 主要包含用于构建现代化、简化和轻量级云原生 Java 应用程序的新功能。这个新的创新社区驱动版本专为希望开始开发新的企业 Java 应用程序或改进其现有应用程序的组织而设计。
1、现代化
Jakarta EE 10 版本在 20 多个组件规范中提供了新功能。
此版本能够使现代云原生 Java 应用程序的构建者能够在 Java SE 11 和 Java SE 17(Java SE 的最新 LTS 版本)上开发和部署 Jakarta EE 10 应用程序。这允许开发人员充分利用新功能,包括 Java SE 9 中引入并在 Java SE 11 中支持的模块化系统等。
2、简单化
基于 Jakarta EE 10,通过支持更广泛地使用附加注释,使得应用程序开发变得更为简单、高效。
这使得构建模块化应用程序变得更加容易,并提供了跨组件 API 的改进集成。最终,Jakarta EE 10 可帮助开发人员更轻松地实施具有现代安全要求的应用程序,剔除已弃用的 API,并保持与之前 Jakarta EE 版本的高度兼容性。
3、轻量级
Jakarta EE 10 基于 Jakarta EE 核心配置文件定义了一个新的配置文件规范。“核心配置文件”为现代化的轻量级 Java 应用程序和微服务定义了一个多供应商平台。
新的 Core Profile 提供了 Jakarta EE 规范的一个子集,其目标是适用于具有轻量级运行时的微服务开发的较小运行时。这包括用于构建轻量级 Jakarta EE 应用程序的创新的新 CDI-Lite 规范。
Jakarta EE 10 规格
Jakarta EE 10 生态规格如下所示:
Jakarta EE 10 在 20 多个规范中提供了值得注意的 API 升级,并添加了全球社区用户所期望的核心功能。所涉及的优化及改进如下所示:
1、Jakarta 上下文和依赖注入 (CDI) 4.0,包括支持构建时间扩展的 CDI-Lite;
2、支持 OpenID Connect 的 Jakarta Security 3.0;
3、Jakarta Servlet 6.0 用于简化编程和提高安全性;
4、Jakarta Faces (JSF) 4.0 具备使用 CDI 的现代化 API;
5、Jakarta JSON Binding (JSON-B) 3.0 新增了对多态类型的支持;
6、Jakarta RESTful Web 服务标准化了 Java SE Bootstrap API 和对 multipart/form-data 的标准支持;
7、Jakarta Persistence 将 UUID 标准化为基本类型并扩展查询语言和查询 API;
8、Jakarta Concurrency 3.0 移至 Web Profile 并增强了应用程序可用的并行和反应式编程模型;
除此之外,在构建现代化云原生 Java 应用程序方面,Jakarta EE 10 版本能够:
1、在 Java SE 11 和 Java SE 17(Java SE 的最新 LTS 版本)上开发和部署 Jakarta EE 10 应用程序;
2、利用 Java SE 9 中引入并在 Java SE 11 中支持的模块系统等新功能此版本通过支持更广泛地使用附加注释来简化应用程序开发。这使得构建模块化应用程序变得更加容易,并提供了跨组件 API 的改进集成。
最终,此版本可帮助开发人员更轻松地实现具有现代安全要求的应用程序并删除已弃用的 API,同时还保持与之前 Jakarta EE 版本的高度兼容性。
除了这些增强功能之外,还有越来越多的兼容产品列表来支持本已丰富的生态系统。例如,Eclipse GlassFish 7、Open Liberty、22.0.0.10-beta 和 Wild Fly 27.0.0 今天都在提供兼容版本。富士通、IBM、甲骨文、Payara、Red Hat 和 Tomitribe 等 Jakarta EE 工作组的成员正在努力认证 Jakarta EE 10 兼容产品。一旦该版本可用,Jakarta EE 10 兼容实现和产品的列表预计将迅速增长,从而奠定其云原生时代的市场地位。
Jakarta EE 10 的发布是其作为云原生 Java 创新平台发展的重大飞跃,真诚地期望 Jakarta EE 在云原生时代能够发挥其关键作用,引领整个生态稳步前行。