概述
1991年4月,由詹姆斯·高斯林博士領導的綠色計劃(Green Project)開始啟動,此計劃的目的是開發一種能夠在各種消費性電子產品上運行的程序架構。這個計劃的產品就是Java語言的前身Oak。Oak當時在消費市場上并不算成功,但隨著1995年互聯網潮流的興起,Oak迅速找到了最適合自己發展的市場定位并蛻變成Java語言。
特別聲明
本文中要說明的Java語言版本簡史是指在Java語言體系下Java語言版本的變化歷程,先給出Java技術體系包含以下技術分類:
版本進化歷程
版本號 | 發布時間 |
---|---|
Java 1.0 | 1996年01月23日 |
Java 1.1 | 1997年02月18日 |
Java 1.2 | 1998年12月04日 |
Java 1.3 | 2000年05月18日 |
Java 1.4 | 2004年02月06日 |
Java 1.5 | 2004年09月30日 |
Java 6 | 2006年12月11日 |
Java 7 | 2011年07月29日 |
Java 8 | 2014年03月18日 |
Java 9 | 2017年09月22日 |
Java 10 | 2018年03月21日 |
Java 11 | 2018年09月25日 |
版本新特性及改進
Java 1.0
- Java虛擬機
- Applet
- AWT
Java 1.1
- JAR文件格式
- JDBC
- Java Beans
- RMI
Java 1.2
- EJB
- Java Plug-in
- Java IDL
- Swing
Java 1.3
- Math
- Timer API
- JNDI
- RMI-IIOP
- Java 2D API
- Java Sound
Java 1.4
- Regular Expressions
- 異常鏈
- NIO
- 日志類
- XML解析器
- XSLT解析器
Java 1.5
- 自動裝箱與拆箱
- 泛型
- 動態注解
- 枚舉
- 可變長參數
- 遍歷循環
- 靜態導入
Java 6
- 提供動態語言支持
- Desktop類和SystemTray類
- 使用JAXB2來實現對象與XML之間的映射
- 理解STAX
- 使用Compiler API
- 輕量級 Http Server API
- 插入式注解處理 API
- 使用Console開發控制臺程序
- Common Annotations
- Java GUI界面的顯示
- 嵌入式數據庫Derby
- Web服務元數據
- Jtable的排序和過濾
- 更簡單更強大的JAX-WS
Java 7
- switch語句中可以使用字符串
- 泛型實例化類型自動推斷
- 自定義自動關閉類
- 新增一些讀取環境信息的工具方法
- Boolean類型反轉,空指針安全,參與位運算
- 兩個char之間的equals
- 更加安全的加減乘除
- 對Java集合( Collections)的增強支持
- 數值可加下劃線
- 支持二進制數字
Java 8
- 接口的默認方法
- Lambda表達式
- 函數式接口
- 方法與構造函數引用
- 擴展了集合類
- 新的Date API
- Annotation多重注解
- Streams API
- Parallel Streams
- Map數據結構改進
Java 9
- Jigsaw模塊化項目
- 簡化進程API
- 輕量級JSON API
- 錢和貨幣的API
- 改善鎖競爭機制
- 代碼分段緩存
- 智能java編譯
- HTTP2.0客戶端
- Kulla計劃
Java 10
- 局部變量的類型推斷
- GC改進和內存管理
- 線程本地握手
- 備用內存設備上的堆分配
- 其他Unicode語言 - 標記擴展
- 基于Java的實驗性JIT編譯器
- 開源根證書
- 根證書頒發認證(CA)
- 將JDK生態整合單個存儲庫
- 刪除工具javah
- Java REPL(JShell)
Java 11
- 本地變量類型推斷
- 字符串增強
- 集合增強
- Stream 增強
- Optional 增強
- InputStream 增強
- 標準化HTTP Client API
- 單個命令編譯運行源代碼
Java 12
- Switch表達式
- Shenandoah垃圾回收集
- JVM Constants API
- Default CDS Archives
有關LTS
從Java 9開始到目前已經發布的Java 11,Oracle公司已經按照半年一個大版本的方式發布Java JDK,而Java 11是目前發布的第一個LTS版本(長期支持版本)。有關的Java語言的詳細發布路線請參考Oracle官方文檔,若是您對此還有疑問我會另外分享一篇文章來專門說明Java版本的發布和支持情況。
有關語義化版本
Semantic Versions是指一個軟件產品在正式發布的時候采取的語義化版本信息,具體格式如下:
主版本號.次版本號.修訂號
隨著軟件產品的不斷更新迭代,要是沒有統一規范的軟件版本管理規范,那么對于現代軟件產品的生命周期控制可是一項偉大工程。而對于目前Java的版本發布情況,使用的是大版本號 + 發布年份月份的格式。
參考
總結
對于以上知識點的梳理讓我知道了Java技術體系中涉及了哪些具體的功能和實現,也漸漸了解了Java SE、Java EE、Java ME、Java Embedded、Java Card和Java TV之間的關系,更是知道了Java語言應用的廣泛場景。不管是客戶端、服務器、嵌入式設備、還是成千上萬的便攜式設備,我相信經過這么多年的技術積累和技術演變,會為更多的Java開發者提供更加豐富更加便捷的開發運行部署環境,也為后續Java語言的發展和演變提供了有力的保證和支持。若是我的文章對你有所啟發,那將是我莫大的榮幸。