首頁 > Java > Java基礎 > 主體

Java 是編譯型還是解釋型?

Guanhui
發布: 2020-06-06 14:50:54
原創
10568 人瀏覽過

Java 是編譯型還是解釋型?

Java 是編譯型還是解釋型?

Java既不屬於傳統的編譯型語言,也不屬於解釋型語言,Java是先編譯成「.class」字節碼文件,然後再利用JVM虛擬機進行解釋執行的,所以Java即可以說成編譯型,也可以說成解釋型。

Java特點

1、簡單性

Java看起來設計得很像C ,但為了使語言小和容易熟悉,設計者們把C 語言中許多可用的特徵去掉了,這些特徵是一般程式設計師很少使用的。例如,Java不支援go to語句,以提供break和continue語句以及異常處理。 Java也剔除了C 的運算子過載(overload)和多繼承特徵,且不使用主文件,免去了預處理程式。因為Java沒有結構,陣列和字串都是對象,所以不需要指針。 Java能夠自動處理物件的引用和間接引用,實現自動的無用單元收集,使用戶不必為儲存管理問題煩惱,能更多的時間和精力花在研發上。

2、物件導向

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解釋程式和運行系統(run-time system)的系統上運行。

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

5、穩健性

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語法描述)。

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中的類別是根據需要載入的,甚至有些是透過網路取得的。 

推薦教學:《Java教學

以上是Java 是編譯型還是解釋型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板