小白科普:Java EE vs J2EE vs Jakarta EE

Jakarta EE 和 Spring Boot对比,用惯了Spring Boot,突然接手一个Jakarta EE项目,给我整不会了,赶紧现学一下 Jakarta EE 和 Spring Boot 是两个不同的框架,它们都旨在简化企业级 Java 应用程序的开发,但有着不同的设计理念、目标受众和技术实现。理解两者之间的关系和区别有助于选择最适合你项目需求的技术栈。 阅读详情

作者 | Rodrigo Graciano

编译 | Panson

https://www.baeldung.com/java-enterprise-evolution

1. 引言

听说过 Java EE 吗?那关于 Java 2 EE 、J2EE 或者现在的 Jakarta EE,你又是否有所耳闻呢?实际上,这些各异的术语描述的都是相同的东西:由 Java SE 扩展出的一系列企业规范。

在本篇短文中,我们将讲述 Java EE 的发展史。

2. 历史

在 Java 的第一个版本中,Java 企业扩展还只是核心 JDK 的一部分(译者注:核心 JDK 通常指 Java SE) 。然而到了 1999 年,Java 企业扩展已经被剥离出 Java SE,成为了 Java 2 的一部分,这也意味着 J2EE,或者说Java 2 平台企业版(Java 2 Platform Enterprise Edition)的诞生。J2EE 这个称呼一直维持到2006年。

2006 年发布的 Java 5,J2EE 被重命名为 Java EE,或者说 Java 平台企业版(Java Platform Enterprise Edition)。这次改名后的称呼一直延续到 了 2017 年的 9 月。那年发生了一件重大的事,Oracle 决定将 Java EE 捐赠给 Eclipse 基金会(但 Java仍然属于 Oracle)。

3. 转变原因

事实上,因为 Oracle 拥有 “Java” 商标权。按照法律要求,Eclipse 基金会需要对 Java EE 进行更名。

经过社区的投票选择,Java EE 被更名为 Jakarta EE。从某种意义上来说,Java EE 依然叫 JEE。(译者注: 将 Java EE 首字母缩写也可简称为 JEE)。

640?wx_fmt=png

不过这仍然是个正在进行的故事,还未完全尘埃落定。

举个例子,虽然 Oracle 开源了 Java 源代码,但却并未开源所有的文档。关于这个问题,因为涉及到一些法律事宜,导致开源一些文档(例如与 JMS、EJB相关的)非常棘手,至今仍有许多争议。

现在还无法得知新的 Eclipse 基金会文档是否能够参考原文档。

同样令人奇怪的是 Eclipse 基金会不能使用 javax 的命名空间来创建新的 Java 包,但是可以在现有包的下面创建新的类和子类。

转变阶段也意味着对 Jakarta EE 添加规范的新流程。为了更好地理解这一点,让我们快速看一下 Oracle 添加规范的流程以及 Eclipse 基金会相应做出的改变。

4.未来

在过去,为了将一个特性添加进 “EE”(译者注:原文作者为了避免 Jakarta EE 历史名字的混杂性,使用“EE”来代指全部的版本,下同),我们需要 3 样东西 :规范、参考实现与测试。社区里的任何人都可以提交这 3 样东西,之后执行委员会将会决定何时将它们整合进 Java 语言中。

为了更好地理解添加规范的旧流程,让我们进一步了解 JSRs、Glassfish 和 TCK是什么 ,以及它们是如何整合新特性的。

我们也将一睹在未来可以预期的事。

4.1 JCP 以及现在的 EFSP

在过去,产生EE 新特性的流程被称为 JCP(Java Community Process)。

