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中的類有一個運行時刻的表示,能進行運行時刻的類型檢查。