在 Java 生态中,javax 和 jakarta 代表了 企业级 Java 规范(Java EE/Jakarta EE)的命名空间演进,核心区别在于归属权和管理组织的变更。以下是详细对比:


1. 历史背景

  • javax
    源自 Java EE(Java Enterprise Edition),由 Sun Microsystems(后被 Oracle 收购) 定义。包路径如 javax.servlet.*javax.persistence.* 等,是 2019 年之前 的标准命名空间。

  • jakarta
    2017 年,Oracle 将 Java EE 移交给 Eclipse 基金会。因商标限制,基金会将其重命名为 Jakarta EE。从 Jakarta EE 9(2020 年发布) 开始,所有规范包名改为 jakarta.*(例如 jakarta.servlet.*)。


2. 变更原因

  • 法律与商标问题
    Oracle 禁止 Eclipse 基金会继续使用 javax 包名和 "Java" 品牌,迫使命名空间迁移。

  • 独立发展
    Jakarta EE 需要摆脱 Oracle 的控制,以开放模式推动创新(如支持微服务、云原生)。


3. 技术影响

维度javaxjakarta
兼容性仅支持 Java EE 8 及更早版本Jakarta EE 9+ 的强制要求
包路径示例javax.servlet.HttpServletjakarta.servlet.HttpServlet
迁移成本旧项目无需改动旧项目升级需全局替换包名(破坏性变更)
应用服务器Tomcat 9, WildFly 20(Java EE 8)Tomcat 10+, WildFly 27+(Jakarta EE 9+)

📌 注意:Jakarta EE 9 是首个不兼容旧版的版本,必须修改代码中的 javax → jakarta


4. 如何迁移?

  1. 手动替换
    修改源码中的导入路径(例如 javax.servlet → jakarta.servlet)。

  2. 自动化工具
    使用 Eclipse 基金会提供的 Eclipse Transformer 工具自动转换。

  3. 依赖调整
    更新 Maven/Gradle 依赖(例如 javax:javaee-api → jakarta.platform:jakarta.jakartaee-api)。


5. 现状与未来

  • 并行存在
    老项目仍用 javax(如银行系统),新项目必须用 jakarta(Jakarta EE 9+)。

  • 规范演进
    Jakarta EE 10+ 新增特性(如 CDI Lite、异步 REST)仅通过 jakarta.* 提供。

  • 框架支持
    Spring 6 / Spring Boot 3+ 已全面转向 Jakarta EE 9+(弃用 javax)。


总结

关键点javaxjakarta
归属Oracle / Java EEEclipse 基金会 / Jakarta EE
时代旧标准(≤2019)新标准(≥2020)
定位历史技术栈未来企业级 Java 的唯一方向
开发建议旧系统维护所有新项目必须使用

💡 简单来说:javax 是过去,jakarta 是未来。升级到 Jakarta EE 是拥抱云原生和现代 Java 生态的必经之路。

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

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

相关文章

2 Studying《Arm A715 Technical Reference Manual》

目录 2. The Cortex‑A715 core 2.1 Cortex‑A715 core features 2.2 Cortex‑A715 core confifiguration options 2.3 DSU-110 dependent features 2.4 Supported standards and specifications 2.6 Design tasks 3. Technical overview 3.1 Core components 3.2 Int…

使用Nodejs尝试小程序后端服务编写:简单的待办事项管理demo

文章目录 结构demo步骤demo运行效果API测试(1) 添加待办事项(2) 获取所有待办事项(3) 切换完成状态(4) 删除待办事项 API测试-RESTClient一些其他的高级功能环境变量管理不同环境配置授权认证 测试需要登录的接口保存响应测试脚本编写自动化测试 bug解决 结构 尝试写一个简单的…

CSS“多列布局”

多列布局是一种非常常见的布局方式,适用于内容丰富的页面,如新闻网站、杂志或博客。 一、CSS多列布局概述 CSS多列布局允许我们将内容分成多个垂直列,使页面布局更加灵活和多样化。多列布局的主要属性包括 ​​column-count​​、​​col…

Pump上狙击机制的功能优势和实战教学

加密世界的发展永远伴随着速度的革命。无论是新的 Token 上线,还是热点项目的第一波流动性注入,抢先一步往往意味着利润的几何级增长。在这个讲究「秒杀」与「先机」的赛道中,一项关键策略正悄然成为链上操作者的常规武器——狙击&#xff08…

条件收敛的级数中项必须趋于 0,正负项抵消,但趋于 0 的速度不需要“足够快”

条件收敛的级数中,项必须趋于 0,但趋于 0 的速度不需要“足够快”的原因可以从以下几个方面理解: 1. 收敛的必要条件:项趋于 0 对于任何收敛的级数(无论是绝对收敛还是条件收敛),都必须满足 li…

Tomcat 和 Spring MVC

