亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

Java 簡介

1. Java 的歷史

1995 年 5 月 23 日,Sun Microsystems 公司宣布 Java 語言誕生, 當時使用 Java 的總人數還不到 30 人,可能包括 Java 語言之父詹姆斯·高斯林在內的大多數聯合創始人都無法預想,Java 在未來的二十年間,居然會給互聯網乃至我們的生活帶來如此深遠的影響。

目前 Java 提供以下三個版本:

  • Java Platform, Enterprise Edition(Java EE:Java 平臺企業版);

  • Java Platform, Standard Edition(Java SE:Java 平臺標準版);

  • Java Platform, Micro Edition(Java ME:Java 平臺微型版)。

2006 年,SUN 公司在 JavaOne 大會上,宣布在 GNU 通用公共協議(GPL)的構架下向開源世界貢獻 Java 平臺,這次開放的 Java 版本包括了其標準版(Standard)、微型版(Micro)以及企業版(Enterprise)。這是一個具有 “歷史性意義” 的改變。

2. 語言特性

Java 語言的誕生,重新定義了面向對象編程(OOP)。Java 語言的創建之初,就定下了以下幾個目標:

  • 簡單易學,并且面向對象;

  • 必須健壯且安全;

  • 擺脫平臺的依賴性;

  • 高性能執行;

  • 必須是可解釋的,多線程的,動態的。

2.1 面向對象

面向對象(Object Oriented)指的是一種編程方法。面向對象的主要思想是:圍繞著我們所操縱的 “事物”(即對象)來設計軟件。 計算機硬件的發展為軟件技術的發展提供了更好的土壤,為了讓大型軟件項目易于管理,降低開發和維護的成本,面向對象技術也就應運而生。為了了解面向對象技術的誕生原因,我們下面來介紹幾種比較具有代表性的軟件技術。

2.1.1 匯編語言

匯編語言是軟件技術的開端,這種語言與機器語言非常接近,并且可以很容易地轉換為可執行代碼。使用匯編語言的程序員,必須了解計算機的詳細體系結構才能編寫程序。

2.1.2 程序語言

在匯編語言之后,開發了高級語言,可以使用語言的編譯器(如 gcc)將高級程序代碼轉換為機器指令。這樣程序員無需再深入了解計算機硬件的體系結構。為了提高代碼的可復用性并最大程度地減少 GOTO 指令的使用,引入了面向過程技術。雖然簡化了軟件流程控制的創建和維護,但是忽視了數據的組織。調試和維護許多全局變量的程序,變成了程序員的一場噩夢。

2.1.3 面向對象語言

在面向對象的語言中,數據被抽象地封裝在對象中。特定于對象中的數據只能通過該對象來進行訪問。這樣,程序就成為了對象之間的一系列交互。Java 語言就是一個純面向對象的語言。

2.2 跨平臺性

我們也許常常聽到一句口號 ——“一次編譯,到處執行(write once, run anywhere.)”,這里說的就是 Java 的跨平臺性,我們首先來看下在 cc++ 中,代碼是如何在不同平臺運行的:

cc++ 中,我們首先要將源代碼文件編譯為機器代碼文件,然后再去執行它。這個過程中,機器代碼文件必須在為其編譯的平臺才能執行(這里的平臺指的是 Windows、Linux、Mac OS 等),也就是說,我們的代碼如果希望在多個平臺執行,那就必須多次編譯程序。這不僅給程序員帶來了繁瑣的開發步驟(代碼稍做變更就要重新編譯整個程序),也給程序帶來了更大的漏洞風險。當代碼已經編譯為可執行文件時,這個可執行文件不能動態更改,此時需要更改代碼重新編譯,以替換舊的可執行文件。

我們來看看 Java 是如何做的吧:

Java 的思想是,將代碼編譯為中間語言,中間語言是字節碼,解釋器是 Java 虛擬機(JVM)。字節碼文件可以通用,JVM 是特定于平臺的。如下圖所示:

每一個平臺都需要一個 JVM ,這里 JVM 是實現 “到處執行” 的關鍵前提,所以,在 Java 中,我們只需要生成一個字節碼文件,就可以保證我們編寫的程序在任何平臺都能運行了。

2.3 標準化

Java 中,提供了大量的標準化庫,這保證了我們使用統一的接口對程序進行控制。

2.4 異常處理

