Java EE改名Jakarta EE,jakarta对程序开发的影响

一、前言

很多Java程序员在使用新版本的Spring6或者springboot3版本的时候,发现了一些叫jakarta的包。我在阅读开源工作流引擎camunda源代码的时候,也发展了大量jakarta的工程包。

比如:camunda的webapps编译工程就提供了2种方式javax和jakarta

* `assembly` - Java sources and tests for the Camunda web application based on `javax` namespace.
* `assembly-jakarta` - Java sources and tests for the Camunda web application based on `jakarta` namespace.
  * This module is created from the `assembly` module via code transformation.

网上也有好多同学使用Tomcat时遇到到Jakarta.servlet与javax.servlet包冲突的问题。

Tomcat10中解决eclipse内部Jakarta.servlet与javax.servlet不兼容问题方法:

[JavaWeb]Tomcat10中解决eclipse内部Jakarta.servlet与javax.servlet不兼容问题方法-CSDN博客

引起以上问题的原因是:Java EE更名为Jakarta EE,javax命名空间变为jakarta,javax包名前缀变为jakarta。

二、Java EE为什么更名Jakarta EE

2009年4月20日,甲骨文(Oracle)公司和Sun公司今天共同宣布了最终协议,甲骨文公司将以74亿美元收购SUN公司。当时,Sun Microsystems被誉为世界上最具前瞻性的IT公司之一,有能力以开放软件及硬件为结合,进行全面统一的系统,给客户带来最大的价值。Oracle收购Sun Microsystems表明,它希望借助Sun Microsystems的关键软件和技术资源,将自身现有的专业的管理体系,硬件解决方案,及应用程序发展技术集成在同一个平台上,从而创建一个更加完善的企业增值产品和服务。

2018年,Oracle(甲骨文)决定将Java EE移交给开源组织Eclipse基金会,但甲骨文不允许开源组织用Java的名号,于是Eclipse选出了 "Jakarta EE" 和"Enterprise Profile"两个名字,最终前者胜出。

Eclipse基金会高管Mike Milinkovich表示,7000多人参与了Java EE的更名投票,64%的票数支持改为Jakarta EE,另有35.6%的票数支持Enterprise Profile。

Oracle将Java EE(Java SE还自己保留)交给开源组织,Eclipse基金会接手。但Oracle不允许开源组织使用Java名号,所以Jakarta EE名称于2018.02.26应运而生Oracle收购了Sun公司,涉及到商标和版权原因Javax改名为Jakarta迫不得已。

从Java EE到Jakarta EE,企业版Java、JDK的发展历程,参考:

从Java EE到Jakarta EE,企业版Java的发展历程-腾讯云开发者社区-腾讯云

三、Java EE更名Jakarta对软件影响

Spring Framework作为Java领域最为流行的框架,有非常庞大的用户群体和项目应用,Java开源框架里绝对的TOP1。我们首先看看Java EE更名Jakarta对Spring Framework的影响。

Spring Framework 6正式发布,携JDK 17&Jakarta EE开启新篇章,Spring Framework为何一跃将JDK的baseline从JDK 8提到JDK 17,以及废弃javax,启用全新的jakarta命名空间。Spring Framework 6基于JDK 17构建。换句话讲,若想使用Spring Framework 6那么你的JDK环境最低要求JDK 17。

javax命名空间其实早已成为过去式,毕竟现在已快2024年了。这次Spring团队也是跟着JDK一起,顺势的完全摒弃掉了javax命名空间,拥抱Jakarta EE。

另外,之前有些内置进JDK里面的Java EE注解,现在也换“包名”啦,如具有代表性的:JSR-330的@Inject、JSR 250的@PostConstruct、@Predestroy以及及其常用的@Resource注解,Resource包名变成了jakarta.annotation.Resource。

从Jakarta EE 9开始,便使用了全新的jakarta.*命名空间。本次建议使用从Jakarta EE 10起步。对应的技术主要有:

  • Jakarta Servlet 6.0
  • Jakarta Servlet JSP JSTL 3.0
  • Jakarta Validation 3.0
  • Jakarta WebSocket 2.1
  • Jakarta Persistence 3.1
  • Jakarta JMS 3.1
  • Jakarta JSON 2.1
  • Jakarta JSON Bind 3.0
  • Jakarta Activation 2.1
  • Jakarta Mail 2.1
  • Jakarta Transaction 2.0
  • Jakarta WS RS 3.1
  • Jakarta XML SOAP 3.0
  • Jakarta XML WS 4.0

