明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

Java學習之Java的運行環(huán)境

[摘要]Java 時下已經非常流行。全球每天有超過百萬的程序員在用Java進行著程序的開發(fā)。用Java編寫的程序也因為其硬件環(huán)境無關性而越來越受到人們的青睞。如果您希望成為Java世界的一員,那就看看這個系列的文章也許對您會有幫助。 無論哪種語言都需要有它特定的運行環(huán)境也就是平臺,Java 同樣...
Java 時下已經非常流行。全球每天有超過百萬的程序員在用Java進行著程序的開發(fā)。用Java編寫的程序也因為其硬件環(huán)境無關性而越來越受到人們的青睞。如果您希望成為Java世界的一員,那就看看這個系列的文章也許對您會有幫助。



無論哪種語言都需要有它特定的運行環(huán)境也就是平臺,Java 同樣不例外。您也許會問,Java程序不是有硬件環(huán)境無關性嗎?好吧,我希望這篇文章可以回答好這個問題。

幾乎所有的語言都是需要通過編譯或者解釋才可以被您的電腦執(zhí)行?墒荍ava有一點不同,它同時需要這兩個過程。其實,也正是因為這個原因才使Java這種語言具有了平臺無關性。當您寫好了一個Java程序的時候(當然這個時候您并不用真的會寫Java程序)。首先,通過一段翻譯程序將它編譯成一種叫做字節(jié)碼的中間代碼。然后再由java平臺的解釋器將它翻譯成為機器語言來執(zhí)行----平臺的核心叫做JVM(Java虛擬機)。Java的編譯過程也與其它的語言不同。例如像c++這樣的語言,在編譯的時候,是與機器的硬件平臺信息密不可分的。編譯程序通過查表將所有指令的操作數和操作碼等等轉換成內存的偏移量即程序運行時的內存分配方式,以保證程序運行。而Java卻是將指令轉換成為一種*.class的文件,這種文件不包含硬件的信息。需要執(zhí)行的時候只要經過裝了JVM的機器解釋,創(chuàng)立內存布局后再通過查表來確定一條指令所在的地址。這樣就有效的保證了Java的可移植性和安全性。那么Java平臺為什么會有這么好的特性呢?

通常一個程序運行的平臺是一個硬件或者軟件運行的環(huán)境。目前比較流行的是Windows 2000, Linux, Solaris, 和MacOS。Java的平臺不太一樣,它由兩個部分組成:一個是Java Virtual Machine即Java虛擬機,另一部分是Java Application Programming Interface (Java API) 即Java應用程序設計接口,這兩部份軟件就構成了Java運行的基本的環(huán)境。Java API 是一個大的已經做好的軟件集合,這個集合里有許多開發(fā)時所需要的控件,用來輔助開發(fā)。Java API和JVM整合在一起處于機器硬件之上。也就是說,Java平臺把一個Java應用程序從硬件系統(tǒng)分離開從而很好的保證了程序的獨立性。為了更好的適應開發(fā)的需要,Java的設計者們?yōu)槲覀兲峁┝巳NJava平臺:Java 2 Micro Edition (J2ME ), Java 2 Standard Edition (J2SE)和 Java 2 Enterprise Edition (J2EE). 每一個版本都提供了豐富的開發(fā)工具箱以適應不同的開發(fā)需要。

讓我們來具體看看Java平臺的核心JVM的具體結構。
為了讓編譯產生的字節(jié)碼可以更好的解釋與執(zhí)行,一共把JVM分成了主要的6塊:JVM解釋器,指令系統(tǒng),寄存器,棧,存儲區(qū),碎片回收區(qū)。

JVM解釋器就是這個虛擬機的處理字段碼的CPU。

JVM指令系統(tǒng)同硬件計算機很相似。一條指令分成操作碼和操作數兩部分組成。操作碼為8位二進制數,操作數可以根據需要而定。操作碼是為了說明一條指令的功能,所以JVM可以有多達256種不同的操作指令。

JVM有自己的虛擬寄存器,這樣就可以快速的和JVM的解釋器進行數據交換。為了功能的需要,JVM設置了常用的4個32位寄存器:pc(程序計數器),optop(操作數棧頂指針),frame(當前執(zhí)行環(huán)境指針),vars(指向當前執(zhí)行環(huán)境中第一個局部變量的指針)。

JVM棧是指令執(zhí)行的時候數據和信息存儲的場所和控制中心,它提供給JVM解釋器運算所需要的信息。

JVM存儲區(qū)就是為了把編譯過后的字節(jié)碼等信息存儲起來。

JVM碎片回收是指將那些使用過后的Java類的具體的實例從內存進行回收,這就使得開發(fā)人員免去了自己編程控制內存的麻煩和危險。隨著JVM的不斷升級其碎片回收的技術和算法也更加合理。比較經典的算法有引用計數、復制、標記-清除和標記-整理。在JVM1.4.1版以后產生了一種叫分代收集技術,簡單的來說就是利用對象在程序中生存的時間劃分成代,以這個為標準進行碎片回收。關于碎片回收將在以后的文章中專門講解。

最后,通過本文我希望能使大家對Java的運行平臺有一個比較清楚的了解。在接下來的文章《 Java學習之踏上旅途的第一步》里我將告訴大家如何安裝一個Java平臺以及如何開始我們的第一個小程序