Tomcat 和 Spring MVC 是 Java Web 开发中两大核心组件,分别承担不同的角色: 一、Tomcat 定义 Apache Tomcat 是一个开源的 Servlet 容器(也称为 Servlet 引擎)+ JSP 引擎,实现了 Java EE(现称 …

【微服务】134:SpringCloud

今天是刘小爱自学Java的第134天。 感谢你的观看,谢谢你。 image 学习内容安排如下: SpringCloud的接触。利用SpringCloud搭建微服务架构,当然这个估计要3天时间才能完成,今天主要是注册中心Eureka的学习。 一、SpringCloud 微服务…

三次贝塞尔曲线,二次贝塞尔曲线有什么区别

三次贝塞尔曲线和二次贝塞尔曲线在控制点数量、数学表达式和曲线复杂度上有所不同。以下是它们的主要区别: 1. 控制点数量 二次贝塞尔曲线:由3 个点定义(起点、终点和 1 个控制点)。三次贝塞尔曲线:由4 个点定义&…

springboot集成dubbo

BeanDefinitionRegistryPostProcessor public interface BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor {/*** 允许开发者在Spring容器加载Bean定义(BeanDefinition)后,实例化Bean之前,动态修改或注册新的BeanDefinition* 该接…

Seata 全面深入学习指南

Seata 全面深入学习指南 学习目录 第一部分:Seata 基础篇 分布式事务基础概念Seata 概述与核心架构Seata 部署与快速入门第二部分:Seata 核心机制 Seata 事务模式详解 AT 模式TCC 模式SAGA 模式XA 模式Seata 事务协调机制Seata 高可用设计第三部分:Seata 高级特性 Seata 配…

【Linux】基于策略模式的简单日志设计

📝前言: 这篇文章我们来讲讲Linux——基于策略模式的简单日志设计 🎬个人简介:努力学习ing 📋个人专栏:Linux 🎀CSDN主页 愚润求学 🌄其他专栏:C学习笔记,C语…

C#引用传递代码记录

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 值传递和引用传递 {internal class Program{static void Main(string[] args){person P1new person();P1.name "张三";person P2 …

React动态渲染:如何用map循环渲染一个列表(List)

React动态渲染:如何用map循环渲染一个列表(List)? 系列回顾: 在上一篇中,我们学习了如何通过onClick等事件处理,让React应用响应用户的操作。现在我们的组件已经能“听懂话”了。但是,目前为止我们展示的内…

React Native【实战范例】水平滚动分类 FlatList

import React from "react"; import { FlatList, SafeAreaView, StyleSheet, Text, View } from "react-native"; interface itemType {id: string;title: string;icon: string; } // 水平滚动数据 const horizontalData: itemType[] [{ id: "1"…

iOS swiftUI的实用举例

SwiftUI 是 Apple 推出的声明式 UI 框架,以下是一些实用技巧和最佳实践,可以帮助你更高效地开发 iOS/macOS/watchOS/tvOS 应用。 1. 布局技巧 灵活的空间占用 // 使用 Spacer 填充可用空间 HStack {Text("Left")Spacer() // 填充中间空间 …

SpringMVC异步处理Servlet

使用SpringMVC异步处理Servlet解决的问题 可以不阻塞有限的tomcat 线程(默认是200~250个,springboot3是200个),确保网络请求可以持续响应特定业务使用自定义线程池,可以处理的业务量更大对上层业务完全无感知&#xf…

同步与异步编程范式全景研究——从CPU时钟周期到云原生架构的范式演进

第一章 时空观的根本分歧 1.1 物理时间的约束性 同步操作的本质是对牛顿绝对时间的服从,其阻塞特性源于冯诺依曼体系下指令顺序执行的基因。现代CPU的流水线技术(如Intel Hyper-Threading)通过指令级并行实现伪异步,但开发者仍需…

【零散技术】5分钟完成Odoo18 登陆页面全自定义

序言:时间是我们最宝贵的财富,珍惜手上的每个时分 从最初的tinyERP到Open ERP,再由OpenERP到Odoo,虽然UI已经过了多次大改,Odoo登录界面依旧丑陋,同时还有各种Odoo版权信息,对于定制项目而言是不友好的。 今天以Odoo18…

Vue3 + TypeScript + Element Plus + el-pagination 分页查询实例分享

前端技术栈&#xff1a;Vue3 TypeScript Element Plus el-pagination 后端技术栈&#xff1a;Java Spring Boot Mybatis 应用异常情况说明&#xff1a;点击页码2&#xff0c;会发送两次请求&#xff0c;并且自动跳回页码1 代码&#xff1a; Reagent.vue <script set…

LoadRunner 2023 安装部署

下载地址&#xff1a;链接: https://caiyun.139.com/w/i/2nQQRYCZ1Ssjl 提取码:3gz0 复制内容打开139-云盘 主要下载Micro_Focus_LoadRunner_2023_Community_Edition.exe来安装就可以。 如要汉化&#xff0c;则再下载安装Language_Packs.exe的安装包 说明&#xff1a;LoadR…