天天看點

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

“這裡是雲端源想IT,幫你輕松學IT”

嗨~ 今天的你過得還好嗎?

這人間煙火

風花雪月太好看

愛恨情仇都浪漫

- 2023.07.17 -

Java是一門面向對象的程式設計語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以了解的多繼承、指針等概念,是以Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜态面向對象程式設計語言的代表,極好地實作了面向對象理論,允許程式員以優雅的思維方式進行複雜的程式設計 。

說起Java大家都知道,Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動态性等特點。Java可以編寫桌面應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等,那麼Java語言發展曆程你了解過嗎?

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

Java語言的發展史

1990年年末,Sun公司預料嵌入式系統将在未來家用電器領域大顯身手。于是Sun公司成立了一個由James Gosling(詹姆斯·高斯林)上司的“Green計劃 ”,準備為下一代智能家電(電視機、微波爐、電話)編寫一個通用控制系統。

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!
詹姆斯·高斯林 (James Gosling)是一名軟體專家,1955年5月19日出生于加拿大,Java程式設計語言的共同創始人之一,一般公認他為“Java之父”。

該團隊最初考慮使用C++語言,但是很多成員包括Sun的首席科學家Bill Joy,發現C++和可用的API在某些方面存在很大的問題。

而且工作小組使用的是嵌入式平台,可用的系統資源極其有限。并且很多成員都發現C++太複雜,以緻很多開發者經常錯誤使用。而且C++缺少垃圾回收系統、可移植性、分布式和多線程等功能。

根據可用的資金,Bill Joy 決定開發一種新語言,他提議在C++的基礎上,開發一種面向對象的環境。于是,Gosling試圖通過修改和擴充C++的功能來滿足這個要求,但是後來他放棄了。他決定創造一種全新的語言:Oak(橡樹,java的前身)。

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

到了1992年的夏天,Green計劃已經完成了新平台的部分功能,包括Green作業系統。Oak的程式設計語言、類庫等。同年11月,Green計劃被轉化成“FirstPerson有限公司”,一個Sun公司的全資子公司。

FirstPerson團隊緻力于建立一種高度互動的裝置。當時代華納公司釋出了一個關于電視機頂盒的征求提議書時,FirstPerson團隊改變了他們的目标,作為對征求提議書的響應,提出了一個機頂盒平台的提議。

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

但是有線電視業界覺得FirstPerson的平台給予使用者過多的控制權,是以FirstPerson的投标敗給了SGI。同時,3DO公司另外一筆關于機頂盒的交易沒有成功。此時,可憐的Green項目幾乎接近夭折,甚至Green項目的一半成員也被調到了其他的項目組。

正如古代的寓言所言:塞翁失馬,焉知非福?如果Green項目在機頂盒平台投标成功,也許就不會誕生Java這門偉大的語言了。

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

1994年夏天,網際網路和浏覽器的出現不僅給廣大網際網路的使用者帶來了福音,也給Oak語言帶來了新的生機。Gosling立即意識到,這是一個機會,于是對Oak進行了小規模的改造。

到了1994年秋,小組中的Naughton(諾頓)和Jonathan Payne(喬納森·佩恩)完成了第一個Java語言的網頁浏覽器:WebRunner.Sun公司實驗室主任Bert Sutherland(伯特·薩瑟蘭)和技術總監Eric Schmict(埃裡克·施密特)觀看了該浏覽器的示範,對該浏覽器的效果給予了高度評價。當時的Oak這個商品已經被注冊,于是隻得将Oak更名為Java。

Sun公司在1995年年初釋出了Java語言,Sun公司直接把Java放到網際網路上,免費給大家使用,甚至連源代碼也不保密,也放到網際網路上向所有人公開。

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

幾個月後,讓所有人都吃驚的事情發生了:Java成了網際網路上最熱門的寶貝。竟然有10萬多人次通路了Sun公司的網頁,下載下傳了Java語言。然後,網際網路上立即就有了數不清的Java小程式(也就Applet),示範着各種小動畫、小遊戲等。

Java 語言終于眼眉吐氣了 ,成為了一種廣為人知的程式設計語言。

在Java語言出現之前,網際網路的網頁實質上就像一張紙,不會有任何動态的内容。有了Java語言之後,浏覽器的功能被擴大了,Java程式可以直接在浏覽器裡運作,可以直接與遠端伺服器互動:用Java語言程式設計,可以在網際網路上像傳送電子郵件一樣友善地傳送程式檔案!

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

1995年,Sun雖然推出了Java,但這隻是一種語言,如果想開發複雜的應用程式,必須要有一個強大的開發類庫。

