Jakarta项目介绍

概述

在升级Spring Boot到3.0版本以后,或升级Spring到6.0版本以上,会发现应用编译失败或启动失败等问题。

经过排查不难得知,Spring 6或Spring Boot 3(实际上依赖于Spring 6)不再支持javax.开头的一系列依赖包,需要改成jakarta.开头的一系列包。

当然编译失败或启动失败,还有其他原因,如:部分API不再是@deprecated而是直接被removed等。另外,Spring Boot 3依赖的JDK最低版本是17。

升级

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

在这里插入图片描述
根据maven的提示做如下升级:

<dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>6.0.0</version><scope>provided</scope>
</dependency>

在代码层面,import javax.*替换为import jakarta.*

如果你在使用IDEA(什么?还有Javaer不用IDEA),借助于IDEA(2021.2+版本)提供的功能:
在这里插入图片描述
几乎可以一键完成依赖升级。

javax vs jakarta

在Java生态系统中,最初javax是一个缩写,代表Java Extension。javax作为包名,包含一系列的Java扩展(补充)包,提供各种不同的功能,如Servlet、JDBC、JMS等。这些扩展包通常是Java标准库之外的库,需要单独下载和安装,可帮助Java开发人员完成各种任务。

Jakarta EE

Jakarta EE并不是什么新技术,其前身即是Java EE,再往前就是J2EE。

Jakarta EE 9概览
在这里插入图片描述
Jakarta EE 9专注于迁移到新的命名空间并清除一些无谓的规范。

Jakarta EE10概览
在这里插入图片描述
Jakarta EE 10包括12个具有主要版本更新的组件规范和12个具有次要版本更新的组件规范。

随Jakarta EE 10发布的Core Profile 10,是 Jakarta EE Technologies 的子集,针对微服务和云开发运行时。 从MicroProfile发展而来的。

Core Profile 10中包含的Jakarta EE组件规范的关键子集:

  • 注释 2.1
  • 上下文和依赖注入 (CDI) Lite 4.0
  • 依赖注入 2.0
  • 表达语言 5.0
  • 拦截器 2.0
  • JSON-B 3.0
  • JSON-P 2.1
  • RESTful Web 服务 3.1

jakarta依赖

jakarta提供的依赖:

  • jakarta.servlet-api:学习Java Web开发,绕不过Servlet。Spring Boot基于Spring,基于Spring MVC,底层很多概念都是Servlet。
  • jakarta.servlet.jsp.jstl-api:
  • jakarta.servlet.jsp-api
  • jakarta.batch-api:提供基于XML的作业规范语言(Job Specification Language, JSL),允许以XML形式定义和执行批处理作业。
  • jakarta.persistence-api:提供Java持久化API的实现,允许开发人员将Java对象映射到关系数据库中。
  • jakarta.jms-api:Java消息服务应用程序接口是一个Java平台中关于面向消息中间件的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
  • jakarta.xml.ws-api:
  • jakarta.ws.rs-api:
  • jakarta.xml.bind-api:提供实体类和XML文档来回转换的API
  • jakarta.json-api:用于解析、生成、转换和查询JSON文档。
  • jakarta.json.bind-api:提供实体类和JSON文档来回转换的API
  • jakarta.jakartaee-api:
  • jakarta.mail-api:提供平台无关和协议无关的邮件收发抽象类
  • jakarta.validation-api:
  • jakarta.activation-api:
  • jakarta.transaction-api:
  • jakarta.inject-api:
  • jakarta.el-api:
  • jakarta.enterprise.cdi-api:
  • jakarta.annotation-api:

附当前最新版Maven GAV:

<dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>6.0.0</version><scope>provided</scope>
</dependency>
<dependency><groupId>jakarta.servlet.jsp.jstl</groupId><artifactId>jakarta.servlet.jsp.jstl-api</artifactId><version>3.0.0</version>
</dependency>
<dependency><groupId>jakarta.servlet.jsp</groupId><artifactId>jakarta.servlet.jsp-api</artifactId><version>3.1.1</version><scope>provided</scope>
</dependency>
<dependency><groupId>jakarta.batch</groupId><artifactId>jakarta.batch-api</artifactId><version>2.1.1</version>
</dependency>
<dependency><groupId>jakarta.json</groupId><artifactId>jakarta.json-api</artifactId><version>2.1.3</version>
</dependency>
<dependency><groupId>jakarta.persistence</groupId><artifactId>jakarta.persistence-api</artifactId><version>3.1.0</version>
</dependency>
<dependency><groupId>jakarta.jms</groupId><artifactId>jakarta.jms-api</artifactId><version>3.1.0</version>
</dependency>
<dependency><groupId>jakarta.xml.ws</groupId><artifactId>jakarta.xml.ws-api</artifactId><version>4.0.0</version>
</dependency>
<dependency><groupId>jakarta.ws.rs</groupId><artifactId>jakarta.ws.rs-api</artifactId><version>3.1.0</version>
</dependency>
<dependency><groupId>jakarta.xml.bind</groupId><artifactId>jakarta.xml.bind-api</artifactId><version>4.0.2</version>
</dependency>
<dependency><groupId>jakarta.json.bind</groupId><artifactId>jakarta.json.bind-api</artifactId><version>3.0.0</version>
</dependency>
<dependency><groupId>jakarta.platform</groupId><artifactId>jakarta.jakartaee-api</artifactId><version>10.0.0</version><scope>provided</scope>
</dependency>
<dependency><groupId>jakarta.mail</groupId><artifactId>jakarta.mail-api</artifactId><version>2.1.3</version>
</dependency>
<dependency><groupId>jakarta.validation</groupId><artifactId>jakarta.validation-api</artifactId><version>3.0.2</version>
</dependency>
<dependency><groupId>jakarta.activation</groupId><artifactId>jakarta.activation-api</artifactId><version>2.1.3</version>
</dependency>
<dependency><groupId>jakarta.transaction</groupId><artifactId>jakarta.transaction-api</artifactId><version>2.0.1</version>
</dependency>
<dependency><groupId>jakarta.inject</groupId><artifactId>jakarta.inject-api</artifactId><version>2.0.1</version>
</dependency>
<dependency><groupId>jakarta.el</groupId><artifactId>jakarta.el-api</artifactId><version>5.0.1</version>
</dependency>
<dependency><groupId>jakarta.enterprise</groupId><artifactId>jakarta.enterprise.cdi-api</artifactId><version>4.0.1</version>
</dependency>
<dependency><groupId>jakarta.annotation</groupId><artifactId>jakarta.annotation-api</artifactId><version>2.1.1</version>
</dependency>

拓展

jakarta项目

jakarta项目所包括的相关工具、库以及框架等罗列如下:

  • BCEL:处理Java字节码的类库
  • BSF:脚本程序框架
  • Cactus:服务器端Java类测试工具框架
  • ECS:The Element Construction Set is a Java API for generating elements for various markup anguages
  • HttpComponents:The Hyper-Text Transfer Protocol.
  • JCS:a distributed caching system written in java.
  • JMeter:压力测试工具
  • ORO:Java classes that provide Perl5 compatible regular expressions.
  • Regexp:纯Java正则表达式包
  • Slide:a content repository primarily using WebDAV.
  • Taglibs:Repository for JSP custom tag libraries

单独项目

最开始,所有关于Java的项目,都集中在Apache的Jakarta项目之下,作为子项目存在,这时的Tomcat称为Jakarta Tomcat。后来,Jakarta下面项目太多,就开始分家,如Ant、Tomcat等,故而现在称Apache Tomcat。

以前隶属于雅加达项目,但现在作为Aapche软件基金的单独项目:

  • Ant:在Maven出现之前特别流行的构建工具
  • Commons:一组使用类的合集,主要作为Java标准库的补充
  • HiveMind:a services and configuration microkernel
  • Maven:a project build and management tool
  • POI:a pure Java port of Microsoft’s popular file formats.
  • Struts:很多大龄程序员肯定对这个很熟悉,一个Web应用开发框架。大概十多年前,非常流行的Web开发框架SSH=Struts+Spring+Hibernate。后来流行的SSM=Spring-MVC+Spring+MyBatis。
    Tapestry:A component object model based on JavaBeans properties and strong specifications
  • Tomcat:服务器,提供JSP/Servlet相关容器类
  • Turbine:a rapid development web application framework
  • Velocity:a template engine

