1. 程式人生 > >JVM系列第1講:Java 語言的前世今生

JVM系列第1講:Java 語言的前世今生

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 語言的發展有一個大致的理解,便於我們後續進行更加深入的學習。

JVM系列目錄

如果只是看,其實無法真正學會知識的。為了幫助大家更好地學習,我建了一個虛擬機器群,專門討論學習 Java 虛擬機器方面的內容,每週針對我所發文章進行討論答疑。如果你有興趣,關注「Java技術精選」公眾號,通過右下角選單「入群交流」加我好友,小助手會拉你入群。