人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

Java學(xué)習(xí)之Java的運(yùn)行環(huán)境

Java學(xué)習(xí)之Java的運(yùn)行環(huán)境

更新時(shí)間:2022-08-31 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

Java 時(shí)下已經(jīng)非常流行。全球每天有超過百萬的程序員在用Java進(jìn)行著程序的開發(fā)。用Java編寫的程序也因?yàn)槠溆布h(huán)境無關(guān)性而越來越受到人們的青睞。如果您希望成為Java世界的一員,那就看看這個(gè)系列的文章也許對您會(huì)有幫助。



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

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

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

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

JVM解釋器就是這個(gè)虛擬機(jī)的處理字段碼的CPU。

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

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

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

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

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

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

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 河南省| 霍州市| 舟曲县| 扬中市| 合山市| 沭阳县| 璧山县| 汤原县| 大冶市| 株洲市| 万载县| 竹溪县| 瓦房店市| 原平市| 磐安县| 繁峙县| 蓬溪县| 武宁县| 克山县| 永宁县| 巩义市| 玛多县| 洞口县| 泰和县| 雷州市| 敦化市| 洛扎县| 汝州市| 大理市| 西丰县| 剑河县| 红桥区| 诸暨市| 襄城县| 中山市| 清丰县| 太康县| 上饶县| 常宁市| 桐柏县| 新巴尔虎左旗|