参考

  • 什么是Jakarta EE

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

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

相关文章

人工智能的迷惑行为:AI世界的隐秘角落

人工智能迷惑行为大赏 在当今数字化时代&#xff0c;人工智能技术的飞速发展给我们的生活带来了诸多便利和可能性&#xff0c;但同时也伴随着一些令人困惑的现象和行为。本文将深入探讨人工智能的迷惑行为&#xff0c;揭示AI世界中的隐秘角落&#xff0c;让我们一同探寻这个充…

Python操作PostGre的简单封装

文章目录 一、安装依赖二、配置文件三、实现类 一、安装依赖 pip install psycopg2 numpy 二、配置文件 utils.config.py import os############### 233 PostGre Configuration ############### POSTGRE_HOST "192.168.0.233" POSTGRE_PORT 5432 POSTGRE_USER …

《深入浅出LLM 》(二):大模型基础知识

&#x1f389;AI学习星球推荐&#xff1a; GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料&#xff0c;配有全面而有深度的专栏内容&#xff0c;包括不限于 前沿论文解读、…

CPU缓存行及伪共享

CPU Cache概述 随着CPU的频率不断提升&#xff0c;而内存的访问速度却没有质的突破&#xff0c;为了弥补访问内存的速度慢&#xff0c;充分发挥CPU的计算资源&#xff0c;提高CPU整体吞吐量&#xff0c;在CPU与内存之间引入了一级Cache。随着热点数据体积越来越大&#xff0c;…

代码随想录算法训练营第三十二天 | 122.买卖股票的最佳时机II ,55. 跳跃游戏 , 45.跳跃游戏II

贪心&#xff1a;只要把每一个上升区间都吃到手&#xff0c;就能一直赚 class Solution { public:int maxProfit(vector<int>& prices) {int res 0;for(int i 1;i< prices.size();i){int diff prices[i] - prices[i-1];if(prices[i] > prices[i-1]){res d…

【Python进阶】argparse库基础用法全总结:高效脚本参数解析 | 参数类型使用代码

argparse库是 Python 标准库中用于解析命令行参数和选项的模块。它使得编写命令行界面&#xff08;CLI&#xff09;变得更加容易。&#xff0c;在深度学习中用到的比较多~~ 我们运行Python文件往往是直接输入命令 python test.py 但是如果我们想给Python文件脚本运行时候传入参…

springMVC的常见问题(面试题)问答

当涉及到Spring MVC的面试题&#xff0c;通常会涉及到该框架的基本概念、工作原理、核心组件以及一些相关的配置和最佳实践。下面是一些常见的Spring MVC面试题及其详细答案&#xff1a; 什么是Spring MVC&#xff1f; Spring MVC是基于Java的Web框架&#xff0c;用于开发Web应…

蓝桥杯练习题总结(二)dfs题、飞机降落、全球变暖

目录 一、飞机降落 二、全球变暖 初始化和输入 确定岛屿 DFS搜索判断岛屿是否会被淹没 计算被淹没的岛屿数量 三、军训排队 一、飞机降落 问题描述&#xff1a; N架飞机准备降落到某个只有一条跑道的机场。其中第 i 架飞机在 时刻到达机场上空&#xff0c;到达时它的剩余…

[Linux]文件缓冲区

文件fd 输出重定向除了用dup2()改变数组下标外&#xff0c;还可以用命令来完成 所有的命令执行&#xff0c;都必须有操作系统将其运行起来变成进程&#xff0c;然后根据>>, <<来判断是输入重定向&#xff0c;还是输出重定向。 缓冲区 之所以有缓冲区&#xff0…

2024帝国CMS彩虹易支付插件,兼容易支付里的支付宝支付

1、上传 yunpay 文件夹到 /e/payapi/ 目录 2、在目录 yunpay 内找到 to_pay.php 、 return_url.php 、 notify_url.php 分别将文件内的 //支付API地址 $alipay_config[apiurl] http://XXX.XXX.com/; 改成自己易支付的支付地址 3、后台——其他——在线支付——管理支付接口—…