比如:开发web程序最常用的servlet,从maven中央仓库检索,发现:

servlet4.0.1以前的版本是javax,从4.0.2版本以后均迁移到了jakarta

<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version></dependency>

servlet-api从4.0.2版本—6.0.0版本均变成了jakarta.servlet-api

<dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>4.0.2</version></dependency>

参考文章:https://fangshixiang.blog.csdn.net/article/details/128056207

四、Jakarta EE发展现状

打开Jakarta官方网站:Jakarta® EE | Cloud Native Enterprise Java | Java EE | the Eclipse Foundation | The Eclipse Foundation

使用 ENTERPRISE JAVA 为云原生架构构建开源生态系统,最新版本:Jakarta EE 10 现已上市。

Jakarta EE 平台和配置文件规范是各个规范的总括规范。Jakarta EE 平台包括大多数单独的规范,而 Profile 规范包括用于开发 Web 平台和微服务架构的单个规范。

我们看看Jakarta的生态,包括 Fujitsu、IBM、Oracle、Red Hat 和 Tomittribe 在内的全球企业 Java 生态系统领导者正在共同努力,推动 Java EE 和 Jakarta EE 的发展,以支持将关键任务应用程序和工作负载迁移到云中。另外中国开发应用中间件的企业也在其中,包括普元、宝兰德、东方通、金蝶、华宇、亚信等公司。

未来Java项目升级JDK后,可能会涉及到到代码的升级,官方出了一篇文章:如何升级到 Jakarta EE 10 和 GlassFish 7 – 这比您想象的要容易得多。https://omnifish.ee/2023/05/06/how-to-upgrade-to-jakarta-ee-10-and-glassfish-7/

从旧版本的 Jakarta EE 或 Java EE 升级到 Jakarta EE 10 可能有点棘手,可能需要额外注意细节。您可能会遇到的主要事情之一是确保现有代码和库兼容。某些库可能仍在使用该软件包,这可能会导致在尝试在 Jakarta EE 服务器(如 Eclipse GlassFish 7)上运行应用程序时发生冲突。您可能还会遇到一些在 Jakarta EE 10 中删除的已弃用 API 的问题。javax

但别担心,我们已经为您准备好了!在这篇文章和本系列的未来文章中,我们将解释您需要了解的所有信息,以成功且几乎立即升级到 Jakarta EE 10。

升级到 Jakarta EE 10 或 GlassFish 7 的挑战分为以下 3 大类:

  1. 更改包前缀需要更新对旧包的所有引用javaxjakarta
  2. 过时的批注可能需要替换为替代批注
  3. 重写使用已删除 API 的代码,这些 API 没有直接的替代方案

以上所有内容不仅适用于您的代码库,也适用于您的应用程序使用的所有依赖项。许多流行的库已经有与 Jakarta EE 10 兼容的新版本,因此更新它们就足够了。但有些图书馆可能不支持 Jakarta EE 10,需要进行特殊调整。幸运的是,有一些工具可以在源代码级别和二进制(字节码)级别上自动执行此操作。

幸运的是,许多挑战都可以使用免费和开源工具(如 Openrewrite、WindUp 和 Eclipse Transformer)自动完成。Openrewrite 是一个强大的工具,可以自动更改应用程序的源代码,例如使用新前缀更新对旧包的所有引用。

以下是雅加达Jakarta 官方调查问卷的统计,雅加达Jakarta的应用情况。

Jakarta EE是用于构建云原生应用程序的顶级框架的基础。

雅加达Jakarta 构建云原生应用程序的EE使用率从2021年的47%增加到2022年的53%,而Spring/Spring Boot和MicroProfile的使用量有所下降。

https://5413615.fs1.hubspotusercontent-na1.net/hubfs/5413615/Jakarta%20EE/2022%20Jakarta%20EE%20Developer%20Survey%20Findings.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/493296.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

精准测试探索

一、背景 什么是精准测试&#xff1f;通常研发提测的需求有代码变更&#xff0c;针对研发的代码变更点以及关联点进行测试&#xff0c;我们称之为精准测试。 很多时候&#xff0c;对变更点、影响范围的评估并不是很准确&#xff0c;偶尔会出现影响范围评估不全或者影响范围评…

