很多Java程序員在使用新版本的Spring6或者springboot3版本的時(shí)候,發(fā)現(xiàn)了一些叫jakarta的包。我在閱讀開源工作流引擎camunda源代碼的時(shí)候,也發(fā)展了大量jakarta的工程包。
比如:camunda的webapps編譯工程就提供了2種方式j(luò)avax和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.
網(wǎng)上也有好多同學(xué)使用Tomcat時(shí)遇到到Jakarta.servlet與javax.servlet包沖突的問題。
Tomcat10中解決eclipse內(nèi)部Jakarta.servlet與javax.servlet不兼容問題方法:
https://blog.csdn.net/mmmm0584/article/details/115161865
引起以上問題的原因是:Java EE更名為Jakarta EE,javax命名空間變?yōu)閖akarta,javax包名前綴變?yōu)閖akarta。
2009年4月20日,甲骨文(Oracle)公司和Sun公司今天共同宣布了最終協(xié)議,甲骨文公司將以74億美元收購(gòu)SUN公司。當(dāng)時(shí),Sun Microsystems被譽(yù)為世界上最具前瞻性的IT公司之一,有能力以開放軟件及硬件為結(jié)合,進(jìn)行全面統(tǒng)一的系統(tǒng),給客戶帶來最大的價(jià)值。Oracle收購(gòu)Sun Microsystems表明,它希望借助Sun Microsystems的關(guān)鍵軟件和技術(shù)資源,將自身現(xiàn)有的專業(yè)的管理體系,硬件解決方案,及應(yīng)用程序發(fā)展技術(shù)集成在同一個(gè)平臺(tái)上,從而創(chuàng)建一個(gè)更加完善的企業(yè)增值產(chǎn)品和服務(wù)。
2018年,Oracle(甲骨文)決定將Java EE移交給開源組織Eclipse基金會(huì),但甲骨文不允許開源組織用Java的名號(hào),于是Eclipse選出了 "Jakarta EE" 和"Enterprise Profile"兩個(gè)名字,最終前者勝出。
Eclipse基金會(huì)高管Mike Milinkovich表示,7000多人參與了Java EE的更名投票,64%的票數(shù)支持改為Jakarta EE,另有35.6%的票數(shù)支持Enterprise Profile。
Oracle將Java EE(Java SE還自己保留)交給開源組織,Eclipse基金會(huì)接手。但Oracle不允許開源組織使用Java名號(hào),所以Jakarta EE名稱于2018.02.26應(yīng)運(yùn)而生。Oracle收購(gòu)了Sun公司,涉及到商標(biāo)和版權(quán)原因,Javax改名為Jakarta迫不得已。
從Java EE到Jakarta EE,企業(yè)版Java、JDK的發(fā)展歷程,參考:
https://cloud.tencent.com/developer/article/1847110
Spring Framework作為Java領(lǐng)域最為流行的框架,有非常龐大的用戶群體和項(xiàng)目應(yīng)用,Java開源框架里絕對(duì)的TOP1。我們首先看看Java EE更名Jakarta對(duì)Spring Framework的影響。
Spring Framework 6正式發(fā)布,攜JDK 17&Jakarta EE開啟新篇章,Spring Framework為何一躍將JDK的baseline從JDK 8提到JDK 17,以及廢棄javax,啟用全新的jakarta命名空間。Spring Framework 6基于JDK 17構(gòu)建。換句話講,若想使用Spring Framework 6那么你的JDK環(huán)境最低要求JDK 17。
javax命名空間其實(shí)早已成為過去式,畢竟現(xiàn)在已快2024年了。這次Spring團(tuán)隊(duì)也是跟著JDK一起,順勢(shì)的完全摒棄掉了javax命名空間,擁抱Jakarta EE。
另外,之前有些內(nèi)置進(jìn)JDK里面的Java EE注解,現(xiàn)在也換“包名”啦,如具有代表性的:JSR-330的@Inject、JSR 250的@PostConstruct、@Predestroy以及及其常用的@Resource注解,Resource包名變成了jakarta.annotation.Resource。
從Jakarta EE 9開始,便使用了全新的jakarta.*命名空間。本次建議使用從Jakarta EE 10起步。對(duì)應(yīng)的技術(shù)主要有:
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
比如:開發(fā)web程序最常用的servlet,從maven中央倉庫檢索,發(fā)現(xiàn):
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官方網(wǎng)站:https://jakarta.ee/
使用 ENTERPRISE JAVA 為云原生架構(gòu)構(gòu)建開源生態(tài)系統(tǒng),最新版本:Jakarta EE 10 現(xiàn)已上市。
Jakarta EE 平臺(tái)和配置文件規(guī)范是各個(gè)規(guī)范的總括規(guī)范。Jakarta EE 平臺(tái)包括大多數(shù)單獨(dú)的規(guī)范,而 Profile 規(guī)范包括用于開發(fā) Web 平臺(tái)和微服務(wù)架構(gòu)的單個(gè)規(guī)范。
我們看看Jakarta的生態(tài),包括 Fujitsu、IBM、Oracle、Red Hat 和 Tomittribe 在內(nèi)的全球企業(yè) Java 生態(tài)系統(tǒng)領(lǐng)導(dǎo)者正在共同努力,推動(dòng) Java EE 和 Jakarta EE 的發(fā)展,以支持將關(guān)鍵任務(wù)應(yīng)用程序和工作負(fù)載遷移到云中。另外中國(guó)開發(fā)應(yīng)用中間件的企業(yè)也在其中,包括普元、寶蘭德、東方通、金蝶、華宇、亞信等公司。
未來Java項(xiàng)目升級(jí)JDK后,可能會(huì)涉及到到代碼的升級(jí),官方出了一篇文章:如何升級(jí)到 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 升級(jí)到 Jakarta EE 10 可能有點(diǎn)棘手,可能需要額外注意細(xì)節(jié)。您可能會(huì)遇到的主要事情之一是確保現(xiàn)有代碼和庫兼容。某些庫可能仍在使用該軟件包,這可能會(huì)導(dǎo)致在嘗試在 Jakarta EE 服務(wù)器(如 Eclipse GlassFish 7)上運(yùn)行應(yīng)用程序時(shí)發(fā)生沖突。您可能還會(huì)遇到一些在 Jakarta EE 10 中刪除的已棄用 API 的問題。javax
但別擔(dān)心,我們已經(jīng)為您準(zhǔn)備好了!在這篇文章和本系列的未來文章中,我們將解釋您需要了解的所有信息,以成功且?guī)缀趿⒓瓷?jí)到 Jakarta EE 10。
升級(jí)到 Jakarta EE 10 或 GlassFish 7 的挑戰(zhàn)分為以下 3 大類:
以上所有內(nèi)容不僅適用于您的代碼庫,也適用于您的應(yīng)用程序使用的所有依賴項(xiàng)。許多流行的庫已經(jīng)有與 Jakarta EE 10 兼容的新版本,因此更新它們就足夠了。但有些圖書館可能不支持 Jakarta EE 10,需要進(jìn)行特殊調(diào)整。幸運(yùn)的是,有一些工具可以在源代碼級(jí)別和二進(jìn)制(字節(jié)碼)級(jí)別上自動(dòng)執(zhí)行此操作。
幸運(yùn)的是,許多挑戰(zhàn)都可以使用免費(fèi)和開源工具(如 Openrewrite、WindUp 和 Eclipse Transformer)自動(dòng)完成。Openrewrite 是一個(gè)強(qiáng)大的工具,可以自動(dòng)更改應(yīng)用程序的源代碼,例如使用新前綴更新對(duì)舊包的所有引用。
以下是雅加達(dá)Jakarta 官方調(diào)查問卷的統(tǒng)計(jì),雅加達(dá)Jakarta的應(yīng)用情況。
Jakarta EE是用于構(gòu)建云原生應(yīng)用程序的頂級(jí)框架的基礎(chǔ)。
雅加達(dá)Jakarta 構(gòu)建云原生應(yīng)用程序的EE使用率從2021年的47%增加到2022年的53%,而Spring/Spring Boot和MicroProfile的使用量有所下降。
本文鏈接:http://www.tebozhan.com/showinfo-26-88389-0.htmlJava EE更名Jakarta EE對(duì)程序開發(fā)影響,你知道嗎?
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com
上一篇: JavaScript如何優(yōu)雅地告別Cannot read properties of undefined,Optional類體驗(yàn)