JavaScript 基础、内置对象、BOM 和 DOM 常用英文单词总结

一提到编程、软件、代码。对于英语不是很熟悉的同学望而却步。其实没有想像中的难么难&#xff0c;反复练习加上自己的思考、总结&#xff0c;会形成肌肉记忆。整理一下&#xff0c;初学者每天30遍。 1、JavaScript 基础语法 break&#xff1a;中断循环或 switch 语句的执行。…

安卓转鸿蒙竟如此丝滑

随着鸿蒙的爆火&#xff0c;大家都想知道鸿蒙能不能搞&#xff1f; 相信大家搞开发的&#xff0c;都多多少少的了解过鸿蒙。近几个月鸿蒙的大动作也不少&#xff0c;如&#xff1a;重庆市近20个垂域应用与鸿蒙原生合作、深圳制定鸿蒙《行动计划》、阿里再次与鸿蒙展开合作&…

树森林试题

01.下列关于树的说法中&#xff0c;正确的是&#xff08;). Ⅰ.对于有n个结点的二叉树&#xff0c;其高度为log2n Ⅱ.完全二叉树中&#xff0c;若一个结点没有左孩子&#xff0c;则它必是叶结点 Ⅲ.高度为h (h>0)的完全二叉树对应的森林所含的树的个数一定是h IV.一棵树中的…

微信小程序开发技巧:canvas实现电子签名

在微信小程序中实现电子签名功能方式很多,本文采用canvas绘制的方式实现。具体实现步骤如下: 在页面中添加canvas元素 <view class"container"><canvas canvas-id"signCanvas" class"canvas" disable-scrolltrue touchstart"sta…

Docker常用命令详解

Docker 是一种用于开发、交付和运行应用程序的开放平台&#xff0c;它允许您将应用程序与其依赖项打包到一个称为容器的轻量级、可移植的容器中。以下是一些常用的 Docker 命令及其详细解释&#xff1a; docker run&#xff1a;运行一个容器。 例如&#xff1a;docker run -it …

Dataset之UCI_autos_cars:UCI_autos_imports-85(汽车进口数据集)的简介、安装、案例应用之详细攻略

Dataset之UCI_autos_cars&#xff1a;UCI_autos_imports-85(汽车进口数据集)的简介、安装、案例应用之详细攻略 目录 UCI_autos_imports-85的简介 UCI_autos_imports-85的安装 UCI_autos_imports-85的案例应用 1、训练一个简单的线性回归模型来预测汽车的价格 UCI_autos_i…

跨时钟域学习记录(一)

亚稳态 亚稳态是电平介于高低电平之间的一种暂时状态。在同步系统中&#xff0c;当寄存器的信号无法满足建立时间和保持时间时&#xff0c;输出端的信号就可能出现亚稳态。在异步系统中&#xff0c;亚稳态并非一定在建立时间和保持时间无法满足时出现。   受噪声、温度、电压…

非root用户安装git lfs(git大文件)命令记录

背景 最近在看LLAMA2的模型&#xff0c;想直接从Huggingface下载模型到本地&#xff0c;但是却发现服务器上没有安装git lfs命令。查询了一些资料完成了非root用户安装git lfs命令的操作&#xff0c;特此记录。 Git LFS下载与解压 下载 Git LFS 二进制文件 访问 Git LFS 发布…

SQL语言: 内置函数

字符串函数 CONCAT()&#xff1a;连接两个或多个字符串 SELECT CONCAT(Hello, , World) AS concatenated_string;​ SUBSTRING()&#xff1a;返回指定位置开始的子字符串 SELECT SUBSTRING(Hello World, 7) AS sub_string;LENGTH()&#xff1a;返回字符串的长度 SELECT LENGT…

【vue3.0】实现导出的PDF文件内容是红头文件格式

效果图: 编写文件里面的主要内容 <main><div id"report-box"><p>线索描述</p><p class"label"><span>线索发现时间:</span> <span>{{ detailInfoVal?.problem.createdDate }}</span></p><…