1. 程式人生 > 其它 >Java基礎(1)-Java特性及優勢

Java基礎(1)-Java特性及優勢

Java是一門面向物件的程式語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念。Java語言作為面向物件程式語言的代表,極好地實現了面向物件理論,允許程式設計師以優雅的思維方式進行復雜的程式設計。

Java有哪些特性呢?

總結起來,Java具有簡單性、面向物件、分散式、編譯和解釋型、健壯性、安全性、跨平臺與可移植性、高效能、多執行緒、動態性等

1.簡單性

Java看起來設計得很像C++,但是為了使語言小和容易熟悉,Java把C++語言中許多可用的特徵去掉了。比如:

Java不支援go to語句,代之以提供break和continue語句以及異常處理;

Java剔除了C++的操作符過載overload和多繼承特徵,並且不使用主檔案,免去了預處理程式。

因為Java沒有結構,陣列和串都是物件,所以不需要指標。

Java能夠自動處理物件的引用和間接引用,實現自動的無用單元收集,使使用者不必為儲存管理問題煩惱,能更多的時間和精力花在研發上。

2.面向物件

Java是一個面向物件的語言。Java 語言提供類、介面和繼承等面向物件的特性,為了簡單起見,只支援類之間的單繼承,但支援介面之間的多繼承,並支援類與介面之間的實現機制(關鍵字為 implements)。

Java 語言全面支援動態繫結,而 C++語言只對虛擬函式使用動態繫結。總之,Java語言是一個純的面向物件程式設計語言。對程式設計師來說,這意味著要注意其中的資料和操縱資料的方法method,而不是嚴格地用過程來思考。在一個面向物件的系統中,類class是資料和操作資料的方法的集合。資料和方法一起描述物件object的狀態和行為。每一物件是其狀態和行為的封裝。類是按一定體系和層次安排的,使得子類可以從超類繼承行為。在這個類層次體系中有一個根類,它是具有一般行為的類,Java程式是用類來組織的。

Java還包括一個類的擴充套件集合,分別組成各種程式包Package,使用者可以在自己的程式中使用。例如,Java提供產生圖形使用者介面部件的類java.awt包,這裡awt是抽象視窗工具集(abstract windowing toolkit)的縮寫,處理輸入輸出的類java.io包和支援網路功能的類java.net包。

3.分散式

Java設計成支援在網路上應用,它是分散式語言。Java既支援各種層次的網路連線,又以Socket類支援可靠的流stream網路連線,所以使用者可以產生分散式的客戶機和伺服器。

網路變成軟體應用的分佈運載工具。Java程式只要編寫一次,就可到處執行。

4.編譯和解釋型

Java編譯程式生成位元組碼(byte-code),而不是通常的機器碼。Java位元組碼提供對體系結構中性的目標檔案格式,程式碼設計成可有效地傳送程式到多個平臺。Java程式可以在任何實現了Java解釋程式和裝有java虛擬機器的系統上執行。

在一個解釋性的環境中,程式開發的標準“連結”階段大大消失了。如果說Java還有一個連結階段,它只是把新類裝進環境的過程,它是增量式的、輕量級的過程。因此,Java支援快速原型和容易試驗,它將導致快速程式開發。這是一個與傳統的、耗時的“編譯、連結和測試”形成鮮明對比的精巧的開發過程。

5.健壯性

Java是一種健壯的語言,吸收了C/C++ 語言的優點,但去掉了其影響程式健壯性的部分(如:指標、記憶體的申請與釋放等)。Java程式不可能造成計算機崩潰。即使Java程式也可能有錯誤。

Java原來是用作編寫消費類家用電子產品軟體的語言,所以它是被設計成寫高可靠和穩健軟體的。Java消除了某些程式設計錯誤,使得用它寫可靠軟體相當容易。

Java 的強型別機制、異常處理、垃圾的自動收集等是 Java 程式健壯性的重要保證。對指標的丟棄是 Java 的明智選擇。另外Java 的安全檢查機制使得 Java 更具健壯性。

