Java的特點
Sun公司對Java特點的描述為:
簡單、面向物件、可移植性、高效能、分散式、動態特性、健壯性和安全性
“撿 對(兒) 高職 高分 太安”
下面具體來解釋
-
簡單
Java系統所佔空間很小,語言風格類似C++ -
面向物件
純面向物件,不支援面向過程 任何實體都可以看成物件 程式是物件的集合;
物件是有型別的(class)
物件中封裝了屬性和行為,實現了模組化
類提供了一類物件的原型,並且可以實現繼承 -
可移植
可移植是指不經過修改就能在不同的硬體或軟體平臺上執行。 可移植性分為兩個層次:原始碼的可移植性和二進位制程式碼的可移植性。C C++只能進行原始碼級別上的可移植,需要在不同的平臺上進行編譯。 但Java的二進位制位元組碼檔案也是可以移植的。
Java主要用兩種機制倆保證可移植性。
一是,Java既是編譯型的,又是解釋型的。Java語言與傳統語言的不同執行機制是,傳統語言是編譯後得到目的碼是為某個特定的作業系統生成的,所以不能移植;而Java的源程式經過編譯得到位元組碼檔案,在Java的虛擬機器JVM上執行。JVM在任何平臺上都提供給Java程式共同的介面。
二是,Java採用IEEE的標準的資料型別,資料型別在任何機器上都是一致的,而且規定同一種資料型別在所有實現中都必須佔據相同的空間,而C++的資料型別往往與作業系統有關。
此外,Java的可移植性還體現在Java的執行環境上。Java編譯器本身就是用Java寫的。 -
高效能
Java採取了一些措施來彌補解釋性語言的效能差距,包括:
(1) 高效的位元組碼 位元組碼格式很簡單,很容易得到機器程式碼 位元組碼的執行效率就已經非常高了
(2)多執行緒。 C C++不支援多執行緒,但是Java完全支援多執行緒。體現在兩個方面,首先,Java環境本身就是多執行緒的,可以利用系統的空閒時間進行垃圾回收等;其次,Java提供了對多執行緒的語言級支援,提供多執行緒程式設計介面。
(3) 及時編譯 以及嵌入C程式碼 及時編譯是指在執行時把位元組碼編譯成機器碼;嵌入C程式碼效率自然是高的,但是開發複雜度增加 -
分散式
分散式的概念體現在資料分佈和操作分佈兩個方面。資料分佈指資料可以分散存放於網路上不同的主機上;操作分佈則是把計算分散到不同的主機上進行。
Java是面向網路的,可以容易的處理TCP、IP協議。對於操作分佈,Java的client/server模式可以把計算從服務端分佈到客戶端。 -
動態特性
“滯後聯編”也就是動態連結。每個類編譯後都分別對應著一個位元組碼檔案。一個位元組碼系統由若干位元組碼檔案組成,執行時,位元組碼檔案按程式執行的需要動態載入。因此,一個類修改後只需要重新編譯這一個類就可以了 -
健壯性和安全性
Java提供了一系列安全檢查機制。
(1)去掉了C++中的很多概念:
不支援由小的型別隱式轉化為大的型別,除非明確指出;比如,不能預設由long轉化為Int;
不支援指標型別;
陣列下標越界會檢查;
有完善的異常處理機制;
記憶體自動垃圾收集。
(2)編譯檢查。編譯時檢查表示式和引數型別的相容性;也會指出可能出現的異常
(3)執行檢查。 位元組碼進入直譯器時,會再次檢查位元組碼,防止正確的位元組碼在解釋執行前遭到改動; Java直譯器決定程式中類的記憶體佈局,其他人無法預知類的佈局;檔案訪問有限制;網路介面級可以設定網路訪問許可權。