Java 主要特性
Java 有下面的一些主要特性。
面向物件
在 Java 中,所有的都是物件。正式因為 Java 基於物件模型,所以 Java 更加容易進行擴充套件。
Java語言提供類、介面和繼承等面向物件的特性,為了簡單起見,只支援類之間的單繼承,但支援介面之間的多繼承,並支援類與介面之間的實現機制(關鍵字為implements)。Java語言全面支援動態繫結,而C++語言只對虛擬函式使用動態繫結。總之,Java語言是一個純的面向物件程式設計語言。
平臺獨立性
與其他許多語言不同(包括 C/C++),當 Java 被編譯後,Java 程式並沒有被編譯成只針對某一特定平臺使用的的機器語言,而是編譯成了一個平臺獨立的 2 進位制程式碼(byte code)。這個二進位制程式碼通過 Web 進行分發並且通過 Java 虛擬機器(JVM)執行。所以你的程式與平臺具有無關性。
Java程式(字尾為java的檔案)在Java平臺上被編譯為體系結構中立的位元組碼格式(字尾為class的檔案),然後可以在實現這個Java平臺的任何系統中執行。這種途徑適合於異構的網路環境和軟體的分發。
簡單
Java 被設計Wie簡單易學。如果你能夠理解基本的 OOP(面向物件程式設計)概念,Java 對你來說應該不會很難。同時,Java語言的語法與C語言和C++語言很接近,使得大多數程式設計師很容易學習和使用。
另一方面,Java丟棄了C++中很少使用的、很難理解的、令人迷惑的那些特性,如操作符過載、多繼承、自動的強制型別轉換。特別地,Java語言不使用指標,而是引用。並提供了自動的廢料收集,使得程式設計師不必為記憶體管理而擔憂。
安全
通過啟用 Java 的安全特性,能夠開發出無病毒,無篡改的系統,授權也是基於公鑰加密的。
Java 通常被用在網路環境中,為此,Java提供了一個安全機制以防惡意程式碼的攻擊。除了Java語言具有的許多安全特性以外,Java對通過網路下載的類具有一個安全防範機制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、位元組程式碼檢查,並提供安全管理機制(類SecurityManager)讓Java應用設定安全哨兵。
體系結構中立
Java 的編譯器建立了一個體繫結構中立的物件格式,這樣的體系結構能夠讓 Java 編譯過的程式碼在多處理器環境下執行。當然這個環境需要安裝 Java 執行虛擬機器。
Java程式(字尾為java的檔案)在Java平臺上被編譯為體系結構中立的位元組碼格式(字尾為class的檔案),然後可以在實現這個Java平臺的任何系統中執行。這種途徑適合於異構的網路環境和軟體的分發。
便攜
正是基於平臺的獨立性和不實現特定的一些特效能夠讓 Java 更加具有便攜性。Java 的編譯器是使用 ANSI C 編寫的,這個編譯器具有明確的界限,同時還是 POSIX 的子集。
健壯性
Java的強型別機制、異常處理、垃圾的自動收集等是Java程式健壯性的重要保證。對指標的丟棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。同時,Java 通過努力編譯時和執行時的錯誤檢查來消除可能的錯誤。
多執行緒
通過 Java 的多執行緒特性,我們能夠允許程式可以同時進行多個任務。這個設計能夠讓程式設計師開發構建互動的程式,能夠讓程式和系統執行得更加順暢。
在Java語言中,執行緒是一種特殊的物件,它必須由Thread類或其子(孫)類來建立。通常有兩種方法來建立執行緒:其一,使用型構為Thread(Runnable)的構造子將一個實現了Runnable介面的物件包裝成一個執行緒,其二,從Thread類派生出子類並重寫run方法,使用該子類建立的物件即為執行緒。值得注意的是Thread類已經實現了Runnable介面,因此,任何一個執行緒均有它的run方法,而run方法中包含了執行緒所要執行的程式碼。執行緒的活動由一組方法來控制。Java語言支援多個執行緒的同時執行,並提供多執行緒之間的同步機制(關鍵字為synchronized)。
高效能
通過 JIT(Just-In-Time)編譯器,Java 具有無以倫比的高效能。
與那些解釋型的高階指令碼語言相比,Java的確是高效能的。事實上,Java的執行速度隨著JIT(Just-In-Time)編譯器技術的發展越來越接近於C++。
分散式
Java 被設計在分散式的網際網路環境下進行開發。
Java語言支援Internet應用的開發,在基本的Java應用程式設計介面中有一個網路應用程式設計介面(Java net),它提供了用於網路應用程式設計的類庫,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠端方法啟用)機制也是開發分散式應用的重要手段。
動態
Java 被設計為更加動態,因為 Java 相對 C/C++ 來說使用了更加動態的語言。Java 程式能夠攜帶更加廣泛的執行時(run-time)資訊。這些資訊能夠被用來在執行時對物件進行訪問。
Java語言的設計目標之一是適應於動態變化的環境。Java程式需要的類能夠動態地被載入到執行環境,也可以通過網路來載入所需要的類。這也有利於軟體的升級。另外,Java中的類有一個執行時刻的表示,能進行執行時刻的型別檢查。