異常處理的老方式是:讓每個函數返回一個錯誤代碼,調用者會檢查其返回的內容,這樣就導致了代碼中到處都是錯誤碼的校驗,從而讓源碼變得難以閱讀。

在異常處理的新方式中,函數或方法不再返回錯誤碼,而是以拋出異常的方式來進行異常處理,在 Java 中可以使用 catch 關鍵字來捕獲在 try 語句塊中所發生的異常。這樣我們無需頻繁通過定義錯誤代碼的方式處理異常,代碼可讀性大大提高。

2.5 動態類加載

在 Java 中,如果在執行階段不需要某個類,那么這個類就不會被編譯為字節碼。在網絡編程中,這個特性非常常用。當我們不知道將執行什么代碼時,程序可以從文件系統或遠端服務器加載類。

2.6 自動垃圾回收機制

在常規語言(例如 C 和 C++)中,程序員必須確保已分配的內存被釋放。防止造成內存泄漏的麻煩。

內存資源或緩沖區具有特定的操作模式以獲得最佳性能。一旦緩沖區中充滿了數據,就需要在不再使用其內容之后將其清除。如果程序員忘記清除其代碼中的內容,則內存很容易過載。Java 使用自動垃圾收集器來管理對象生命周期中的內存。程序員確定何時創建對象,一旦不再使用對象,Java 運行時將負責恢復內存。一旦沒有了對對象的引用,則垃圾回收器將自動釋放無法訪問的內存。

自動垃圾回收機制,讓使用 Java 編寫的代碼更加健壯,降低了內存泄漏和溢出的風險。程序員唯一需要注意的是對象創建的速度。如果應用程序創建對象的速度超過了垃圾收集器釋放對象的速度,則可能導致內存相關問題。

3. Java 的版本歷史

Java 的主要發行版本及其發行日期如下:

  • JDK 1.0(1996 年 1 月 23 日)

  • JDK 1.1(1996 年 2 月 19 日)

  • J2SE 1.2(1998 年 12 月 8 日)

  • J2SE 1.3(2000 年 5 月 8 日)

  • J2SE 1.4(2002 年 2 月 6 日)

  • J2SE 5.0(2004 年 9 月 30 日)

  • Java SE 6(2006 年 12 月 11 日)

  • Java SE 7(2011 年 7 月 28 日)

  • Java SE 8(2014 年 3 月 18 日)

  • Java SE 9(2017 年 9 月 21 日)

  • Java SE 10(2018 年 3 月 20 日)

  • Java SE 11(2018 年 9 月 25 日)

  • Java SE 12(2019 年 3 月 19 日)

  • Java SE 13(2019 年 9 月 17 日)

  • Java SE 14(2020 年 3 月 17 日)

  • Java SE 15(2020 年 9 月 15 日)

  • Java SE 16(2021 年 3 月 16 日)

4. 名詞解釋

我們將在后續詳細介紹如何在不同平臺上安裝 Java,在安裝 Java 之前,我們需要理解兩個名詞,JDK 和 JRE:

  • JRE:Java Runtime Environment (Java 運行時環境)

  • JDK:Java Development Kit (Java 開發工具包)

以上兩個名詞是 Java 平臺的兩大重要軟件,他們分別可以幫助用戶運行開發 Java 程序,JDK 是 JRE 的超集,包含 JRE 的所有內容,以及開發小程序和應用程序所需的工具,例如編譯器和調試器。

簡單來說,我們如果想要利用 Java 語言去開發應用程序,就要在我們的電腦上安裝 JDK。本教程使用最新版本的 Java 16

5. 學習基礎

學習本教程,最好有一定的計算機基礎知識,熟悉計算機軟件的下載、安裝等。當然,如果你沒有任何基礎知識也不必擔心,本教程會盡量使用通俗易懂的語言來講解知識點。

6. 小結

在大多數人看來,Java 語言已經非常完美,但是,Java 語言并非沒有缺陷,Java 語言缺少硬件特定的數據類型,也沒有能夠指向任意地址的指針或編程方法之類的功能。盡管這些功能有可能被程序員誤用或濫用,但不得不承認它們是強大的工具。

在本節中,我們對 Java 語言的歷史以及主要特性有了一個初步的了解,小伙伴們是不是已經迫不及待,要更加深入了解 Java 了呢?那么在下一小節,我們將了解如何在自己的電腦上安裝 Java。