Java是一個強型別語言,它允許擴充套件編譯時檢查潛在型別不匹配問題的功能。Java要求顯式的方法宣告,它不支援C風格的隱式宣告。這些嚴格的要求保證編譯程式能捕捉呼叫錯誤,這就導致更可靠的程式。

可靠性方面最重要的增強之一是Java的儲存模型。Java不支援指標,它消除重寫儲存和訛誤資料的可能性。類似地,Java自動的“無用單元收集”預防儲存漏洩和其它有關動態儲存分配和解除分配的有害錯誤。Java解釋程式也執行許多執行時的檢查,諸如驗證所有陣列和串訪問是否在界限之內。

異常處理是Java中使得程式更穩健的另一個特徵。異常是某種類似於錯誤的異常條件出現的訊號。如果出現某種出乎意料之事,程式也不會崩潰,而是把該異常丟擲,再通過異常處理機制加以處理。使用try/catch/finally語句,程式設計師可以找到出錯的處理程式碼,這就簡化了出錯處理和恢復的任務。

6.安全性

Java的儲存分配模型是它防禦惡意程式碼的主要方法之一。Java沒有指標,所以程式設計師不能得到隱蔽起來的內幕和偽造指標去指向儲存器。更重要的是,Java編譯程式不處理儲存安排決策,所以程式設計師不能通過檢視宣告去猜測類的實際儲存安排。編譯的Java程式碼中的儲存引用在執行時由Java解釋程式決定實際儲存地址。

Java執行系統使用位元組碼驗證過程來保證裝載到網路上的程式碼不違背任何Java語言限制。這個安全機制部分包括類如何從網上裝載。例如,裝載的類是放在分開的名字空間而不是區域性類,預防惡意的小應用程式用它自己的版本來代替標準Java類。

7.跨平臺與可移植性

這是Java的核心優勢。Java在設計時就很注重移植和跨平臺性。比如:Java的int永遠都是32位。不像C++可能是16,32,可能是根據編譯器廠商規定的變化。這樣的話程式的移植就會非常麻煩。

Java使得語言宣告不依賴於實現的方面。例如,Java顯式說明每個基本資料型別的大小和它的運算行為(這些資料型別由Java語法描述)。

Java環境本身對新的硬體平臺和作業系統是可移植的。Java編譯程式也用Java編寫,而Java執行系統用ANSIC語言編寫。

8.高效能

Java是一種先編譯後解釋的語言,所以它不如全編譯性語言快。但是有些情況下效能是很要緊的,為了支援這些情況,Java設計者製作了“及時”編譯程式,它能在執行時把Java位元組碼翻譯成特定CPU中央處理器的機器程式碼,也就是實現全編譯了。

Java位元組碼格式設計時考慮到這些“及時”編譯程式的需要,所以生成機器程式碼的過程相當簡單,它能產生相當好的程式碼。

事實上,Java 的執行速度隨著 JIT(Just-In-Time)編譯器技術的發展越來越接近於 C++。

9.多執行緒

在 Java 語言中,執行緒是一種特殊的物件,它必須由 Thread 類或其子(孫)類來建立。通常有兩種方法來建立執行緒:其一,使用型構為 Thread(Runnable) 的構造子類將一個實現了 Runnable 介面的物件包裝成一個執行緒,其二,從 Thread 類派生出子類並重寫 run 方法,使用該子類建立的物件即為執行緒。值得注意的是 Thread 類已經實現了 Runnable 介面,因此,任何一個執行緒均有它的 run 方法,而 run 方法中包含了執行緒所要執行的程式碼。

執行緒的活動由一組方法來控制。Java 語言支援多個執行緒的同時執行,並提供多執行緒之間的同步機制(關鍵字為 synchronized),用關鍵詞synchronized,程式設計師可以說明某些方法在一個類中不能併發地執行。這些方法在監督程式控制之下,確保變數維持在一個一致的狀態。

10.動態性

Java 語言的設計目標之一是適應於動態變化的環境。Java 程式需要的類能夠動態地被載入到執行環境,也可以通過網路來載入所需要的類。這也有利於軟體的升級。另外,Java 中的類有一個執行時刻的表示,能進行執行時刻的型別檢查。