Java是一個強類型語言,它允許擴展編譯時檢查潛在類型不匹配問題的功能。Java要求顯式的方法聲明,它不支持C風格的隱式聲明。這些嚴格的要求保證編譯程式能捕捉調用錯誤,這就導致更可靠的程式。
可靠性方面最重要的增強之一是Java的存儲模型。Java不支持指針,它消除重寫存儲和訛誤數據的可能性。類似地,Java自動的“無用單元收集”預防存儲漏泄和其它有關動態存儲分配和解除分配的有害錯誤。Java解釋程式也執行許多運行時的檢查,諸如驗證所有數組和串訪問是否在界限之內。
異常處理是Java中使得程式更穩健的另一個特征。異常是某種類似於錯誤的異常條件出現的信號。使用try/catch/finally語句,程式員可以找到出錯的處理代碼,這就簡化了出錯處理和恢復的任務。
6.安全性
Java的存儲分配模型是它防禦惡意代碼的主要方法之一。Java沒有指針,所以程式員不能得到隱蔽起來的內幕和偽造指針去指向存儲器。更重要的是,Java編譯程式不處理存儲安排決策,所以程式員不能通過查看聲明去猜測類的實際存儲安排。編譯的Java代碼中的存儲引用在運行時由Java解釋程式決定實際存儲地址。
Java運行系統使用位元組碼驗證過程來保證裝載到網路上的代碼不違背任何Java語言限制。這個安全機制部分包括類如何從網上裝載。例如,裝載的類是放在分開的名字空間而不是局部類,預防惡意的小應用程式用它自己的版本來代替標準Java類。
7.可移植性
Java使得語言聲明不依賴於實現的方面。例如,Java顯式說明每個基本數據類型的大小和它的運算行為(這些數據類型由Java語法描述)。
Java環境本身對新的硬體平臺和操作系統是可移植的。Java編譯程式也用Java編寫,而Java運行系統用ANSIC語言編寫。
8.高性能
Java是一種先編譯後解釋的語言,所以它不如全編譯性語言快。但是有些情況下性能是很要緊的,為了支持這些情況,Java設計者製作了“及時”編譯程式,它能在運行時把Java位元組碼翻譯成特定CPU(中央處理器)的機器代碼,也就是實現全編譯了。
Java位元組碼格式設計時考慮到這些“及時”編譯程式的需要,所以生成機器代碼的過程相當簡單,它能產生相當好的代碼。
9.多線索性
Java是多線索語言,它提供支持多線索的執行(也稱為輕便過程),能處理不同任務,使具有線索的程式設計很容易。Java的lang包提供一個Thread類,它支持開始線索、運行線索、停止線索和檢查線索狀態的方法。
Java的線索支持也包括一組同步原語。這些原語是基於監督程式和條件變數風範,由C.A.R.Haore開發的廣泛使用的同步化方案。用關鍵詞synchronized,程式員可以說明某些方法在一個類中不能併發地運行。這些方法在監督程式控制之下,確保變數維持在一個一致的狀態。
10.動態性
Java語言設計成適應於變化的環境,它是一個動態的語言。例如,Java中的類是根據需要載入的,甚至有些是通過網路獲取的。