自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從Java EE到Jakarta EE,企業(yè)版Java的發(fā)展歷程

開發(fā) 后端
Java能夠歷久彌新得益于它是非常嚴(yán)謹(jǐn)?shù)摹⒆⒅鼐幋a規(guī)范、注重設(shè)計(jì)規(guī)范的編程語言。按照規(guī)范實(shí)施做到有據(jù)可循,實(shí)施過程又可反饋給規(guī)范,形成正反饋的周而復(fù)始,越來越完善。

[[409192]]

本文轉(zhuǎn)載自微信公眾號「BAT的烏托邦」,作者YourBatman。轉(zhuǎn)載本文請聯(lián)系BAT的烏托邦公眾號。

前言

你好,我是YourBatman。

誕生于1985年的Java語言,早已年過三旬,甚至已經(jīng)越過“35歲魔咒”,比很多同學(xué)的年齡大得多。正所謂三十年河?xùn)|,三十年河西,有人說Java已廉頗老矣,基本結(jié)構(gòu)過于老套不靈活,但顯示情況是它“老而不死”依舊常年霸榜,是棵常青樹。

深愛Java的同學(xué)知道,Java并不老(Python年紀(jì)更大)、開發(fā)效率并不低(馬拉松型選手看中長遠(yuǎn)效率)、語法并不是啰嗦(這是嚴(yán)謹(jǐn)?shù)谋憩F(xiàn),同時也擁抱了Stream流式、Function函數(shù)式編程來簡化開發(fā))。Java鼓勵用嚴(yán)謹(jǐn)?shù)姆椒ā⒄_的方式來設(shè)置內(nèi)容,這讓Java程序員們對待代碼更有全局性,更適合構(gòu)建規(guī)模性的企業(yè)級項(xiàng)目。

另外,Java做到了哪怕最新版JDK能(幾乎)100%兼容首個版本,這無不依靠于優(yōu)秀的設(shè)計(jì)和規(guī)范的制定。2000年左右隨著Java的高速發(fā)展,被大量用于企業(yè)應(yīng)用的開發(fā),所以迫切需要規(guī)范的解決方案。

正所謂一流企業(yè)定標(biāo)準(zhǔn)、二流企業(yè)做品牌、三流企業(yè)做產(chǎn)品,這個活Sun公司自然不會放過,它就是企業(yè)版Java,也叫Java EE(后改名為Jakarta EE)。Java EE是一些列技術(shù)標(biāo)準(zhǔn)的集合(只定標(biāo)準(zhǔn),不提供實(shí)現(xiàn)),其中很多技術(shù)經(jīng)歷這么多年的發(fā)展已經(jīng)很成熟、應(yīng)用得很廣泛了。但深入了解后會發(fā)現(xiàn),Java EE很多技術(shù)都是起個大早,趕個晚集,否則也不會有Spring現(xiàn)在的絕對霸主地位。

本文提綱

版本約定

  • Java EE:6、7、8
  • Jakarta EE:8、9、9.1

正文

上面說到,Java能夠歷久彌新得益于它是非常嚴(yán)謹(jǐn)?shù)?、注重編碼規(guī)范、注重設(shè)計(jì)規(guī)范的編程語言。按照規(guī)范實(shí)施做到有據(jù)可循,實(shí)施過程又可反饋給規(guī)范,形成正反饋的周而復(fù)始,越來越完善。

本專欄將介紹Java EE/Jakarta EE相關(guān)的幾十種技術(shù),作為Java企業(yè)級開發(fā)的標(biāo)準(zhǔn)技術(shù),很多技術(shù)應(yīng)用非常廣泛。本文作為第一篇,將從發(fā)展歷程出發(fā),先一起全方位的了解到它。

JDK發(fā)展簡史

在講述Java EE的發(fā)展歷程之前,先簡要回顧(普及)一下JDK的發(fā)展史,方便在時間上對應(yīng)參照,畢竟開發(fā)者一般對JDK的版本會更熟、更敏感些。

誕生:1995年5月,Oak語言改名為Java,標(biāo)志著Java的誕生,并且提出了著名的Write Once,Run Anywhere口號。下面用表格形式記錄其發(fā)版時間軸。

