官术网_书友最值得收藏!

1.2.1 Java語言的特點

1. 簡單

Java的語法與C語言很接近,使得大多數開發者能夠快速學習和使用Java語言。另一方面,Java舍棄了C++中很少使用的、晦澀且容易出錯的特性,如運算符重載、多重繼承等。特別地,Java還從語法層面取消了指針,同時提供了自動內存回收機制,使開發者不必頻繁編寫代碼顯式地釋放內存。

2. 完全面向對象

在Java世界中,萬事萬物皆對象[1]。與C++不同,Java對面向對象的要求十分嚴格,任何變量和方法都只能包含于某個類的內部,這使得程序的結構更為清晰。Java提供了封裝、繼承和多態等基本的面向對象特性,并且只支持單繼承。為了能表達多重繼承的語義,同時避免引入如C++的多重繼承所帶來的復雜性,Java使用了接口的概念——類可以繼承另一個類,同時也能實現若干個接口。此外,Java提供了全面的動態綁定機制,而不像C++只能對虛函數使用動態綁定。總之,Java是一種完全的面向對象的編程語言。

3. 分布式

作為誕生并發展于互聯網興起時代的編程語言,Java提供了豐富的用于編寫網絡應用程序的API,這在Java EE中體現的尤為明顯。Java提供的RMI(Remote Method Invocation,遠程方法調用)機制甚至允許執行網絡中另一臺機器上的代碼,這使得一個Java程序可以被分布到網絡中若干不同的物理機器上,并形成一個邏輯上的整體。更為重要的是,這種分布機制所涉及的細節對于程序的編寫者和使用者來說幾乎是完全透明的——跨機器的通信就如同訪問本地資源一樣簡單。

4. 安全

Java程序經常需要被部署在開放的網絡環境中,為此,Java從誕生之初就非常重視安全性。例如,在編譯階段進行語法、語義和類型安全檢查,類被裝載到Java虛擬機時進行字節碼校驗等。對于通過網絡下載的類,Java也提供了多層安全機制以防止程序被惡意代碼侵害,這些機制包括代碼行為檢查、分配不同的命名空間以防止本地同名類被替換等。此外,Java還允許用戶自定義安全管理器,以便靈活地控制訪問權限。

5. 健壯

Java的設計目標之一是要協助開發人員編寫出各方面可靠的程序。Java具有的強類型檢查、異常捕獲及處理、資源自動釋放以及垃圾自動回收等機制,為程序的健壯性提供了重要保證。此外,前述的安全檢查機制也使得Java程序更具健壯性。

6. 平臺中立與可移植

Java在發布之初便宣稱“Write Once, Run Anywhere”,即每個Java程序可以不加任何修改而隨處運行。然而,互聯網是由各種異質平臺組成的,這種異質既包括硬件(如CPU),也包括軟件(如操作系統)。為使Java程序能夠運行在網絡中的任何平臺,Java源文件被編譯為平臺中立(即無關)的字節碼文件,后者可以在所有實現了相應規范的Java平臺上運行。

7. 解釋型

如前所述,Java源文件被編譯為平臺中立的字節碼,而后者是CPU無法直接理解的,因此需要由平臺上的Java虛擬機將這些字節碼“解釋”成CPU能夠理解的指令并交由CPU執行。平臺中立與可移植性決定了Java是一種解釋型的編程語言[2]

8. 高性能

由于存在解釋的過程,故從理論上來說,Java程序的執行性能是低于傳統的編譯型語言(如C、C++)的[3]。在Java誕生之初,事實上也的確如此。但與純解釋型的腳本語言(如VBScript、JavaScript、Python等)相比,Java的性能卻要高得多。隨著近年來JIT(Just In Time,即時的)編譯以及HotSpot(一種新的Java虛擬機規范)等字節碼優化技術的出現,Java程序的性能已非常接近于C++,對于絕大多數應用,這種性能差距是完全可以接受的。從另一個角度看,Java以極小的性能損失為代價所換取的平臺中立與可移植性卻是非常有價值的。

9. 動態特性

Java是可擴展的、具有動態特性的面向對象編程語言,用Java編寫的程序能夠較好適應不斷變化的業務需求。除了接口和自動類型推斷所提供的動態特性外,Java語言的動態性更多體現在反射機制上。反射機制允許程序在運行而非編譯階段動態地訪問類和對象的元數據(用來描述數據的數據),這使得Java語言比那些直接被編譯成本地代碼的語言更具動態性。

說明:盡管Java提供了較為豐富的動態特性,但相較于JavaScript、Ruby、Python等能在運行時修改變量類型(甚至程序結構)的動態編程語言而言,Java仍屬于靜態編程語言的范疇。

10. 開源

與其他眾多技術不同,Java從誕生之初便堅持開源(Open Source,開放源代碼)策略。任何個人和組織都可以免費下載JDK核心類庫的源代碼。也正因如此,任何Java開發者都能擴展官方代碼,從而創建出適合自己需求的類庫[4]。此外,開發者[5]還能以提交JSR(Java Specification Request,Java規范請求)的方式,建議官方為JDK的下一發布版本增添某些新特性和服務??偠灾?,開源使得Java語言的功能和特性日趨豐富,同時也使得開發Java程序越來越方便。

基于上述特點,Java已成為網絡環境下軟件開發的首選技術之一。從消費類電子產品到超級計算機,從智能移動終端應用到企業級分布式計算,Java無處不在。

主站蜘蛛池模板: 仁布县| 香格里拉县| 西峡县| 房产| 壤塘县| 潼关县| 永清县| 瑞丽市| 芷江| 凌源市| 两当县| 绵竹市| 黑河市| 嘉荫县| 锡林浩特市| 文山县| 偃师市| 亳州市| 肇东市| 沅江市| 固镇县| 康保县| 万全县| 闻喜县| 丰台区| 边坝县| 蓬溪县| 咸宁市| 长泰县| 阳原县| 嘉鱼县| 馆陶县| 六安市| 甘洛县| 江源县| 蒲城县| 文安县| 上高县| 安陆市| 来安县| 东方市|