官术网_书友最值得收藏!

1.1 Java EE發(fā)展簡史

Java是很受歡迎的編程語言,而Java EE則是應(yīng)用廣泛的企業(yè)級架構(gòu)。Java平臺在經(jīng)歷了20多年的發(fā)展后,已然成為開發(fā)者首選的“利器”。大型互聯(lián)網(wǎng)公司也多選擇Java作為主力開發(fā)語言,這些企業(yè)包括Google、IBM、Oracle等外企,也包括華為、京東、百度、阿里巴巴等國內(nèi)名企。Java以其穩(wěn)定而著稱,特別是“Write Once,Run Anywhere”(一次編寫,各處運行)的特性,非常適合互聯(lián)網(wǎng)企業(yè)對于快速推出產(chǎn)品、部署產(chǎn)品的需求。

1.1.1 Java平臺發(fā)展簡史

在2020年年初的TIOBE編程語言排行榜中,Java位居榜首。圖1-1展示的是2020年3月TIOBE編程語言排行榜情況(https://www.tiobe.com/tiobe-index)。回顧歷史,Java語言的排行也一直是名列三甲。

然而,作為當(dāng)今企業(yè)級應(yīng)用的首選編程語言,Java的發(fā)展并非一帆風(fēng)順。

1991年,Sun公司準(zhǔn)備用一種新的語言來設(shè)計用于智能家電類(如機(jī)頂盒)的程序開發(fā)。“Java之父”James Gosling創(chuàng)造出了這種全新的語言,并命名為Oak(橡樹),以他辦公室外面的樹來命名。然而,由于當(dāng)時的機(jī)頂盒項目并沒有競標(biāo)成功,因此Oak被陰差陽錯地應(yīng)用到萬維網(wǎng)。

1994年,Sun公司的工程師編寫了一個小型萬維網(wǎng)瀏覽器WebRunner(后來改名為HotJava),該瀏覽器可以直接用來運行Java小程序(Java Applet)。

圖1-1 TIOBE編程語言排行榜

1995年,Oak改名為Java。由于Java Applet可以實現(xiàn)一般網(wǎng)頁所不能實現(xiàn)的效果,引來了業(yè)界對Java的熱捧,因此當(dāng)時很多操作系統(tǒng)都預(yù)裝了Java虛擬機(jī)。

1997年4月2日,JavaOne會議召開,參與者逾1萬人,創(chuàng)下了當(dāng)時全球同類會議規(guī)模的紀(jì)錄。

1998年12月8日,Java 2企業(yè)平臺J2EE發(fā)布,標(biāo)志著Sun公司正式進(jìn)軍企業(yè)級應(yīng)用開發(fā)領(lǐng)域。

1999年6月,隨著Java的快速發(fā)展,Sun公司將Java分為3個版本,即標(biāo)準(zhǔn)版(J2SE)、企業(yè)版(J2EE)和微型版(J2ME)。從這3個版本的劃分可以看出,當(dāng)時Java語言的目標(biāo)是覆蓋桌面應(yīng)用、服務(wù)器端應(yīng)用及移動端應(yīng)用3個領(lǐng)域。

2004年9月30日,J2SE 1.5發(fā)布,成為Java語言發(fā)展史上的又一里程碑。為了凸顯該版本的重要性,J2SE 1.5被更名為Java SE 5.0。

2005年6月,JavaOne大會召開,Sun公司發(fā)布了Java SE 6。此時,Java的各種版本已經(jīng)更名,已取消其中的數(shù)字2,即J2EE被更名為Java EE,J2SE被更名為Java SE,J2ME被更名為Java ME。

2009年4月20日,Oracle公司以74億美元收購了Sun公司,從此Java歸屬于Oracle公司。

2011年7月28日,Oracle公司發(fā)布Java 7正式版。該版本新增了(如try-with-resources語句、增強(qiáng)switch-case語句)支持字符串類型等特性。

2011年6月中旬,Oracle公司正式發(fā)布了Java EE 7。該版本的目標(biāo)在于提高開發(fā)人員的生產(chǎn)力,滿足苛刻的企業(yè)需求。

2014年3月19日,Oracle公司發(fā)布Java 8正式版。該版本中的Lambda表達(dá)式、Streams流式計算框架等廣受開發(fā)者關(guān)注。

由于Java 9中計劃開發(fā)的模板化項目(或稱Jigsaw)存在比較大的技術(shù)難度,JCP執(zhí)行委員會內(nèi)部成員也無法達(dá)成共識,因此造成了該版本的發(fā)布一再延遲。Java 9及Java EE 8終于在2017年9月發(fā)布,Oracle公司宣布將Java EE 8移交給了開源組織Eclipse基金會。同時,Oracle公司承諾,后續(xù)Java的發(fā)布頻率調(diào)整為每半年一次。截至目前,Java新版本為Java 15。圖1-2所示為Java EE 8整體架構(gòu)圖。

圖1-2 Java EE 8整體架構(gòu)圖

有關(guān)Java新平臺的內(nèi)容可以參閱筆者所著的《Java核心編程》。

1.1.2 Java EE現(xiàn)狀

2018年2月26日,Eclipse基金會社區(qū)正式將Java EE更名為Jakarta EE,也就是說,后續(xù)的Java企業(yè)級發(fā)布版本將命名為Jakarta EE。這個名稱來自Jakarta——一個早期的Apache開源項目,但該改名行為并未得到Java社區(qū)的支持。Java EE Guardians社區(qū)負(fù)責(zé)人Reza Rahman就Java EE重命名的問題做了一項Twitter調(diào)查,結(jié)果顯示,68%的Java開發(fā)者認(rèn)為應(yīng)該保留Java EE名稱。2019年9月10日,Jakarta EE 8終于發(fā)布,該版本旨在與Java EE 8規(guī)范完全兼容。在本書中,為了避免混淆,統(tǒng)一采用Java EE命名來代表J2EE、Jakarta EE或JEE。

1.EE4J的使命

EE4J(Eclipse Enterprise for Java)是一項開放源代碼計劃,旨在為Java運行時創(chuàng)建標(biāo)準(zhǔn)API、這些API的實現(xiàn)以及技術(shù)兼容性套件,以實現(xiàn)服務(wù)器端和云本地應(yīng)用程序的開發(fā)、部署和管理。EE4J基于Java平臺企業(yè)版(Java EE)標(biāo)準(zhǔn),并使用Java EE 8作為創(chuàng)建新標(biāo)準(zhǔn)的基準(zhǔn)。

EE4J允許使用靈活的流程、靈活的許可以及用于平臺演進(jìn)的開放治理流程。一個開放的過程不依賴于單個供應(yīng)商或領(lǐng)導(dǎo)者,它鼓勵參與和創(chuàng)新,并服務(wù)于整個社區(qū)的集體利益。

EE4J通過使用通用流程和通用兼容性要求定義一套集成的標(biāo)準(zhǔn)來建立其組成項目之間的通用性。EE4J通過提供Java EE 8和EE4J版本之間的兼容性為現(xiàn)有用戶和新用戶提供兼容性。

EE4J的成功取決于:

  • Java EE 8技術(shù)快速過渡到EE4J項目。
  • 靈活和開放的流程,用于發(fā)展EE4J標(biāo)準(zhǔn)API、這些API的實現(xiàn)以及技術(shù)兼容性套件。
  • 一個由開發(fā)人員、供應(yīng)商和最終用戶組成的強(qiáng)大社區(qū),支持并發(fā)展EE4J技術(shù)。
  • 適應(yīng)和發(fā)展EE4J技術(shù),并提供可滿足現(xiàn)有用戶新需求及吸引新用戶的創(chuàng)新。
  • 滿足EE4J實現(xiàn)以及Java EE 8和EE4J版本之間定義良好的兼容性標(biāo)準(zhǔn)。
  • 使競爭的供應(yīng)商和互補技術(shù)提供商能夠提供可為EE4J技術(shù)增值的創(chuàng)新。

EE4J的會員來自世界頂尖的科技公司,其中包括CA、CEA、Fujitsu、Huawei、IBM、Konduit、OBEO、Oracle、Red Hat、Bosch、SAP等。

2.EE4J與Jakarta EE的關(guān)系

EE4J包含以下子項目:

  • Eclipse Cargo Tracker
  • Eclipse GlassFish
  • Eclipse Grizzly
  • Eclipse Implementation of JAXB
  • Eclipse Jakarta EE TCK
  • Eclipse Jersey
  • Eclipse Krazo
  • Eclipse Metro
  • Eclipse Mojarra
  • Eclipse OpenMQ
  • Eclipse ORB
  • Eclipse Soteria
  • Eclipse Tyrus
  • Eclipse Yasson
  • EclipseLink Project
  • Jakarta Activation
  • Jakarta Annotations
  • Jakarta Authentication
  • Jakarta Authorization
  • Jakarta Batch
  • Jakarta Bean Validation
  • Jakarta Concurrency
  • Jakarta Connectors
  • Jakarta Contexts and Dependency Injection
  • Jakarta EE Examples
  • Jakarta EE Platform
  • Jakarta Enterprise Beans
  • Jakarta Expression Language
  • Jakarta Interceptors
  • Jakarta JSON Binding
  • Jakarta JSON Processing
  • Jakarta Mail
  • Jakarta Messaging
  • Jakarta NoSQL
  • Jakarta Persistence
  • Jakarta RESTful Web Services
  • Jakarta Security
  • Jakarta Server Faces
  • Jakarta Server Pages
  • Jakarta Servlet
  • Jakarta Stable APIs
  • Jakarta Standard Tag Library
  • Jakarta Transactions
  • Jakarta WebSocket
  • Jakarta XML Binding
  • Jakarta XML Web Services

從上述列表可以看出,Jakarta EE是EE4J的一部分。Jakarta EE的目標(biāo)是創(chuàng)建與Java EE兼容的API。而完整的EE4J除了Java EE API外,還包括很多實現(xiàn)了Java EE API的產(chǎn)品,比如GlassFish、Grizzly等。

由于EE4J是基于Java EE 8技術(shù)標(biāo)準(zhǔn)的,且與Java EE 8的API是完全兼容的,因此用戶在從Java EE 8切換到EE4J項目時不會有難度。同時,EE4J由強(qiáng)大的供應(yīng)商和強(qiáng)大的社區(qū)作為支撐,所提供的創(chuàng)新解決方案更能夠滿足現(xiàn)有用戶的新需求,吸引新用戶。

3.不再使用JCP

長期以來,Java EE規(guī)范的制定都是由JCP(Java Community Process)來執(zhí)行的。JCP是一種針對Java技術(shù)開發(fā)標(biāo)準(zhǔn)技術(shù)規(guī)范的機(jī)制。它向所有人開放,任何人都可以參與審核,并提供Java規(guī)范請求(JSR)反饋。任何人都可以注冊成為JCP成員,并加入JSR專家組,成員甚至可以提交自己的JSR提案。

2018年1月,Oracle公司表示將來不再支持或建議使用JCP來增強(qiáng)Java EE,而是建議并支持使用EE4J推動的過程對Java EE 8規(guī)范進(jìn)行功能增強(qiáng)。在發(fā)給EE4J社區(qū)的郵件中,Oracle Web Logic Server產(chǎn)品管理高級主管Will Lyons傳達(dá)了這則消息。

簡而言之,未來Java EE的版本將由EE4J主導(dǎo)。

4.面向Cloud Native

2019年9月10日,Jakarta EE發(fā)布了第一個版本,即Jakarta EE 8。Jakarta EE 8與Java EE 8完全兼容,可以簡單理解為將Java EE 8的API完全遷移到了Jakarta EE平臺。

Jakarta EE發(fā)展的重點之一是創(chuàng)建Cloud Native(云原生)的Java應(yīng)用。畢竟未來Java企業(yè)級應(yīng)用都將會部署上云。

Jakarta EE包含以下子項目:

  • Jakarta Annotations
  • Jakarta Authentication
  • Jakarta Authorization
  • Jakarta Batch
  • Jakarta Bean Validation
  • Jakarta Concurrency
  • Jakarta Connectors
  • Jakarta Contexts and Dependency Injection
  • Jakarta EE Platform
  • Jakarta Enterprise Beans
  • Jakarta Expression Language
  • Jakarta Interceptors
  • Jakarta JSON Binding
  • Jakarta JSON Processing
  • Jakarta Messaging
  • Jakarta Persistence
  • Jakarta Mail
  • Jakarta RESTful Web Services
  • Jakarta Security
  • Jakarta Server Faces
  • Jakarta Server Pages
  • Jakarta Servlet
  • Jakarta Stable APIs
  • Jakarta Standard Tag Library
  • Jakarta Transactions
  • Jakarta WebSocket
  • Jakarta XML Web Services

有關(guān)Cloud Native的內(nèi)容可以參閱筆者所著的《Cloud Native分布式架構(gòu)原理與實踐》。

主站蜘蛛池模板: 靖远县| 普兰店市| 宁晋县| 双辽市| 吉木乃县| 彰化市| 宽甸| 宜城市| 伊川县| 津市市| 昌图县| 普定县| 莱芜市| 花莲市| 九台市| 康平县| 珠海市| 浦东新区| 图木舒克市| 桂平市| 香港 | 沁阳市| 黄石市| 江北区| 大港区| 奉新县| 白朗县| 梁河县| 前郭尔| 库车县| 巴林右旗| 博白县| 上蔡县| 内江市| 佛教| 台北县| 安康市| 北海市| 保康县| 广丰县| 新巴尔虎左旗|