- 實(shí)戰(zhàn)Java虛擬機(jī):JVM故障診斷與性能優(yōu)化(第2版)
- 葛一鳴
- 1312字
- 2024-01-08 16:10:49
1.1.2 Java發(fā)展史上的里程碑
下面,將簡(jiǎn)要介紹一下Java發(fā)展史上的重大事項(xiàng)。
1990年,在Sun計(jì)算機(jī)公司中,由Patrick Naughton、Mike Sheridan及James Gosling領(lǐng)導(dǎo)的小組Green Team開(kāi)始研發(fā)一種可控制家用電子產(chǎn)品的新型計(jì)算機(jī)軟件技術(shù),并希望能夠研究出一種可以跨平臺(tái)的系統(tǒng)。開(kāi)始他們?cè)囍贑++的基礎(chǔ)上做修改,但一直無(wú)法克服編譯器的問(wèn)題,所以決定自行開(kāi)發(fā)新的程序語(yǔ)言—Oak。這里的Oak已經(jīng)具備安全性、網(wǎng)絡(luò)通信、面向?qū)ο蟆⒗厥铡⒍嗑€程等特性。后來(lái)他們發(fā)現(xiàn)Oak已經(jīng)被其他公司注冊(cè),于是改名為Java。
1995年,Sun正式發(fā)布Java和HotJava產(chǎn)品,Java首次公開(kāi)亮相。
1996年1月23日Sun Microsystems發(fā)布了JDK 1.0。這個(gè)版本包括了兩部分:運(yùn)行環(huán)境(即JRE)和開(kāi)發(fā)環(huán)境(即JDK)。在運(yùn)行環(huán)境中包括了核心API、用戶界面API、發(fā)布技術(shù)、Java虛擬機(jī)(JVM)幾個(gè)部分。開(kāi)發(fā)環(huán)境包括了編譯Java程序的編譯器(即javac)。在JDK 1.0時(shí)代,Java使用一款叫作Classic的虛擬機(jī)解釋執(zhí)行Java字節(jié)碼。
1997年2月18日Sun發(fā)布了JDK 1.1,在該版本中,已經(jīng)支持AWT、內(nèi)部類、JDBC、RMI、反射等特性。同年,Sun收購(gòu)了一家叫作Longview Technologies的公司,從而獲得了Hotspot虛擬機(jī)。
同在1997年,Jim Hugunin創(chuàng)造了Jython,但由于各種原因,Jython的發(fā)展相當(dāng)緩慢,但到現(xiàn)在為止,Jython已經(jīng)取得了長(zhǎng)足的進(jìn)步,甚至已經(jīng)可以運(yùn)行Django框架。
1998年,JDK 1.2版本發(fā)布(從這個(gè)版本開(kāi)始的Java技術(shù)都稱為Java 2)。Java 2不僅能兼容智能卡和小型消費(fèi)類設(shè)備,還能兼容大型的服務(wù)器系統(tǒng),它使軟件開(kāi)發(fā)商、服務(wù)提供商和設(shè)備提供商更加容易搶占市場(chǎng)機(jī)遇。這一開(kāi)發(fā)工具極大地簡(jiǎn)化了編程人員編制企業(yè)級(jí)Web應(yīng)用的工作。同時(shí)Sun發(fā)布了JSP/Servlet、EJB規(guī)范,將Java分成了J2EE、J2SE和J2ME。這表明了Java開(kāi)始向企業(yè)、桌面應(yīng)用和移動(dòng)設(shè)備應(yīng)用3大領(lǐng)域挺進(jìn)。此時(shí)的Java已經(jīng)做到了解釋執(zhí)行和編譯執(zhí)行混合運(yùn)行。
2000年,JDK 1.3 發(fā)布,Hotspot虛擬機(jī)成為Java的默認(rèn)虛擬機(jī)。
2002年,JDK 1.4 發(fā)布,古老的Classic虛擬機(jī)退出歷史舞臺(tái)。
2003年年底,Java平臺(tái)的Scala正式發(fā)布,同年Groovy也加入了Java陣營(yíng)。
2004年,JDK 1.5 發(fā)布。同時(shí)JDK 1.5改名為J2SE 5.0。在這個(gè)版本中,Java語(yǔ)言做了大量的改進(jìn),比如支持了泛型、注解、自動(dòng)裝箱拆箱、枚舉類型、可變長(zhǎng)參數(shù)、增強(qiáng)的foreach循環(huán)等。語(yǔ)法上的簡(jiǎn)化和改進(jìn)是這一版本的一大特色。
2006年,JDK 1.6發(fā)布。同年,Java開(kāi)源并建立了OpenJDK。順理成章,Hotspot虛擬機(jī)也成為了OpenJDK中的默認(rèn)虛擬機(jī)。
2007年,Java平臺(tái)迎來(lái)了新伙伴Clojure。
2008年,Oracle收購(gòu)了BEA,得到了JRockit虛擬機(jī)。
2009年,Twitter宣布把后臺(tái)大部分程序從Ruby遷移到Scala,這是Java平臺(tái)的又一次大規(guī)模應(yīng)用。
2010年,Oracle收購(gòu)了Sun,獲得最具價(jià)值的Hotspot虛擬機(jī)。此時(shí),Oracle擁有市場(chǎng)占用率最高的兩款虛擬機(jī)Hotspot和JRockit,并計(jì)劃在未來(lái)對(duì)它們進(jìn)行整合。
2011年,JDK 1.7發(fā)布。在JDK 1.7中,正式啟用了新的垃圾回收器G1,支持了64位系統(tǒng)的壓縮指針及NIO 2.0,同時(shí)新增的invokedynamic指令也是該版本的一大特色。
2014年,JDK 1.8發(fā)布。在JDK 1.8中,全新的Lambda表達(dá)式是一大亮點(diǎn),它徹底改變了Java的編程風(fēng)格和習(xí)慣。
Oracle計(jì)劃在2016年發(fā)布JDK 1.9。屆時(shí),最令人期待的功能應(yīng)該是Java的模塊化。
2017年,JDK 9發(fā)布。在JDK 9中,引入了Java模塊化,允許開(kāi)發(fā)者根據(jù)項(xiàng)目的需求自定義模塊組件,使Java能夠更加容易地應(yīng)用到小型計(jì)算設(shè)備。
2018年,JDK10發(fā)布,引入了var 局部變量類型推斷,可以有效地減少代碼的冗余,統(tǒng)一了垃圾回收接口,優(yōu)化了G1 垃圾回收器的并行完整垃圾回收。
注意:在本書中,JDK 1.6等同于JDK 6,JDK 1.7等同于JDK 7,JDK 1.8等同于JDK 8,JDK 1.9等同于JDK 9,JDK 1.10等同于JDK 10。
- 大前端三劍客:Vue+React+Flutter
- MacTalk 跨越邊界
- 深入理解Net-Snmp
- Android 網(wǎng)絡(luò)開(kāi)發(fā)與應(yīng)用實(shí)戰(zhàn)詳解
- UML基礎(chǔ)與Rose建模案例(第3版)
- Android游戲開(kāi)發(fā)大全
- 軟件需求分析實(shí)戰(zhàn)
- 深度學(xué)習(xí):21天實(shí)戰(zhàn)Caffe
- 敏捷軟件開(kāi)發(fā):用戶故事實(shí)戰(zhàn)
- 負(fù)載均衡:高并發(fā)網(wǎng)關(guān)設(shè)計(jì)原理與實(shí)踐
- 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)工作坊
- Spring Boot+Vue 3大型前后端分離項(xiàng)目實(shí)戰(zhàn)
- 軟件平臺(tái)架構(gòu)設(shè)計(jì)與技術(shù)管理之道
- C語(yǔ)言程序開(kāi)發(fā)范例寶典(軟件工程師典藏版)
- 云原生測(cè)試實(shí)戰(zhàn)