java云虛擬主機(jī)(虛擬主機(jī) 云主機(jī))
本文目錄一覽:
什么是JAVA虛擬主機(jī)?
Java虛擬機(jī)
一、什么是Java虛擬機(jī)
Java虛擬機(jī)是一個(gè)想象中的機(jī)器,在實(shí)際的計(jì)算機(jī)上通過(guò)軟件模擬來(lái)實(shí)現(xiàn)。Java虛擬機(jī)有自己想象中的硬件,如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。
1.為什么要使用Java虛擬機(jī)
Java語(yǔ)言的一個(gè)非常重要的特點(diǎn)就是與平臺(tái)的無(wú)關(guān)性。而使用Java虛擬機(jī)是實(shí)現(xiàn)這一特點(diǎn)的關(guān)鍵。一般的高級(jí)語(yǔ)言如果要在不同的平臺(tái)上運(yùn)行,至少需要編譯成不同的目標(biāo)代碼。而引入Java語(yǔ)言虛擬機(jī)后,Java語(yǔ)言在不同平臺(tái)上運(yùn)行時(shí)不需要重新編譯。Java語(yǔ)言使用模式Java虛擬機(jī)屏蔽了與具體平臺(tái)相關(guān)的信息,使得Java語(yǔ)言編譯程序只需生成在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼),就可以在多種平臺(tái)上不加修改地運(yùn)行。Java虛擬機(jī)在執(zhí)行字節(jié)碼時(shí),把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令執(zhí)行。
2.誰(shuí)需要了解Java虛擬機(jī)
Java虛擬機(jī)是Java語(yǔ)言底層實(shí)現(xiàn)的基礎(chǔ),對(duì)Java語(yǔ)言感興趣的人都應(yīng)對(duì)Java虛擬機(jī)有個(gè)大概的了解。這有助于理解Java語(yǔ)言的一些性質(zhì),也有助于使用Java語(yǔ)言。對(duì)于要在特定平臺(tái)上實(shí)現(xiàn)Java虛擬機(jī)的軟件人員,Java語(yǔ)言的編譯器作者以及要用硬件芯片實(shí)現(xiàn)Java虛擬機(jī)的人來(lái)說(shuō),則必須深刻理解Java虛擬機(jī)的規(guī)范。另外,如果你想擴(kuò)展Java語(yǔ)言,或是把其它語(yǔ)言編譯成Java語(yǔ)言的字節(jié)碼,你也需要深入地了解Java虛擬機(jī)。
3.Java虛擬機(jī)支持的數(shù)據(jù)類型
Java虛擬機(jī)支持Java語(yǔ)言的基本數(shù)據(jù)類型如下:
byte://1字節(jié)有符號(hào)整數(shù)的補(bǔ)碼
short://2字節(jié)有符號(hào)整數(shù)的補(bǔ)碼
int://4字節(jié)有符號(hào)整數(shù)的補(bǔ)碼
long://8字節(jié)有符號(hào)整數(shù)的補(bǔ)碼
float://4字節(jié)IEEE754單精度浮點(diǎn)數(shù)
double://8字節(jié)IEEE754雙精度浮點(diǎn)數(shù)
char://2字節(jié)無(wú)符號(hào)Unicode字符
幾乎所有的Java類型檢查都是在編譯時(shí)完成的。上面列出的原始數(shù)據(jù)類型的數(shù)據(jù)在Java執(zhí)行時(shí)不需要用硬件標(biāo)記。操作這些原始數(shù)據(jù)類型數(shù)據(jù)的字節(jié)碼(指令)本身就已經(jīng)指出了操作數(shù)的數(shù)據(jù)類型,例如iadd、ladd、fadd和dadd指令都是把兩個(gè)數(shù)相加,其操作數(shù)類型別是int、long、float和double。虛擬機(jī)沒(méi)有給boolean(布爾)類型設(shè)置單獨(dú)的指令。boolean型的數(shù)據(jù)是由integer指令,包括integer返回來(lái)處理的。boolean型的數(shù)組則是用byte數(shù)組來(lái)處理的。虛擬機(jī)使用IEEE754格式的浮點(diǎn)數(shù)。不支持IEEE格式的較舊的計(jì)算機(jī),在運(yùn)行Java數(shù)值計(jì)算程序時(shí),可能會(huì)非常慢。
虛擬機(jī)支持的其它數(shù)據(jù)類型包括:
object//對(duì)一個(gè)Javaobject(對(duì)象)的4字節(jié)引用
returnAddress//4字節(jié),用于jsr/ret/jsr-w/ret-w指令
注:Java數(shù)組被當(dāng)作object處理。
虛擬機(jī)的規(guī)范對(duì)于object內(nèi)部的結(jié)構(gòu)沒(méi)有任何特殊的要求。在Sun公司的實(shí)現(xiàn)中,對(duì)object的引用是一個(gè)句柄,其中包含一對(duì)指針:一個(gè)指針指向該object的方法表,另一個(gè)指向該object的數(shù)據(jù)。用Java虛擬機(jī)的字節(jié)碼表示的程序應(yīng)該遵守類型規(guī)定。Java虛擬機(jī)的實(shí)現(xiàn)應(yīng)拒絕執(zhí)行違反了類型規(guī)定的字節(jié)碼程序。Java虛擬機(jī)由于字節(jié)碼定義的限制似乎只能運(yùn)行于32位地址空間的機(jī)器上。但是可以創(chuàng)建一個(gè)Java虛擬機(jī),它自動(dòng)地把字節(jié)碼轉(zhuǎn)換成64位的形式。從Java虛擬機(jī)支持的數(shù)據(jù)類型可以看出,Java對(duì)數(shù)據(jù)類型的內(nèi)部格式進(jìn)行了嚴(yán)格規(guī)定,這樣使得各種Java虛擬機(jī)的實(shí)現(xiàn)對(duì)數(shù)據(jù)的解釋是相同的,從而保證了Java的與平臺(tái)無(wú)關(guān)性和可
移植性。
二、Java虛擬機(jī)體系結(jié)構(gòu)
Java虛擬機(jī)由五個(gè)部分組成:一組指令集、一組寄存器、一個(gè)棧、一個(gè)無(wú)用單元收集堆(Garbage-collected-heap)、一個(gè)方法區(qū)域。這五部分是Java虛擬機(jī)的邏輯成份,不依賴任何實(shí)現(xiàn)技術(shù)或組織方式,但它們的功能必須在真實(shí)機(jī)器上以某種方式實(shí)現(xiàn)。
1.Java指令集
Java虛擬機(jī)支持大約248個(gè)字節(jié)碼。每個(gè)字節(jié)碼執(zhí)行一種基本的CPU運(yùn)算,例如,把一個(gè)整數(shù)加到寄存器,子程序轉(zhuǎn)移等。Java指令集相當(dāng)于Java程序的匯編語(yǔ)言。
Java指令集中的指令包含一個(gè)單字節(jié)的操作符,用于指定要執(zhí)行的操作,還有0個(gè)或多個(gè)操作數(shù),提供操作所需的參數(shù)或數(shù)據(jù)。許多指令沒(méi)有操作數(shù),僅由一個(gè)單字節(jié)的操作符構(gòu)成。
虛擬機(jī)的內(nèi)層循環(huán)的執(zhí)行過(guò)程如下:
do{
取一個(gè)操作符字節(jié);
根據(jù)操作符的值執(zhí)行一個(gè)動(dòng)作;
}while(程序未結(jié)束)
由于指令系統(tǒng)的簡(jiǎn)單性,使得虛擬機(jī)執(zhí)行的過(guò)程十分簡(jiǎn)單,從而有利于提高執(zhí)行的效率。指令中操作數(shù)的數(shù)量和大小是由操作符決定的。如果操作數(shù)比一個(gè)字節(jié)大,那么它存儲(chǔ)的順序是高位字節(jié)優(yōu)先。例如,一個(gè)16位的參數(shù)存放時(shí)占用兩個(gè)字節(jié),其值為:
第一個(gè)字節(jié)*256+第二個(gè)字節(jié)字節(jié)碼指令流一般只是字節(jié)對(duì)齊的。指令tableswitch和lookup是例外,在這兩條指令內(nèi)部要求強(qiáng)制的4字節(jié)邊界對(duì)齊。
2.寄存器
Java虛擬機(jī)的寄存器用于保存機(jī)器的運(yùn)行狀態(tài),與微處理器中的某些專用寄存器類似。
Java虛擬機(jī)的寄存器有四種:
pc:Java程序計(jì)數(shù)器。
optop:指向操作數(shù)棧頂端的指針。
frame:指向當(dāng)前執(zhí)行方法的執(zhí)行環(huán)境的指針。
vars:指向當(dāng)前執(zhí)行方法的局部變量區(qū)第一個(gè)變量的指針。
Java虛擬機(jī)
Java虛擬機(jī)是棧式的,它不定義或使用寄存器來(lái)傳遞或接受參數(shù),其目的是為了保證指令集的簡(jiǎn)潔性和實(shí)現(xiàn)時(shí)的高效性(特別是對(duì)于寄存器數(shù)目不多的處理器)。
所有寄存器都是32位的。
3.棧
Java虛擬機(jī)的棧有三個(gè)區(qū)域:局部變量區(qū)、運(yùn)行環(huán)境區(qū)、操作數(shù)區(qū)。
(1)局部變量區(qū) 每個(gè)Java方法使用一個(gè)固定大小的局部變量集。它們按照與vars寄存器的字偏移量來(lái)尋址。局部變量都是32位的。長(zhǎng)整數(shù)和雙精度浮點(diǎn)數(shù)占據(jù)了兩個(gè)局部變量的空間,卻按照第一個(gè)局部變量的索引來(lái)尋址。(例如,一個(gè)具有索引n的局部變量,如果是一個(gè)雙精度浮點(diǎn)數(shù),那么它實(shí)際占據(jù)了索引n和n+1所代表的存儲(chǔ)空間。)虛擬機(jī)規(guī)范并不要求在局部變量中的64位的值是64位對(duì)齊的。虛擬機(jī)提供了把局部變量中的值裝載到操作數(shù)棧的指令,也提供了把操作數(shù)棧中的值寫(xiě)入局部變量的指令。
(2)運(yùn)行環(huán)境區(qū) 在運(yùn)行環(huán)境中包含的信息用于動(dòng)態(tài)鏈接,正常的方法返回以及異常傳播。
·動(dòng)態(tài)鏈接
運(yùn)行環(huán)境包括對(duì)指向當(dāng)前類和當(dāng)前方法的解釋器符號(hào)表的指針,用于支持方法代碼的動(dòng)態(tài)鏈接。方法的class文件代碼在引用要調(diào)用的方法和要訪問(wèn)的變量時(shí)使用符號(hào)。動(dòng)態(tài)鏈接把符號(hào)形式的方法調(diào)用翻譯成實(shí)際方法調(diào)用,裝載必要的類以解釋還沒(méi)有定義的符號(hào),并把變量訪問(wèn)翻譯成與這些變量運(yùn)行時(shí)的存儲(chǔ)結(jié)構(gòu)相應(yīng)的偏移地址。動(dòng)態(tài)鏈接方法和變量使得方法中使用的其它類的變化不會(huì)影響到本程序的代碼。
·正常的方法返回
如果當(dāng)前方法正常地結(jié)束了,在執(zhí)行了一條具有正確類型的返回指令時(shí),調(diào)用的方法會(huì)得到一個(gè)返回值。執(zhí)行環(huán)境在%
什么是Java虛擬主機(jī)
說(shuō)的是jvm吧?一個(gè)軟件,模擬了一臺(tái)虛擬機(jī)器,java程序跑在這個(gè)虛擬機(jī)上面
如何選擇java虛擬主機(jī)
但選擇虛擬主機(jī)是一件讓人頭痛的事情,在這里分享一下我購(gòu)買(mǎi)虛擬主機(jī)的一些經(jīng)驗(yàn),希望可以讓計(jì)劃購(gòu)買(mǎi)java虛擬主機(jī)的朋友少走一些彎路。 在購(gòu)買(mǎi)虛擬主機(jī)之前其實(shí)我心中有三個(gè)方案: 第一個(gè)方案:購(gòu)買(mǎi)服務(wù)器或者租用服務(wù)器 第二個(gè)方案:普通PC+花生殼 第三個(gè)方案:購(gòu)買(mǎi)虛擬主機(jī) 毫無(wú)疑問(wèn),第一個(gè)方案對(duì)于個(gè)人建站來(lái)說(shuō),成本較高,可以待網(wǎng)站有一定的流量和知名度,或者有一定的收入后再作考慮;如果已有PC,則第二方案是一個(gè)不錯(cuò)的既可以節(jié)約成本又可以解決問(wèn)題的方案,但由于本人只有一臺(tái)手提,平常工作要用,如果只是為了部署這一個(gè)網(wǎng)站而花幾K去買(mǎi)PC,感覺(jué)成本也高了,所以放棄了;最后決定采用第三個(gè)方案,也就是購(gòu)買(mǎi)虛擬主機(jī)。但問(wèn)題隨之而來(lái),到底要怎么選擇虛擬主機(jī)呢?哪一個(gè)虛擬主機(jī)供應(yīng)商有優(yōu)勢(shì)呢?是否支持網(wǎng)站用到的框架和技術(shù)的呢?性能又如何呢?售后服務(wù)呢?本人在選擇虛擬主機(jī)的標(biāo)準(zhǔn)是下面的幾點(diǎn): 第一:完全兼容支持我網(wǎng)站用到的框架和技術(shù)。這一點(diǎn)很重要,因?yàn)橹霸信笥奄?gòu)買(mǎi)過(guò)jsp虛擬主機(jī),結(jié)果把網(wǎng)站上傳后根本不起作用,原來(lái)網(wǎng)站用到的一些技術(shù)虛擬主機(jī)不支持。 第二:可以免費(fèi)試用一段時(shí)間。需要確保網(wǎng)站上傳后能正常訪問(wèn),也就是說(shuō)需要驗(yàn)證一下第一點(diǎn)。 第三:性價(jià)比高。就是滿足基本要求后,價(jià)格不能高。 第四:管理功能齊全,操作友好方便。包括tomcat可單獨(dú)管理、數(shù)據(jù)庫(kù)可單獨(dú)管理,其他如壓縮/解壓等。 第五:穩(wěn)定。不要三五天就出現(xiàn)訪問(wèn)不了,或者數(shù)據(jù)丟失,又或者文件丟失等現(xiàn)象。 第六:售后服務(wù)好。這一點(diǎn)也是非常重要的,售后服務(wù)質(zhì)量可以反映一間公司的生命力,可以決定其能走多遠(yuǎn)。 本人的選擇過(guò)程如下: 首先,通過(guò)搜索引擎搜索虛擬主機(jī)供應(yīng)商進(jìn)行對(duì)比,以便篩選。選好供應(yīng)商后找一些虛擬主機(jī)評(píng)測(cè)網(wǎng)瀏覽一下選中的虛擬主機(jī)的評(píng)價(jià),雖然評(píng)價(jià)不一定是真的,但在你毫不知情的情況下還是有一定的作用的,至于該信多少,則需要運(yùn)用你自己的智慧去分析和判斷。 然后對(duì)比一下各項(xiàng)指標(biāo),例如操作系統(tǒng)、web空間大小、月流量大小、可綁定域名數(shù)量、是否能自助重啟tomcat等,當(dāng)然還有價(jià)格。另外還有一點(diǎn)很重要的就是要查看服務(wù)提供商經(jīng)營(yíng)了多長(zhǎng)時(shí)間了,年份越多則說(shuō)明實(shí)力越強(qiáng),技術(shù)越成熟,經(jīng)得起考驗(yàn)。 接著下來(lái)是看其是否提供免費(fèi)試用,因?yàn)樘峁┟赓M(fèi)試用可以驗(yàn)證其是否支持開(kāi)發(fā)網(wǎng)站時(shí)用的框架和技術(shù),如果買(mǎi)下了卻不支持開(kāi)發(fā)的網(wǎng)站,那所有的付出就是竹籃打水一場(chǎng)空,還令到自己十分不開(kāi)心,賠了夫人又折兵。 經(jīng)過(guò)一番的捉對(duì)廝殺后,本人最后選擇了西部數(shù)碼,因?yàn)樵谔峁┟赓M(fèi)試用的虛擬主機(jī)服務(wù)商中,它是最優(yōu)的。選定目標(biāo)后,本人開(kāi)始發(fā)起進(jìn)攻,當(dāng)然是馬上開(kāi)始試用。因?yàn)樗挥衅咛斓脑囉闷?,結(jié)果我試用一次后,又進(jìn)行了第二次和第三次的試用,本人是按我設(shè)定的標(biāo)準(zhǔn)進(jìn)行試用的,而且特別留意的是它的服務(wù)。經(jīng)過(guò)幾次的試用,我覺(jué)它的除了滿足我想要的功能外,服務(wù)特別好,讓我覺(jué)得很貼心,除提供在線服務(wù),還有免費(fèi)咨詢電話。有一次我程序上傳后出問(wèn)題了,查詢不到數(shù)據(jù),我以為我數(shù)據(jù)庫(kù)的數(shù)據(jù)被莫名其妙刪除了,于是有點(diǎn)煩躁,和售后服務(wù)人員說(shuō)話時(shí)語(yǔ)氣有點(diǎn)重,但他們還是十分耐心地幫我查因,結(jié)果后來(lái)我查了一下表,原來(lái)數(shù)據(jù)在,我承認(rèn)了錯(cuò)誤,他們也很有禮貌說(shuō)沒(méi)關(guān)系。于是我終于下定決心付款購(gòu)買(mǎi)了虛擬主機(jī)。

"Java虛擬主機(jī)怎樣使用? "
雙擊,如果是.class文件那你在命令提示符里輸入cd javac 后面是虛擬主機(jī)的名字,然后回車鍵,就會(huì)出現(xiàn)注冊(cè)號(hào)。要不你吧郵箱給我,我給你傳過(guò)去一個(gè)雙擊就能打開(kāi)的,很方便。
什么是java虛擬主機(jī)
就是支持
java語(yǔ)言的虛擬主機(jī),
記憶中很多虛擬主機(jī)都是不支持這個(gè)語(yǔ)言的
java云虛擬主機(jī)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于虛擬主機(jī) 云主機(jī)、java云虛擬主機(jī)的信息別忘了在云尚網(wǎng)絡(luò)進(jìn)行查找喔。
發(fā)表評(píng)論

暫時(shí)沒(méi)有評(píng)論,來(lái)?yè)屔嘲l(fā)吧~