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.mzph.cn/news/701627.shtml

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

相关文章

SCI一区 | Matlab实现ST-CNN-MATT基于S变换时频图和卷积网络融合多头自注意力机制的多特征分类预测

SCI一区 | Matlab实现ST-CNN-MATT基于S变换时频图和卷积网络融合多头自注意力机制的故障多特征分类预测 目录 SCI一区 | Matlab实现ST-CNN-MATT基于S变换时频图和卷积网络融合多头自注意力机制的故障多特征分类预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍…

论文阅读:Ground-Fusion: A Low-cost Ground SLAM System Robust to Corner Cases

前言 最近看到一篇ICRA2024上的新文章&#xff0c;是关于多传感器融合SLAM的&#xff0c;好像使用了最近几年文章中较火的轮式里程计。感觉这篇文章成果不错&#xff0c;代码和数据集都是开源的&#xff0c;今天仔细读并且翻译一下&#xff0c;理解创新点、感悟研究方向、指导…

【杂谈】还能这么骗Github开源者?

起因 StarkNet给Github前5000的账户空投了一波STRK代币,一般有资格获得空投的开发者&#xff0c;大概能获得 110个 STRK 代币&#xff0c;按目前价格计算大概 1500人民币左右。 什么是有资格的开发者呢&#xff1f;按 Starknet要求&#xff0c;如果你给在 GitHub上排名前 5000…

基于SSM的废品买卖回收管理系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的废品买卖回收管理系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spri…

Vue+SpringBoot打造开放实验室管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实验管理模块2.4 实验设备模块2.5 实验订单模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示五、样例代码5.1 查询实验室设备5.2 实验放号5.3 实验预定 六、免责说明 一、摘…

设计模式-创建型模式-建造者模式

建造者模式&#xff08;Builder Pattern&#xff09;&#xff1a;将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。 建造者模式一步一步地创建一个复杂的对象&#xff0c;它允许用户只通过指定复杂对象…

windows 中, bash: conda: command not found(已解决)

git bash 中运行conda命令&#xff0c;出现这种错误&#xff0c;原因是你没有在git bash中 配置conda&#xff0c;导致git bash无法找到conda 那就配置一下&#xff0c;找到你的conda的安装位置下的bash.sh文件&#xff0c;一般在安装位置&#xff08;我的安装在C盘的自定义路径…

RocketMQ生产环境常见问题分析与总结

RocketMQ生产环境常见问题分析与总结 如何保证消息不丢失 消息丢失场景 对于跨网络的节点可能会丢消息&#xff0c;因为MQ存盘都会先写入OS的PageCache中&#xff0c;然后再让OS进行异步刷盘&#xff0c;如果缓存中的数据未及时写入硬盘就会导致消息丢失 生产端到Broker端Brok…

nc开发刚导入项目eclipse出现莫名其妙的错误,红叉,感叹号,文件missing

解决类出现红叉 解决感叹号&#xff0c;文件missing 其他问题 右上角的视图&#xff0c;要选择java&#xff0c;如果是javaEE也会有一些文件没有展示出来。

2024全国水科技大会暨土壤和地下水污染防治与修复技术创新论坛(七)

论坛召集人&#xff1a;李 辉 上海大学环境与化学工程学院教授 一、会议背景 十四五”时期&#xff0c;我国生态文明建设进入以减污降碳协同增效为重点战略方向&#xff0c;促进经济社会发展全面绿色转型&#xff0c;实现生态环境质量改善由量变到质变的关键时期。聚焦土壤与地…

挑战杯 基于机器学习与大数据的糖尿病预测

文章目录 1 前言1 课题背景2 数据导入处理3 数据可视化分析4 特征选择4.1 通过相关性进行筛选4.2 多重共线性4.3 RFE&#xff08;递归特征消除法&#xff09;4.4 正则化 5 机器学习模型建立与评价5.1 评价方式的选择5.2 模型的建立与评价5.3 模型参数调优5.4 将调参过后的模型重…

三、OpenAI之Function Calling实战

黑8决心将对 OpenAI API 的学习应用到更多实际场景中&#xff0c;以展示新时代技术的巨大潜力。在接下来的日子里&#xff0c;他不断探索和尝试&#xff0c;将 API 中的各种功能融入到不同的生活场景中&#xff0c;取得了一系列令人瞩目的成果。 首先&#xff0c;他将 OpenAI …

Chrome插件(二)—Hello World!

本小节将指导你从头到尾创建一个基本的Chrome插件&#xff0c;你可以认为是chrome插件开发的“hello world”&#xff01; 以下详细描述了各个步骤&#xff1a; 第一步&#xff1a;设置开发环境 确保你拥有以下工具&#xff1a; 文本编辑器&#xff1a;如Visual Studio Cod…

Django学习记录04——靓号管理整合

1.靓号表 1.1 表结构 1.2 靓号表的构造 class PrettyNum(models.Model): 靓号表 mobile models.CharField(verbose_name"手机号", max_length11)# default 默认值# null true&#xff0c;blank true 允许为空price models.IntegerField(verbose_name"价…

EasyRecovery易恢复软件数据恢复方面表现优势有哪些?

EasyRecovery易恢复软件在数据恢复方面表现优异。它支持多种设备的数据恢复&#xff0c;如硬盘、光盘、U盘/移动硬盘、数码相机等&#xff0c;并且能够恢复包括文档、图片、视频、音频等各种类型的文件。无论是误删除、格式化、分区丢失还是硬件故障导致的数据丢失&#xff0c;…

目标跟踪之KCF详解

High-Speed Tracking with Kernelized Correlation Filters 使用内核化相关滤波器进行高速跟踪 大多数现代跟踪器的核心组件是判别分类器&#xff0c;其任务是区分目标和周围环境。为了应对自然图像变化&#xff0c;此分类器通常使用平移和缩放的样本补丁进行训练。此类样本集…

目标检测新SOTA:YOLOv9 问世,新架构让传统卷积重焕生机

在目标检测领域&#xff0c;YOLOv9 实现了一代更比一代强&#xff0c;利用新架构和方法让传统卷积在参数利用率方面胜过了深度卷积。 继 2023 年 1 月 YOLOv8 正式发布一年多以后&#xff0c;YOLOv9 终于来了&#xff01; 我们知道&#xff0c;YOLO 是一种基于图像全局信息进行…

Linux信号详解

文章目录 一、Linux信号1. 信号的概念2. 信号的定义3. 系统定义的信号 二、信号产生的方式1.通过键盘产生2. 通过系统调用3. 软件条件4. 硬件异常 三、信号处理函数1. OS发送信号的实质2. 指令发送信号3. signal()4. sigaction() 四、信号屏蔽机制1. 信号处理方式2.信号集操作函…

更改QTabWidget的选项卡的位置

选项卡位置函数&#xff1a; QTabWidget::setTabPosition(QTabWidget::North); //默认为上面 上北下南 参数&#xff1a; QTabWidget::North //上面 QTabWidget::South); //下面 QTabWidget::West //左侧 QTabWidget::East)//右侧 选项卡外观函数&#xff1a; QTabWidget::setT…

nodejs+vue+ElementUi废品废弃资源回收系统

系统主要是以后台管理员管理为主。管理员需要先登录系统然后才可以使用本系统&#xff0c;管理员可以对系统用户管理、用户信息管理、回收站点管理、站点分类管理、站点分类管理、留言板管理、系统管理进行添加、查询、修改、删除&#xff0c;以保障废弃资源回收系统系统的正常…