是以,Sun在1996年年初釋出了JDK1.0。這個版本包括兩部分:運作環境(即JRE)和開發環境(即JDK)。運作環境包括核心API、內建API、使用者界面API、釋出技術、Java虛拟機(JVM)5個部分;開發環境包括編譯Java程式的編譯器(即Javac指令)。

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

接着,Sun在1997年2月18日釋出了JDK1.1。JDK1.1增加了JIT(即時編譯)編譯器。JIT和傳統的編譯器不同,傳統的編譯器是編譯一條,運作完成後将其扔掉;而JIT會将經常用到的指令儲存在記憶體中,當下調用時就不需要重新編譯了,通過這種方式讓JDK在效率上有了較大提升。

JDK 1.1 引入的新特性包括:

引入JDBC(Java Database Connectivity);

支援内部類;

引入Java Bean;

引入RMI(Remote Method Invocation);

引入反射(僅用于内省)。

但一直以來,Java主要的應用就是網頁上的Applet以及一些移動裝置。到了1996年年底,Flash面世了,這是一種更加簡單的動畫設計軟體:使用Flash幾乎無須任何程式設計語言知識,就可以做出豐富多彩的動畫。随後Flash增加了ActionScript程式設計腳本,Flash逐漸蠶食了Java在網頁上有了較大提升。

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

從1995年Java誕生到1998年年底,Java語言雖然成為了網際網路上廣泛使用的程式設計語言,但它并沒有找到一個準确的定位,也沒有找到它必須存在的理由:Java語言可以編寫Applet,而Flash一樣可以做到,而且更快,開發成本更低。

直到1998年12月,Sun公司召開JavaOne大會,釋出了Java曆史上最重要的JDK版本:JDK1.2。伴随着JDK1.2一同釋出的還有JSP/Servlet、EJB等規範,并将Java分成J2EE、J2SE和J2ME三個版本。

1999年6月,SUN公司釋出Java的三個版本:标準版(J2SE)、企業版(J2EE)和微型版(J2ME)。

  • J2ME(标準版):主要用于控制移動裝置和資訊家電等有限存儲的裝置。
  • J2SE(企業版):整個Java技術的核心和基礎,它是J2ME、J2EE程式設計的基礎,
  • J2EE(微型版):Java技術中應用最廣泛的部分,J2EE提供了企業應用開發相關的完整解決方案。這标志着Java已經吹響了向企業、桌面和移動三個領域進軍的号角,标志着Java已經進入Java2時代,這個時期也是Java飛速發展的時期。
了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

在Java2中,Java發生了很多革命性的變化,而這些革命性的變化一直沿用到現在,對于Java的發展形成了深遠的影響。直到今天還經常看到J2EE、J2ME等名稱。

不僅如此,JDK1.2還把它的API分成了三類。

  • 核心API:由Sun公司制定的基本的API,所有的Java平台都應該提供。這就是平常所說的Java核心類庫。
  • 可選API:這是Sun為JDK提供的擴充API,這些API因平台的不同而不同。
  • 特殊API:用于滿足特殊要求的API。如用于JCA和JCE等第三方加密類庫。

2001年9月24日,J2EE1.3釋出

JDK 1.3 開發代号為Kestrel(紅隼)引入的新特性包括:

引入Java Sound API;

jar檔案索引;

對Java的各個方面都做了大量優化和增強。

2002年2月,Sun釋出了JDK曆史上最成熟的版本:JDK1.4成為發展最快的一個JDK版本。JDK1.4已經可以使用Java實作大多數的應用了。

JDK 1.4 開發代号為Merlin(隼)引入的新特性包括:

XML處理;

Java列印服務;

引入Logging API;

引入Java Web Start;

引入JDBC 3.0 API;

引入斷言;

引入Preferences API;

引傳入連結式異常處理;

支援IPv6;

支援正規表達式;

引入Image I/O slot machine API。

在此期間,Java語言在企業應用領域大放異彩,湧現出大量基于Java語言的開源架構如Struts、WebWork、Hibernate、Spring等;大量企業應用伺服器也開始湧現比如WebLogic、WebSphere、JBoss等,這些都标志着Java語言進入了飛速發展時期。

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

2004年10月,Sun釋出了萬衆期待的JDK1.5,同時,Sun将JDK1.5改名為Java SE5.0,J2EE、J2ME也相應地改名為Java EE和Java ME。

JDK1.5增加了諸如泛型、增強的for語句、可變數量的形參、注釋、自動拆箱和裝箱等功能;同時,也釋出了新的企業級平台規範,如通過注釋等新特性來簡化EJB的複雜性,并推出了自己的MVC架構規範:JSF,JSF規範類似于ASP.NET的伺服器端控件,通過它可以快速地建構複雜的JSP界面。

JDK 1.5 開發代号為Tiger(老虎)引入的新特性包括:

引入泛型;

