Java 語言是一門存在了 20 多年的語言,其年紀比我自己還大。雖然存在了這么長時間,但 Java 至今都是最大的工業級語言,許多大型互聯網公司均采用 Java 來實現其業務系統。大到國際電商巨頭阿里巴巴,小到無名小公司,我們均可看到 Java 的身影。
我是 2010 年開始接觸 Java 語言的,在我剛剛接觸 Java 的時候,我經常對於 Java 中的一些基本概念弄不清楚。例如:JDK 7 與 Java SE 7 有什么區別?JDK 與 JRE 有什么區別 ?Java SE 與 Java EE 有什么區別 ?等等。
上面這些問題其實都是 Java 中最最基礎的知識,如果沒有搞懂這些基礎的知識,就不用談更加深入的學習了。所以在開始學習 JVM 相關知識之前,我們這一節就來把那些我們經常混淆的概念弄清楚。
JDK 與 JRE
JDK 與 JRE 是我們經常遇到的概念,但許多學習了幾年的開發都搞不懂他們之間的區別。簡單地說 JRE(Java Runtime Environment)僅包含運行 Java 程序的必需組件,包括 Java 虛擬機以及 Java 核心類庫等。而 JDK(Java Development Kit)除了包含 JRE外,還附帶了一系列開發、診斷工具。
一般來說,如果只需要運行 Java 程序,那么你安裝 JRE 即可。但如果你要進行 Java 程序的開發,那么你就需要安裝 JDK。
JDK 與 J2SE
JDK 與 Java SE 是我們經常混淆的東西,其實 JDK 是指包含了開發、診斷工具的一個組件,Java SE 則是 Java 三大技術體系的一個。要弄懂這一點,就要了解 Java 語言的歷史。在 1998 年,JDK 1.2 發布,Java 技術體系被拆分為 J2SE、J2EE、J2ME 三大體系。
J2SE 稱之為標准版技術體系(Java 2 Standard Edition),它包含了構成 Java 語言核心的類,例如:數據庫連接、網絡編程、接口定義等。J2SE 技術體系主要用於桌面應用軟件的編程。正因為 J2SE 包含了 JDK 核心類,所以在我們下載 JDK 時,你會看到其實下載處的文字說明是「Java SE 11.0.1 is the latest release for JDK 11」。
J2EE 稱之為企業版技術體系(Java 2 Enterprise Edition),它除了包含 J2SE 中的類,還包含用於開發企業級應用的類,比如:Servlet、JSP、EJB 等。J2EE 技術體系主要用於分布式的網絡程序的開發,如電子商務網站等。
J2ME 稱之為嵌入式技術體系(Java 2 Micro Edition),它包含 J2SE 中的一部分類。J2ME 技術體系主要用於消費類電子產品的軟件開發,例如:手機、PDA、尋呼機等。
通過這么一介紹,我相信大家都明白 JDK 與 Java SE 的區別了。簡單地說,JDK 是一個核心庫、開發工具、診斷工具的合集,而 Java SE 則是一個技術體系。
J2SE 與 Java SE
J2SE 我們弄明白了,那么你知道 J2SE 與 Java SE 這兩者有什么區別嗎?
其實它們指的是同一個東西,只不過在 2006 年 JDK 1.6 發布的時候,其將 J2SE、J2EE、J2ME 的命名方式改為 Java SE 6、Java EE 6、Java ME 6。
所以在下一次 JDK 1.7 發布的時候,其對應的三個技術體系就叫做:Java SE 7、Java EE 7、Java ME 7。比起之前的命名方式,其增加了 JDK 的版本號,能夠更加清晰地表明技術體系所屬的 JDK 版本。
與這個類似的還有一個:JDK 1.7 與 JDK 7。其實從上面 J2SE 與 Java SE 的變更,我們可以推斷,JDK 1.7 與 JDK 7 也是因為類似的命名更換導致的。
經過上面的簡單介紹,相信大家對於一些基礎概念的理解都差不多了。Java 語言發展至今已有多年歷史,但其也不是一蹴而就的,一開始 Java 語言知識一個小小的 Oak 語言。
Java 語言的歷史
在 1991 年,James Gosling 博士發布了 Oak,這個是 Java 語言的前身。但一直到 1995 年的時候,Oak 語言才改名為 Java。
- 1991 年,James Gosling 博士發布產品 Oak,這是 Java 語言的前身。
- 1995 年,Oak 語言改名為 Java。
- 1996 年,JDK1.0 發布,提供了純解釋執行的 Java 虛擬機實現:Sun Classic VM。
- 1997 年,JDK1.1 發布,代表技術有:JDBC、JavaBeans、內部類、反射。
- 1998 年,JDK1.2 發布,Java 技術體系被拆分為 J2SE、J2EE、J2ME 三大體系。
- 2000 年,JDK1.3 發布,默認的 Java 虛擬機由 Sun Classic VM 改為 HotSopt。
- 2002 年,JDK1.4 發布,Java 真正走向成熟,代表技術有:正則表達式、NIO等。
- 2004 年,JDK1.5 發布,對語法易用性做了很大改進,新增了泛型、枚舉等,代表技術有:並發包等。
- 2006 年,JDK1.6 發布,將 J2EE/J2SE/J2ME 的命名方式改為 Java SE 6、Java EE 6、Java ME 6。
- 2009 年,Sun 公司因為經營不善被 Oracle 公司收購。
- 2011 年,JDK1.7 發布。
- 2013 年,JDK1.8 發布。
從上面的歷史我們可以知道 Java 語言具有眾多的特性,但是其眾多特性並不是一蹴而就的,而是一點點迭代而來的。JDK 每個版本新增的語言特性如下:
- 1997 年,JDK1.1 發布,新增了JDBC、JavaBeans、內部類、反射。
- 2002 年,JDK1.4 發布,新增了正則表達式、NIO等。
- 2004 年,JDK1.5 發布,新增了泛型、枚舉、並發包等。
總結
我們這一節簡單地介紹了一些常見概念上的區別,以及 Java 語言的歷史。通過這一節的內容,我們能對 Java 語言的發展有一個大致的理解,便於我們后續進行更加深入的學習。
如果只是看,其實無法真正學會知識的。為了幫助大家更好地學習,我建了一個虛擬機群,專門討論學習 Java 虛擬機方面的內容,每周針對我所發文章進行討論答疑。如果你有興趣,關注「陳樹義」公眾號,通過右下角菜單「入群交流」加我好友,小助手會拉你入群。
JVM基礎系列文章目錄
- JVM基礎系列開篇:為什么要學虛擬機?
- JVM基礎系列第1講:Java 語言的前世今生
- JVM基礎系列第2講:Java 虛擬機的歷史
- JVM基礎系列第3講:到底什么是虛擬機?
- JVM基礎系列第4講:從源代碼到機器碼,發生了什么?
- JVM基礎系列第5講:字節碼文件結構
- JVM基礎系列第6講:Java虛擬機內存結構
- JVM基礎系列第7講:JVM類加載機制
- JVM基礎系列第8講:JVM 垃圾回收機制
- JVM基礎系列第9講:JVM垃圾回收器
- JVM基礎系列第10講:垃圾回收的幾種類型
- JVM基礎系列第11講:JVM參數之堆棧空間配置
- JVM基礎系列第12講:JVM參數之查看JVM參數
- JVM基礎系列第13講:JVM參數之追蹤類信息
- JVM基礎系列第14講:JVM參數之GC日志配置
- JVM基礎系列第15講:JDK性能監控命令