IT兄弟連 Java語法教程 Java的發展歷程

  • 2019 年 10 月 5 日
  • 筆記

版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/ITXDL123/article/details/91783545

只有少數幾種程式語言對程式設計帶來過根本性的影響。其中,Java的影響由於迅速和廣泛而格外突出。可以毫不誇張的說,1995年Sun公司發布的Java1.0給電腦程式設計領域帶來了一場變革。這場變革迅速地把Web轉變了一個高度交互的環境,也給電腦語言的設計設置了一個新標準。

多年以來,Java不斷地發展、演化和修訂。和其他語言加入新功能的動作遲緩不同,Java一直站在電腦程式設計語言的前沿,部分原因是變革的文化,部分原因是它所面對的變化。Java已經做過或大或小的多次升級。

第一次主要的升級是1.1版,這次升級比較大,加入了很多新的庫元素,修訂了處理事件的方式,重新配置了1.0版本的庫中的許多功能。

第二個主要的版本是Java2,它代表Java的第二代,標誌著Java的「現代化」的到來。Java2第一個發布的版本號是1.2。Java2在第一次發布時使用1.2版本號看上去有些奇怪,原因在於該版本號最初是指Java庫的內部版本號,後來就泛指整個版本號了。Java2被Sun公司重新包裝為J2SE(Java 2 Platform Standard Edition,請大家讀作J-two-SE,而不是J-2-SE),並且開始把版本號應用於該產品。

在J2SE後的下一個版本是J2SE 1.3,它是Java 2版本首次較大的升級。它增強了一些已有的功能。

之後的J2SE 1.4版本進一步增強了Java。該版本包括一些重要的新功能,如鏈式異常、基於通道的I/O(NIO)以及assert關鍵字。

在J2SE 1.4版本之後的下一個版本是J2SE 5,他是Java的第二次變革。以前的幾次Java升級提供的改進雖然重要,但是是增量式的,而J2SE 5卻從該語言的作用域、功能和範圍等方面提供了根本性的改進。為了幫助理解J2SE 5的修改程度,下面列出了J2SE 5中的一些主要的新增功能:

● 泛型

● 自動裝箱/自動拆箱

● 枚舉

● 增強型for-each形式的for循環

● 可變長度實參(varargs)

● 靜態導入

● 註解(annotation)

這些條目都是重要的升級,每一條都代表了Java語言的一處重要改進。其中,泛型、增強型for循環和可變長度實參引入了新的語法元素;自動裝箱和自動拆箱修改了語法規則;註解增加了一種全新的編程註解方法。

這些新功能的重要性反應在使用的版本號「5」上,從版本號的變化方式看,這一版本的Java應該是1.5。由於新功能和變革如此之多,常規的版本號升級(從1.4到1.5)已經無法標識實際的變化,因此Sun決定使用版本號5,以強調發生了重要改進。因此,當前的版本叫做J2SE 5,開發工具包叫做JDK 5。但是,為了保持和以前的一致性,Sun決定使用1.5作為內部版本號,也叫做開發版本號。J2SE 5中的「5」叫做產品版本號。

J2SE 5之後發布的升級版本是Java SE 6,Sun再次決定修改Java平台的名稱,把「2」從版本號中刪除了。因此,Java平台現在的名稱是Java SE,官方產品名稱是Java Platform Standard Edition 6,對應的Java開發工具包叫做JDK 6。和J2SE 5一樣,Java SE 6中的「6」是指產品的版本號,內部的開發版本號是1.6。

Java SE 6建立在J2SE 5的基礎之上,做了進一步的增強和改進。Java SE 6並沒有對Java語言本身添加較大的功能,而是增強了API庫,添加了多個新包,改進了運行時環境。它在漫長的生命周期內經歷了一些更新,添加了一些升級功能。總之,Java SE 6進一步鞏固了J2SE 5建立的領先地位。在中國,J2SE 5以及Java SE 6是使用最多的版本。

Java SE 6之後發布的升級版本是Java SE 7,對應的Java開發工具包叫做JDK 7,內部版本號是1.7。Java SE 7是Oracle收購(2009年4月20日僅僅以74億美元收購,在Sun被收購後僅僅一年James Gosling便從Oracle離職了)Sun Microsystems之後發布的第一個主版本。Java SE 7包含許多新功能,對語言和API庫做了許多增強。Java SE 7添加的最重要的功能是在Project Coin中開發的那些功能。Project Coin的目的是確保把對Java語言所做的很多小改動包含到JDK 7中,其中包括:

● 使用String控制switch語句。

● 二進位整形字面值。

● 在數值字面值中使用下劃線。

● 新增一種叫做try-with-resources的try語句,支援自動資源管理。

● 構造泛型實例時,通過菱形運算符使用類型推斷。

● 增強了異常處理,可以使用單個catch捕獲兩個或更多個異常(多重捕獲),並且對重新拋出的異常可以進行更好的類型檢查。

可以看到,雖然Project Coin中的功能被視為小改動,但是「小」這個詞實在不能體現它們所帶來的好處。特別是,try-with-resources語句對大量程式碼的編寫方式會產生深遠的影響。

之後Oracle推出了Java SE 8,這也是目前中國使用的最新的版本(僅僅是少數公司,大部分公司還在使用Java SE 8之前的版本),Java SE 8對應的開發工具包是JDK 8,內部的開發版本號是1.8。JDK 8表示這是對Java語言的一次重大升級(其實這些升級應該在Java SE 7時便完成的,但是當時Sun公司被Oracle收購,延誤了開發,所以在Java SE 7中沒有包含這些升級),因為本次升級包含了一種意義深遠的新語言功能:lambda表達式。lambda表達式的影響深遠:不但改變了概念化的編程方式,而且改變了Java程式碼的編寫方式。使用lambda表達式,可以簡化並減少創建某個結構所需的源程式碼量。lambda表達式有助於確保Java成為用戶所期望的充滿活力且敏捷的語言。從JDK 8開始,通過介面還可以為指定的方法定義默認實現。總之,Java SE 8這一主要版本擴展了Java語言的功能,並且改變了Java程式碼的編寫方式,帶來的影響足夠深遠,在未來幾年後將體現出來(注意,是未來幾年後,而不是當前)。

在Java SE 8之後,Oracle公司又相繼推出了Java SE 9以及Java SE 10版本,預計2018年9月份推出Java SE 11。但是Java SE 8作為一個LTS版本(長期支援版,將有三年的維護期,直到下一個LTS版本發布,按照Oracle目前的計劃,下一個LTS版本是Java SE 11)依然是目前最好的選擇,而Java SE 9、Java SE 10將作為功能性更新版本,維護周期只有6個月的時間。所以不建議大家使用。而且在Java SE 9中增加的新特性可能因為一些原因在Java SE 10或Java SE 11中就被移除了,所以也不建議大家學習最新版本的新特性,還是以學習穩定版本為主要目標。