痞酷網_PIGOO

 找回密碼
 立即註冊
!!! [系統偵測到廣告阻擋軟體] !!!

如果您覺得痞酷網對您有些許幫助,或者您認同痞酷網的理想,

那麼希望您將痞酷網設定為白名單.

並請在上論壇的時候,動動您的手指,用行動支持我們.

謝謝!
查看: 6300|回復: 0

JVM(Java虛擬機)簡介

[複製鏈接]
發表於 2007-11-23 21:21:15 | 顯示全部樓層 |閱讀模式
Java的平台無關性是Java最重要的特性,而實現這一特性的基礎就是Java虛擬機。因此,瞭解Java虛擬機的結構和工作方式對進一步理解Java概念十分有益。

下面我們將從兩個方面介紹Java虛擬機。

什麼是Java虛擬機

從底層看,Java虛擬機就是以Java字元碼為指令組的軟CPU。附圖顯示了Java系統流程圖(內含Java虛擬機)。從附圖可以看出,在伺服器端首先由開發人員編寫Java程式並存為. Java文件;其次,Java編譯器將.java文件編譯成由字元碼組成的.class文件;最後,將.class文件存放在Web伺服器上。

到此,Java程式已作為Internet或Intranet資源存放在Web伺服器上隨時可讓客戶使用。

在客戶端,用戶使用WWW瀏覽器,通過Internet/Intranet將Web伺服器上的含有Java程式的主頁下載,再依賴本機Java虛擬機對.class文件解釋執行。

這樣,內容豐富的Java套用資源便由伺服器傳送到客戶端,並在用戶瀏覽器上顯示出來。

和普通的程式裝入器一樣,Java虛擬機執行程式時首先從網路或本機儲存於器中裝入.class文件。

由於網路的不安全因素較多,Hacker的惡意攻擊,網路病毒的侵襲等等,因此,Java虛擬機在執行.class文件前,首先要對其進行驗證。

如果沒有通過驗證,則不執行並指出錯誤訊息,相反,如果程式成功地經過驗證階段,Java虛擬機將執行翻譯器讀取字元碼,把字元碼轉換成操作系統硬體相關的指令,並在真正的CPU上執行。

字元碼是Java虛擬機的指令組(很像CPU上的微碼)。字元碼形式為<操作碼><...操作數>。

其中,操作碼就是指令碼,佔一個字元的長度,一個字元碼可以有多少操作數。目前,Java虛擬機規範中定度了220個字元碼指令。

由於字元碼指令數目種類繁多,相對於機器碼語義層次較高,因此,Java語言編譯成字元碼後文件尺寸較小便於網路傳輸。

為了執行Java字元碼,硬體廠商或操作系統廠商在自己的硬體和操作系統組合中實現Java虛擬機。Java虛擬機程式模組通常用C、C++或相應CPU支援的彙編語言編寫。

Java虛擬機用主機操作系統說明 完成記憶體、文件系統、顯示器、滑鼠、鍵盤、網路和其它設備驅動器以及執行緒處理等。

另外,各廠商開發自己系統的Java虛擬機需要獲得Java許可證。標準的Javasoft許可包括Java類庫和Java虛擬機。

每個拿到許可證的公司都會在自己的平台上成為Java的監護人,他們可以最佳化系統效能,但必須保證獨立於平台的純Java小程序能在他們的系統上執行。

從概念上講,Java虛擬機的基本執行單元是.class文件。

一個Java程式經過編譯後將形成多個.class文件,而每個文件都對應一個程序中定義的類。

因此,帶有多個.class文件的Java程式在執行時與傳統程序相比就有其特殊性。傳統的程式在執行前,系統要裝入含有全部程式碼的單一執行文件,而Java虛擬機在執行程式時則不同,它遵循"即用即裝入"的原則。

具體講,由於一個.class文件可以引用許多其它.class文件(在Java語言中,通過import,implement或extends語句實現),當執行的類需要其他類時,Java虛擬機即從網路或本機文件系統裝入.class文件。

將這個概念拓廣,不同類可以由不同開發者在不同伺服器上開發,Java虛擬機能夠動態地裝入和連線所需要的類文件。

這對今後軟體開發以及分佈式計算都將有深遠的意義。

例如:這種結構可以使在伺服器向客戶端機提供軟體新版本時,只更新相應的.class文件,真正實現零管理客戶端機以及無版本軟體等。

另外,Java虛擬機是使.class文件具有跨平台能力的核心結構,同一.class文件可以執行在實現Java虛擬機的不同電腦上。

虛擬機只需要知道.class文件應該是什麼結構和應當包含什麼,而不必管.class文件對應的原始程式碼是由何種語言編寫的。

由於各種語言的編譯器與Java虛擬機本身無關,因此只要不同語言的編譯器能從這些原始文件中產生Java字元碼,開發人員就可以使用各人所熟悉的Ada,C或C++語言編寫的執行在任何Java虛擬機上的應用程式,而不必一定要學習Java語言。實現以上所說的內容,將大大簡化現有軟體向平台無關軟體轉化的工作。
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

站長小叮嚀上一條 /1 下一條

禁閉室|手機版|連繫我們|痞酷網電子技術論壇

GMT+8, 2024-12-22 11:11 AM , Processed in 0.055683 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.