史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式 & 網頁設計技術文件 (http://forum.slime.com.tw/f138.html)
-   -   JVM(Java虛擬機)簡介 (http://forum.slime.com.tw/thread155695.html)

psac 2005-08-20 10:38 PM

JVM(Java虛擬機)簡介
 
JVM(Java虛擬機)簡介

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語言。實現以上所說的內容,將大大簡化現有軟體向平台無關軟體轉化的工作。


所有時間均為台北時間。現在的時間是 06:10 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1