增強循環,可以使用疊代方式;

自動裝箱與自動拆箱;

類型安全的枚舉;

可變參數;

靜态引入;

中繼資料(注解);

引入Instrumentation。

SUN釋出Java1.5版,成為Java平台發展史上又一裡程碑。為了表明該版本的重要性,SUN将之稱為Java5.0。

2005年6月,JavaOne大會召開,SUN公司公開Java SE 6。此時,Java的各種版本已經更名以取消其中的數字“2”:J2EE更名為Java EE, J2SE更名為Java SE,J2ME更名為Java ME。一直以來,Sun公司維持着大約2年釋出一次JDK新版本的習慣。

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

2006年11月,SUN公司宣布Java全線采納GNU General Public License Version 2,進而公開了Java的源代碼。

JDK 1.6 開發代号為Mustang(野馬)引入的新特性包括:

支援腳本語言;

引入JDBC 4.0 API;

引入Java Compiler API;

可插拔注解;

增加對Native PKI(Public Key Infrastructure)、Java GSS(Generic Security Service)、Kerberos和LDAP(Lightweight Directory Access Protocol)的支援;

繼承Web Services;

做了很多優化。

2009年4月,Oracle宣布将以74億美元收購Sun公司,同時擷取了Java的版權。

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

2011年7月,Oracle公司終于"如約" 釋出了 Java SE 7——這次版本的更新經過了将近5年時間。Java SE 7也是Oracle釋出的第一個Java版本,引入了二進制整數、支援字元串的switch語句、棱形文法、多異常捕抓、自動關閉資源的try語言等新特性。

JDK 1.7 開發代号是Dolphin(海豚)引入的新特性包括:

switch語句塊中允許以字元串作為分支條件;

在建立泛型對象時應用類型推斷;

在一個語句塊中捕獲多種異常;

支援動态語言;

支援try-with-resources;

引入Java NIO.2開發包;

數值類型可以用2進制字元串表示,并且可以在字元串表示中添加下劃線;

鑽石型文法;

null值的自動處理。

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

2014年3月,Oracle公司發不了Java SE8,這次版本更新為Java帶來了全新的Lambda表達式、流式程式設計等大量新特性,這些新特性使得Java變得更加強大。

JDK 1.8 開發代号是Spider(蜘蛛)

支援 lambda支援;

增強日期與時間API的功能;

對垃圾回收的性能也進行了改進,并且移除了permgen區;

Lambdas表達式與Functional接口;

接口的預設與靜态方法;

方法引用;

重複注解;

更好的類型推測機制;

擴充注解的支援。

2017年9月,Oracle公司釋出了Java SE 9,這次版本更新強化了Java的子產品化系統,讓龐大的Java語言更輕量化,而且采用了更高效、更智能的GI 垃圾回收器,并在核心類庫上進行了大量更新,可以進一步簡化程式設計,但對文法本身更新并不多。

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

2018年3月,Oracle公司釋出了Java SE 10,JDK 10中引入了兩個主要的增強功能:JEP 319根證書:清單或根證書已公開給JDK的cacerts密鑰庫,一些與安全相關的API标記為要删除。

同年9月,Oracle公司又釋出了Java SE 11。 JDK 11中引入的主要安全增強功能由JEP 332:傳輸層安全性(TLS)1.3提供。 這是TLS協定的新版本,與TLS規範的先前版本(1.2)相比,提供了許多增強功能。 此外,對cacerts密鑰庫中的根證書進行了更多增強(添加了一些根證書,并删除了一些根證書)。之後Oracle公司便以每年釋出兩個版本的速度更新疊代。

2019年,2019年2月Java 12釋出;2019年9月Java 13 釋出。

2020年,2020 年3月17日,Java 14 釋出。2020年9月15日,Java 15 釋出。

2021年,2021年3月16日,Java SE 16 釋出。2021 年9月14日,Java SE 17 LTS 釋出。

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

截止于2021年12月,JDK版本已經釋出到了JDK 17。

這個是繼 Java 11 之後的有一個長期支援版本, 并且直接支援到了 2029 年 9 月。這可能是下一個 Java 8,是以學習的話, 可以直接學習這個版本。當然也可以直接學習 Java 17 ,這樣的話, 對于工作來說 3 年之内不會有大的變化。

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

以上就是Java語言的整個發展曆程了,至此,你對于Java語言是否有了更多的了解呢,在學習一門新的語言之前不妨多了解了解其發展,這将幫助我們更加深刻地領悟到一門語言的誕生和存在的意義,讓我們學習起來更加容易一些。

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!

我們下期再見!

END

文案編輯|雲端學長

文案配圖|雲端學長

内容由:雲端源想分享

了解Java語言發展史,探究其多線程、動态性等特點背後的故事!