版本 發(fā)布日期 焦點(diǎn)說明
JDK 1.0 1996.01 Java虛擬機(jī)、基礎(chǔ)類庫
JDK 1.1 1997.02 規(guī)定了Jar文件格式,JDBC、JavaBeans、RMI等。開始支持內(nèi)部類和反射
JDK 1.2 1998.12 引入集合框架Collections、Map等。從此版本開始,分為3個版本:J2SE/J2EE/J2ME(注:1999.04著名的HotSpot虛擬機(jī)誕生,順勢推出了Java EE首個版本)
JDK 1.3 2000.05 千禧年的第一個版本,對類庫進(jìn)行了優(yōu)化
JDK 1.4 2002.02 支持正則Pattern、NIO、JDBC 3.0、assert斷言
JDK 5 2004.09 JDK命名方式變化、自動拆裝箱、泛型、枚舉、可變參數(shù)、增強(qiáng)for循環(huán)、JUC并發(fā)包等等非常多新特性
JDK 6 2006.12 編譯器注解處理器(lombok的原理)、J2xx改為Java XX
JDK 7 2009.02 try-with-resources、NIO2(也叫AIO)、泛型推斷
JDK 8 2014.03 憋了5年的大招,果然經(jīng)典。Lambda表達(dá)式、函數(shù)式編程、Stream流式編程、方法引用、接口默認(rèn)方法、徹底移除HotSpot的永久代
... ... ...
JDK 11 2018.09 Jigsaw模塊化、增強(qiáng)類型推斷、革命性的垃圾收集器ZGC
... ... ...
JDK 17 2021.09 ...敬請期待

期間,關(guān)于Java/Sun公司有些大事記,記錄一下。

日期 事件
1995.05 Java語言誕生
1996.01 JDK 1.0版本發(fā)布
1998.12 JAVA2企業(yè)平臺J2EE發(fā)布(和JDK 1.2一起)
2005.06 JavaOne大會召開(Java誕生10周年),J2EE更名為Java EE, J2SE更名為Java SE,J2ME更名為Java ME
2009.04 甲骨文Oracle以現(xiàn)金收購Sun微系統(tǒng)公司,交易價(jià)格74億美元(Sun公司市值頂峰時超2000億美金。眼看他起高樓,眼看他宴賓客,眼看他樓塌了)。Sun公司最大的資產(chǎn),便是Java。從此Java商標(biāo)被Oracle收入囊中,才有了后來的Oracle PK Google大戰(zhàn)
2017.08 Oracle將Java EE(Java SE還自己保留)交給開源組織,Eclipse基金會接手。但Oracle不允許開源組織使用Java名號,所以Jakarta EE名稱于2018.02.26應(yīng)運(yùn)而生

什么是Java EE?

作為一個(資深)的Java開發(fā)者,這似乎是一個很簡單的問題。

Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。它分為三個版本:

  • Java SE(J2SE):標(biāo)準(zhǔn)版?;A(chǔ)中的基礎(chǔ),后面2個版本都依賴于它。當(dāng)前最新版本是Java 17(LTS版本,將于2021年9月發(fā)布)
  • Java EE(J2EE):企業(yè)版。用于企業(yè)級大型應(yīng)用開發(fā),包含了Web、Security、Management等幾十種標(biāo)準(zhǔn)技術(shù)
  • Java ME(J2ME):移動版。隨著Android/iOS的流行,它已幾乎銷聲匿跡

由于Java EE能夠直接應(yīng)用于企業(yè)級應(yīng)用開發(fā),解決實(shí)際問題,直接產(chǎn)生價(jià)值,因此也常說它價(jià)值更高。所以用谷歌百度一下“Java培訓(xùn)”關(guān)鍵字,基本都是培訓(xùn)Java EE的。

作為common sense,特別是Java程序員除了需對JDK的歷史有所了解外,Java EE的發(fā)展歷程也是有必要知道的,畢竟這是基礎(chǔ)知識點(diǎn),是聊天的談資,是你的內(nèi)功。

Java EE發(fā)展史

J2EE(JavaEE)自1999年首次發(fā)布以來,已成為實(shí)現(xiàn)和部署可移植、多層企業(yè)應(yīng)用程序的集成標(biāo)準(zhǔn)(它是標(biāo)準(zhǔn),它是規(guī)范),現(xiàn)在了解下它的發(fā)展史,記錄到如下表格(從成體系的Java EE 1.4版本開始)。

說明:該表格是YourBatman翻閱多處資料搜集整合,全網(wǎng)最全的一份,請收藏使用。