《Docker 简易速速上手小册》第5章 Docker Compose 与服务编排(2024 最新版)

文章目录 5.1 理解 Docker Compose5.1.1 重点基础知识5.1.2 重点案例&#xff1a;部署 Flask 应用和 Redis5.1.3 拓展案例 1&#xff1a;多服务协作5.1.4 拓展案例 2&#xff1a;使用自定义网络 5.2 编排多容器应用5.2.1 重点基础知识5.2.2 重点案例&#xff1a;部署 Flask 应用…

【Vuforia+Unity】AR05-实物3D模型识别功能实现(ModelTarget )

不管是什么类型的识别Vuforia的步骤基本都是: 把被识别的物体转成图、立体图、柱形图,3D模型、环境模型,然后模型生成Vuforia数据库-导入Unity-参考模型位置开始摆放数字内容,然后参考模型自动隐藏-发布APP-识别生活中实物-数字内容叠加上去! 对于3D物体的识别,可以是虚…

跟着cherno手搓游戏引擎【26】Profile和Profile网页可视化

封装Profile&#xff1a; Sandbox2D.h:ProfileResult结构体和ProfileResult容器&#xff0c;存储相应的信息 #pragma once #include "YOTO.h" class Sandbox2D :public YOTO::Layer {public:Sandbox2D();virtual ~Sandbox2D() default;virtual void OnAttach()ove…

无线综合测试仪8960(E5515C)

无线综合测试仪8960&#xff08;E5515C&#xff09; 简述&#xff1a; 8960是美国安捷伦&#xff08;Agilent&#xff09;公司生产的手机综测仪&#xff0c;8960测试仪是一款E5515C主机&#xff0c;具有特定于技术的硬件选件和软件应用程序。有两个硬件选项&#xff0c;8960能…

当你使用ChatGPT时,选择合适的提示(prompt)是引导对话方向的关键

马斯克曾说&#xff0c;人生中最重要的事情&#xff0c;就是提出真正的好问题。 因此&#xff0c;我要开始接触某个新领域&#xff0c;并且开始要自主学习的时候&#xff0c;我首先要问自己这个问题&#xff1a; 我为什么要学这个&#xff0c;学这个的目的是为了创造什么&#…

x86使用execve执行一个elf文件并传递参数--代码思路分析

execve(const char *filename, char *const argv[ ], char *const envp[ ]) 视频教程以及实际代码可以看这一个教程 其他的需要的知识 GDT表 GDT表虚拟内存 页表 任务切换 fork实现 elf文件加载 这一个是一个Linux下面的标准接口 这一个的实际作用的是执行一个可执行文件 把当…

网络设备和网络软件

文章目录 网络设备和网络软件网卡交换机交换机的三个主要功能交换机的工作原理第二层交换和第三层交换交换机的堆叠和级联 路由器路由器工作原理 网关网关的分类 无线接入点(AP)调制解调器网络软件 网络设备和网络软件 网卡 网络接口卡又称网络适配器&#xff0c;简称网卡。网…

五种多目标优化算法(MOFA、NSWOA、MOJS、MOAHA、MOPSO)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 多目标优化算法是用于解决具有多个目标函数的优化问题的一类算法。其求解流程通常包括以下几个步骤&#xff1a; 1. 定义问题&#xff1a;首先需要明确问题的目标函数和约束条件。多目标优化问题通常涉及多个目标函数&#xff0c;这些目标函数可能…

conda下tensorflow安装

conda create -n tf21 python3.7 conda activate tf21 conda install tensorflow-gpu2.1验证 import tensorflow as tf tf.test.is_built_with_cuda()

模版(初级)

一.泛型编程 当我们要写一个交换函数时&#xff0c;面对不同的类型&#xff0c;我们可能就需要向如下这么写&#xff1a; void Swap(int& left, int& right) {int temp left;left right;right temp; }void Swap(double& left, double& right) {double tem…

【随笔】固态硬盘数据删除无法恢复(开启TRIM),注意数据备份

文章目录 一、序二、机械硬盘和固态硬盘的物理结构与工作原理2.1 机械硬盘2.11 基本结构2.12 工作原理 2.2 固态硬盘2.21 基本结构2.22 工作原理 三、机械硬盘和固态硬盘的垃圾回收机制3.1 机械硬盘GC3.2 固态硬盘GC3.3 TRIM指令开启和关闭 四、做好数据备份 一、序 周末电脑突…