Java SE 现在仍然采用 JCP。但是由于 EE 的所有权已经从 Oracle 移交至 Eclipse 基金会,EE 已经有了新的流程,这个流程是Eclipse 开发流程(https://www.eclipse.org/projects/dev_process)的扩展,与 Java SE 的流程互不干扰,我们称之为 EFSP(Eclipse Foundation Specification Process)。

尽管 JCP 与 EFSP 之间有一些大的差异,但大都围绕着“透明、公开、集体负责和供应商中立”这几条准则展开。例如,EFSP 的组织者设想的合作工作团体是供应商中立的,认证流程是自助服务的,组织的运作与管理是精英化的。

4.2 JSRs

在 JCP 中,为 EE 添加新特性的第一步是创建一个 JSR(Java Specification Request)。JSR 有点类似于一个 EE 特性的接口。JCP 执行委员会会核准一个完整的 JSR,然后相应的 JSR 贡献者会编写代码,使其在社区内生效。

JSR-339 或者 JAX-RS 对于阐述上面的流程是一个好例子。JAX-RS 最初于 2011 年提出,在2012年被 JCP 批准,最终在 2013 年得以发布。

虽然在讨论规范时,社区可以随时加入进来,但时间表明,一个实现优先( implementation-first)的方式更利于创建能被广泛接受的特性与 API。所谓的实现优先,类似于JSR 310中的 java.time 和 Joda Time这个例子(译者注:JDK 1.8 之前 Java 关于时间的 API 很不如人意,使用广泛的是 Joda-Tme)。

因此,EFSP(Eclipse Foundation Specification Process)在其设定的目标中阐述了这个观点:“EFSP 将基于是否先进行了动手实验和编码,来判断其是否值得添加进规范中。

4.3 GlassFish

此外,JSR 作为 JCP 的一部分,需要一个参考实现。这有点类似于实现接口的类。对于那些想要创建自己的规范实现的群体,比如说兼容库的开发人员或者其他组织,参考实现都可以给予帮助。

对于 Java EE 特性,JCP 使用 Glassfish 作为参考实现。

虽然 Glassfish 的中心化简化了实现者的探索过程,但是这种中心化也要求更多的管理,并且倾向于偏袒某个供应商。

因此,EFSP 不要求参考实现,而只要求兼容的实现。简而言之,这种微妙的变化使得类似 Glassfish 之类的中心体系结构内的实现,不会被基金会无缘由地首选。

4.4 TCK

最后,JCP 要求 EE 特性需通过 TCK(Technology Compatibility Kit)的测试。

TCK 是一组验证特定 EE JSR 的测试。简而言之,为了遵循 Java EE,应用服务器需要实现所有 JSR, 并通过特定 TCK 上的所有测试。

与前述类似,Oracle虽然开源了TCK和EE jsr的源代码(译者注:但并没有开源相应的文档)。当然,未来所有的文档和 TCK 都将是开源的。

5. 总结

这些年来,Java EE 无疑前进了许多。很高兴看到它继续变化与变好。

前方之路充满坎坷,希望 Java 的转变能够平滑些。

往期精彩回顾

关于老刘和码农翻身

我是一个线程

我是一个Java Class

面向对象圣经

小白科普:分布式和集群

小白科普:线程和线程池

小白科普:Netty有什么用?

TCP/IP之大明邮差

CPU阿甘

我是一个网卡

我是一个路由器

一个故事讲完HTTPs

编程语言的巅峰

Java:一个帝国的诞生

JavaScript:一个屌丝的逆袭

Java、javax 和 Jakarta有什么区别? 2017 年,Oracle 将 Java EE 移交给 Eclipse 基金会管理,并将其更名为Jakarta EE。这是为了摆脱 Oracle 商标限制,并推动社区主导的企业级 Java 发展。因此,从开始,原本属于javax.*的包全部改名为jakarta.*。名称来源是否标准主要用途是否已过时java✅ 是Java SE 核心类库❌ 否javaxOracle✅ 是(曾是 Java EE 标准)Java 扩展类库,如 Servlet、Swing 等✅ 是(部分)jakarta。 阅读详情

相关推荐

电机控制易混知识点1-基波频率/载波频率/采样频率

在电机控制学习工作中会接触到很多专业名词,其中基波频率,载波频率,采样频率是最常接触到的,特别对于电机控制小白开说,不容易理解,现对这几个概念做下总结归纳。

新能源电机控制工程师 | 聚焦实战问题,搭建互助平台 分享电机控制代码调试、现场故障排查、算法优化中的真实困惑;开放讨论电机基础知识以及工作中遇到难点等共性难题。拒绝单向输出,只做工程师的“技术树洞”与“解忧杂货铺”! 2195

Java EE与Jakarta EE区别

官网介绍如下Java Platform, Enterprise Edition (Java EE) 是社区驱动的企业软件标准。Java EE 是利用开发的,业界专家、商业组织和开源组织、Java 用户组以及数不清的个人为此做出了巨大贡献。每个版本都集成了符合业界需求的新特性,提高了应用可移植性,提高了开发人员的工作效率。此链接列举了 javaee 规范实现的组件,因为此规范主要针对 web server,可以发现都是 web server。

zlpzlpzyd的专栏 2531

ZYNQ实战:PS端驱动DMA实现高效数据流转与验证

本文详细介绍了在ZYNQ平台上通过PS端驱动DMA实现高效数据流转的实战方法。从ZYNQ的PS与PL数据交互基础出发,深入解析DMA核心价值,包括硬件平台搭建、Vivado配置、PS端软件架构设计及性能优化技巧,帮助开发者提升数据传输效率与系统性能。

weixin_29192141的博客 440

Jakarta EE 和传统的 Java EE 主要区别:

**Jakarta EE**:由于 Oracle 对 `javax.*` 命名空间的使用限制,Eclipse 基金会将所有 API 和实现迁移到 `jakarta.*` 命名空间。- **Jakarta EE**:采用模块化设计,开发者可以根据需要选择特定的规范模块,例如 Jakarta EE Platform、Web Profile 或 Core Profile。- **Java EE**:使用 `javax.*` 命名空间。- **Java EE**:主要面向传统的企业级应用开发。

红豆和绿豆的博客 1141

别再手动续期SSL证书了!用acme.sh配合阿里云DNS API,实现全自动HTTPS证书管理

本文详细介绍了如何使用acme.sh配合阿里云DNS API实现SSL/TLS证书的全自动管理,彻底解决手动续期带来的风险与不便。通过自动化部署流程,包括环境准备、API集成、多域名证书申请等关键步骤,帮助运维人员构建高效、可靠的HTTPS证书管理体系,显著提升安全性和运维效率。

weixin_29200485的博客 271

ubuntu安装FSL

1.下载fslinstaller.py 官网下载地址:https://fsl.fmrib.ox.ac.uk/fsldownloads_registration 或者去我的百度网盘取: 链接:https://pan.baidu.com/s/1d5eHm48oamFdYdKm84nifw 提取码:6ff9 2.将base环境改成python2.0版本 本来想在服务器安装,服务器没有sudo权限,网上很多教程都装不了,于是就自己安装虚拟机再装了一个ubuntu,然后安装了python2环境,再开始装fsl,fsl

qq_36421001的博客 4098

Java EE与jakarta

2017 年 8 月,Oracle(甲骨文)决定将 Java EE(Java Enterprise Edition)移交给开源组织,最后 Eclipse 基金会接手。这应该是甲骨文实现对 Java 品牌控制的最新举措,尽管之前 Sun 的资产已经被甲骨文围剿得只剩一个 VirtualBox 还能喘口气。不过,甲骨文可不允许开源组织用 Java 的名号,于是 Eclipse 选出了 "Jakarta EE" 和"Enterprise Profile"两个后续按名字,最终前者以 64.4% 的票数获胜。也就是说

abckingaa的博客 2166

Mac 下 OpenClaw 安装全记录:从零到一的保姆级图文教程

本文主要介绍了Mac 下 OpenClaw 安装全记录:从零到一的保姆级图文教程,希望能对学习使用OpenClaw 的同学们有所帮助。 文章目录 1. 背景 2. 安装教程 2.1 安装OpenClaw 2.2 配置模型 2.3 对话 3. 后续使用步骤 4. 关闭程序

weixin_43178406的博客 11万+

JavaSE、JavaEE和Jakarta EE的历史、区别与联系

JavaSE、JavaEE和Jakarta EE是Java平台中的三个重要组成部分,它们各自承担着不同的角色,同时也有着密切的联系。在理解它们之间的历史、区别和联系之前,我们首先需要了解它们的基本概念。

Harry的博客 2901

单细胞数据分析(三):单细胞聚类分析

本文介绍了单细胞聚类分析的基本概念及其在单细胞RNA测序(scRNA-seq)数据中的应用。单细胞聚类分析通过将具有相似基因表达模式的细胞分组到不同的簇中,帮助识别细胞类型、状态和功能。文章详细展示了使用R语言中的Seurat包进行单细胞数据聚类分析的步骤,包括数据加载、降维、聚类和结果可视化。通过FindNeighbors和FindClusters函数,文章展示了如何基于降维数据进行细胞聚类,并选择合适的分辨率值。

专注生信领域 1915

【自动驾驶轨迹规划之hybrid A*算法】

本文参考论文:https://ai.stanford.edu/~ddolgov/papers/dolgov_gpp_stair08.pdf 这篇文章是基于经典A*算法与reeds-shepp曲线的,不清楚的读者请参考【自动驾驶轨迹规划5之A*算法】_无意2121的博客-优快云博客【自动驾驶轨迹规划之dubins曲线与reeds-shepp曲线】_无意2121的博客-优快云博客 目录 1 hybrid A* 算法创新点 1.1 搜索方式 1.2 车辆运动学模型 1.3 reeds-shepp曲

weixin_65089713的博客 1万+

Java EE 和 Jakarta EE

最近在升级JDK由Java8升级到JDK17.由 Java EE 升级为 Jakarta EE。那么为什么是 Jakarta EE。Java EE(Java Platform, Enterprise Edition)和 Jakarta EE(Jakarta Enterprise Edition)是两个与企业级应用开发相关的技术平台。

一个写了10年bug的程序员日常笔记。 2379

YOLOv11改进 | 主干/Backbone篇 | 轻量级移动端网络ShuffleNetV2(附代码+修改教程)

本文给大家带来的改进内容是ShuffleNetV2,这是一种为移动设备设计的高效CNN架构。其在ShuffleNetV1的基础上强调除了FLOPs之外,还应考虑速度、内存访问成本和平台特性。(我在YOLOv11n上修改该主干降低了GFLOPs,但是参数量还是有一定上涨,其非常适合轻量化的读者来使用,同时精度也有一定程度的上涨)。本文通过介绍其主要框架原理,然后教你如何添加该网络结构到网络模型中。

Snu77的博客 3388

jakartaee和javaee区别

Jakarta EE是Java EE的继任者,它是一个开放、协作的社区驱动的项目。Jakarta EE致力于继续发展和推进Java EE的技术,同时还将关注新的领域和趋势,如云计算、容器化和微服务架构。Jakarta EE的目标是提供一个开放和可扩展的企业级Java平台,使开发者能够构建可靠、可扩展和高性能的企业应用程序。

chaoren499的专栏 364

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

还搞不懂JAVASE,JAVAEE,JAVAME三者区别吗

SE即标准版,包含了Java核心类库,主要用来开发桌面应用; EE即企业版,包含SE,又有扩展部分(Servlet,JDBC等),主要用来开发分布式网络程序; ME即微型版,包含了SE中部分类库,又有自己扩展部分,主要用来做移动类、嵌入式开发。

w_tfyty的博客 3229

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Jakarta EE,EE4J和Java EE之间的关系

Jakarta EE的名称已经存在了一个多月,即使Mike Milinkovich在他的博客文章“ The Name Is…”中很好地解释了名称和概念,关于它们之间的关系仍然有些困惑,我也提出了疑问只要有话题就可以围绕它。 我试图在这里总结一下。 希望能帮助到你! Java EE Java EE或Java™平台企业版是受Java Community Process( JCP )管辖的当前...

最佳 Java 编程 769

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

关于javax和jakarta的不同

当 Eclipse 基金会接手 Java EE 后,决定将其重命名为 Jakarta EE,以避免与 Oracle 的品牌混淆,并给予项目更大的独立性。随着 Jakarta EE 9 的发布,所有Java EE(现在称为Jakarta EE)相关的API,包括Servlet API,都从传统的。包名的所有权,不允许 Eclipse 基金会在新的开发中使用它,因此从 Jakarta EE 9 开始,所有的 API 都迁移到了。或更高版本,因为这些版本提供了更好的支持和更多的特性。作为包名前缀,而不是。

L_rk8686的博客 1593

Java SE、Java EE 与 Spring

Java、JavaEE 与Spring的概念在Java世界中,很多人都对Java SE、J2EE、Java EE、Spring、EJB等这些术语感到困惑。什么是Java SE 可以说这是Java的核心。(主要部分) 用于开发桌面应用程序和基于web的应用程序。 它提供了从基本对象到高级类的所有东西,这些类被用于网络、数据库访问、安全、XML解析、GUI开发。 除了这些核心api之外,它还提供了虚拟机

小浩子的博客 2万+

分布式:架构演进,核心问题,共识算法

分布式系统应使资源易于访问,隐藏资源分布在网络上的事实,开放的,可伸缩的。重在资源共享与加快计算机速度,强调的是服务化以及服务的分散化。微服务架构倡导将软件应用设计成多个独立开发、可配置、可运行和可维护的子服务。重在于松耦合和高内聚的效果,使每个模块独立,强调服务的专业化和精细分工。

燕双嘤 1562

消息中间件介绍

后Java时代,随着消息中间件协议AMQP(Advanced Message Queuing Protocol)的诞生,最知名的AMQP消息中间件产品RabbitMQ也随之诞生,RabbitMQ基于Erlang开发,2007年诞生至今已经称为最流行的开源消息中间件产品,ActiveMQ于2013年也开始支持AMQP协议,后来Apache还推出了ActiveMQ Apollo的新项目,也实现了包括AMQP在内的多种协议。消息的顺序性,消息队列可以保证消息的先进先出。JMS的两种消息传送模型。

weixin_57763462的博客 640

Java EE与Jakarta EE命名空间区别

关键点javaxjakarta归属Eclipse 基金会 / Jakarta EE时代旧标准(≤2019)新标准(≥2020)定位历史技术栈未来企业级 Java 的唯一方向开发建议旧系统维护所有新项目必须使用💡 简单来说:javax是过去,jakarta是未来。升级到 Jakarta EE 是拥抱云原生和现代 Java 生态的必经之路。

BillKu的博客 1209

jee Java什么意思_JEE、J2EE与Jakarta等概念解释

有没有听说过Java EE?Java 2EE,J2EE或现在的Jakarta EE怎么样?实际上,这些都是同一个东西的不同名称:一组扩展Java SE的企业规范。在这篇简短的文章中,我们将描述Java EE的演变。历史回顾在Java的第一个版本中,Java企业扩展只是核心JDK的一部分。然后,作为1999年Java 2的一部分,这些扩展从标准库包中脱离出来,J2EE或Java 2平台企业版诞生...

weixin_39858275的博客 1563

j2se、j2ee、j2me、jse、jee及jme的区别

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33975951的博客 1172

认识J2EE规范

J2EE实际上是一组规范(新手对规范这个词可能云里雾里的,没有办法,JAVA概念太多了,大部分概念慢慢就会理解),没错,J2EE这个概念并不是某种技术,而是一堆规范(实现意义上可以说是一堆技术)组成的,在老手的嘴里它是一堆概念。J2EE规范有的是标准的,有的不是标准的。标准的含义就是被SUN公司JDK体现与兼容,成为业界遵循的准则。比如,Servlet,当它成为标准规范以后,就会在JDK...

weixin_30650039的博客 202

J2EE,Java EE,Jakarta EE 命名之间的恩恩怨怨

简单来说,上面所有的名字指的都是一个东西上面的排序是按照时间演进来进行排序。

HONEY MOOSE 1507
上一篇: 社招面试会遇到哪些坑?
下一篇: 微软真的拥抱开源了吗?
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值