版本 發(fā)布日期 焦點(diǎn)說明
J2EE 1.4 2003.12 對Web服務(wù)更好支持。啟用javax命名空間。Servlet 2.4、JSP 2.0、EJB 2.1等
Java EE 5 2006.05 以Web為著力點(diǎn)繼續(xù)優(yōu)化。Servlet 2.5、JSP 2.1、EJB 3.0、注解支持等
Java EE 6 2009.12 添加了大量新技術(shù)來簡化開發(fā),如:Servlet 3.0(異步處理)、Bean Validation、EJB 3.1、JSF 2.0、JPA 2.0、上下文和依賴注入(CDI)
Java EE 7 2013.06 提高生產(chǎn)力滿足企業(yè)需求和HTML5。Servlet 3.1、WebSocket 1.0、JSON 1.0、JMX 2.0、Batch 1.0
Java EE 8 2017.08 增加了JSON綁定和安全相關(guān)。Servlet 4.0、Bean Validation 2.0、CDI 2.0、JPA 2.2
Jakarta EE入局 2017.08 Oracle將Java EE交給開源組織,Eclipse基金會接手(Apache基金會爆冷出局還是不想要?)。但Oracle不允許開源組織使用Java名號,所以Jakarta EE名稱于2018.02.26應(yīng)運(yùn)而生
Jakarta EE 8 2019.09 規(guī)范與Java EE 8完全相同。Maven的GAV變了:javax.servlet:javax.servlet-api:4.0.1 -> jakarta.servlet:jakarta.servlet-api:4.0.2,但命名空間沒變依舊還是javax.*,算是個小過度吧
Jakarta EE 9 2020.11 沒有加入新功能,Eclipse基金會的首個正式版本。命名空間從javax.*遷移到jakarta.*,前者從此成為歷史。所有模塊大版本號+1,如Servlet 4.0.2 -> Servlet 5以表示其斷層式升級
Jakarta EE 9.1 2021.06 相較于9 沒有 加入新API。主要提供對Java SE 11的運(yùn)行支持

2017年隨著Oracle把Java EE交給開源基金會,Java EE從此成為歷史,接下來將由社區(qū)驅(qū)動的Jakarta EE取而代之。

雖然Java EE已成過去式,但它似乎代表著我們的程序青春,依然是溝通的主力。因此,在很長很長很長一段時間內(nèi),Java EE知名度依舊蓋過Jakarta EE,溝通交流中使用它居多。

Tips:Java EE版本號和Java SE沒有絕對聯(lián)系。如即使到最新的Jakarta EE 9、9.1版本對JDK的最低要求是8,而非9

咱們程序員可能會吐槽Oracle為毛不讓使用Java EE商標(biāo),這么搞太費(fèi)勁了。但在Oracle眼中,可能,一切都是利益(Oracle號稱是一個律師比工程師數(shù)量還多的高科技企業(yè))

補(bǔ)充:什么是Eclipse基金會

2004年2月該非盈利組織的正式成立,由包括開發(fā)者、消費(fèi)者和插件提供商在內(nèi)的各獨(dú)立團(tuán)體組成的董事會,為Eclipse的長期發(fā)展負(fù)責(zé),它就是Eclipse基金會。

該基金會最初只有19個開源項(xiàng)目,現(xiàn)在有300+個之多,我們比較熟悉的就有:

Java開發(fā)工具:功能強(qiáng)大的Java開發(fā)IDE Eclipse

眾多Jakarta項(xiàng)目:Jakarta Annotations、Jakarta Bean Validation、Jakarta JSON Processing等等

Vert.X:一個面向現(xiàn)代web和企業(yè)的異步應(yīng)用框架,一個可能會撼動Spring地位的全家桶框架

另外,可把Eclipse基金會和Apache基金會對照著看,程序員對后者理應(yīng)更熟悉些。

什么是Jakarta EE

該名稱的由來和兩個大事記有關(guān):

為了讓Java EE更開放,Oracle決定為它尋找一個新東家(呵呵,我笑而不語)。2017年8月,Oracle將Java EE交給開源組織,Eclipse基金會接手(Apache爆冷出局還是不想要?)

Oracle拒絕讓基金會繼續(xù)使用Java名字,因此Eclipse做了一項(xiàng)名義調(diào)查,從Jakarta EE和Enterprise Profile兩個名稱中二選一,前者大比例勝出。所以在2018年3月份,Eclipse宣布正式將Java EE更名為Jakarta EE,并且確定了logo(如上圖)。另外,跟著更名的還有一些和Java EE緊密相關(guān)的名詞,如Glassfish -> Eclipse Glassfish;JCP -> EE.next;ODM(Oracle Development Management) -> PMC

總而言之:Jakarta EE你可認(rèn)為它(的內(nèi)容)就是Java EE,只是名字換了,老東家換了。之前由JCP來推動它的發(fā)展,以后將有開源社區(qū)推動。至于前景如何,咱們拭目以待。

Jakarta EE發(fā)展史

Jakarta EE還很年輕,2017年8月從Oracle手中接棒過來算起,也不過4歲,談不上什么發(fā)展史,是好是壞周期太短也不能早下定論。截止到目前,共發(fā)布了三個版本,內(nèi)容幾乎沒有變化,只在命名空間、版本號方面稍有改變,記錄如下:

版本 發(fā)布日期 焦點(diǎn)說明
Jakarta EE 8 2019.09 規(guī)范與Java EE 8完全相同。Maven的GAV變了:javax.servlet:javax.servlet-api:4.0.1 -> jakarta.servlet:jakarta.servlet-api:4.0.2,但命名空間沒變依舊還是javax.*,算是個小過度吧
Jakarta EE 9 2020.11 沒有加入新功能,Eclipse基金會的首個正式版本。命名空間從javax.*遷移到jakarta.*,前者從此成為歷史。所有模塊大版本號+1,如Servlet 4.0.2 -> Servlet 5以表示其斷層式升級
Jakarta EE 9.1 2021.06 相較于9 沒有 加入新API。主要提供對Java SE 11的運(yùn)行支持

一站式聚合API

如你所知,Java EE/Jakarta EE是幾十種技術(shù)(規(guī)范)的幾何,幾乎每種技術(shù)都有其API(對應(yīng)一個Jar),為了方便總攬全局,Java EE自6版起提供了一站式聚合API,導(dǎo)入一個就夠了:

  1. <dependency> 
  2.    <groupId>javax</groupId> 
  3.     <artifactId>javaee-api</artifactId> 
  4.     <version>6.0.0</version> 
  5.     <scope>provided</scope> 
  6. </dependency> 
  7.  
  8. <!-- Jakarta命名空間版本 --> 
  9. <dependency> 
  10.     <groupId>jakarta.platform</groupId> 
  11.     <artifactId>jakarta.jakartaee-api</artifactId> 
  12.     <version>9.1.0</version> 
  13.     <scope>provided</scope> 
  14. </dependency> 

 效果如下:

特別注意:實(shí)際工作中不建議使用這種粗暴的、大而全的導(dǎo)入方案,而是應(yīng)該按需導(dǎo)入精確把握,還classpath一片“干凈”,并且也能做到心中有數(shù),方可運(yùn)籌帷幄。

有Java EE SDK嗎?

既然Java SE有JDK,那么Java EE是否也有SDK呢?答案:有的。Oracle官網(wǎng)/Jakarta EE官網(wǎng)均提供了SDK供以下載:https://www.oracle.com/java/technologies/javaee-8-sdk-downloads.html

只不過此SDK可能讓你失望了,它不是傳統(tǒng)的軟件開發(fā)工具包,而更像是一個技術(shù)合集,并且和自家的Glassfish強(qiáng)綁定,包含有以下內(nèi)容:

  • doc官方文檔
  • 幾十種技術(shù)的使用samples(基于Maven管理、構(gòu)建)
  • glassfish容器,強(qiáng)耦合

總的來講,如若是抱著學(xué)一學(xué)的目的那么可以down下來玩玩,畢竟里面的samples示例、文檔比較全。如若你是抱著使用的目的,那就不建議了,畢竟glassfish我們(國內(nèi))很少使用。

總結(jié)

30年彈指一揮間,Java EE在逐漸淡出Java開發(fā)者的視野,但中短期來看它依舊是我們繞不過的內(nèi)容,經(jīng)常能聽到、看到、聊到。當(dāng)在研究Spring等開源框架的時候,也經(jīng)常會看到Java EE的影子。 

本文介紹了Java EE的發(fā)展史,目的是對它有個籠統(tǒng)的認(rèn)識。從Java EE到Jakarta EE,它能否重新煥發(fā)生命力我不知道,但留下來的不少東西依舊是目前的主流(如Servlet規(guī)范、JPA等等),具有非常高的學(xué)習(xí)價(jià)值,切莫輕視。

 

責(zé)任編輯:武曉燕 來源: BAT的烏托邦
相關(guān)推薦

2011-11-22 16:06:08

云計(jì)算Java

2021-09-16 10:35:51

JavaJakarta EEEclipse

2019-01-08 16:26:43

Java EEJ2EEJakarta EE

2022-02-15 19:50:18

加載器JAVAJDK

2024-05-11 14:49:39

Java EEJakarta影響

2009-06-22 17:05:41

Java EEJava企業(yè)應(yīng)用

2018-03-05 08:59:21

Java 開源Oracle

2009-10-20 09:25:17

Java EE 6最終

2023-10-16 23:37:56

2011-06-27 13:17:07

Java EE

2021-07-26 05:10:13

JavaJakarta EEJSR

2009-08-25 13:48:01

Java EE架構(gòu)企業(yè)級應(yīng)用

2009-01-18 09:56:10

WebSphereJava EEJ2EE自動部署

2009-06-10 17:47:54

Flex連接Java EE

2011-06-28 13:43:50

Java EE

2023-07-31 07:45:12

Spring項(xiàng)目Jakarta

2010-06-21 13:35:50

JavaJava EE亂碼

2012-03-12 17:09:51

企業(yè)版Linux性能

2009-06-01 13:17:48

JPAJava規(guī)范

2015-05-12 11:04:42

Java EE學(xué)習(xí)Java EE
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號