真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JAVA可移植性的示例分析

這篇文章主要介紹JAVA可移植性的示例分析,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

公司主營業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出余杭免費(fèi)做網(wǎng)站回饋大家。


1.JAVA作為一種編程語言:源代碼可移植性

作為一種編程語言,JAVA提供了一種最簡單同時也是人們最熟悉的可移植性--源代碼移植。這意味著任意一個JAVA程序,不論它運(yùn)行在何種CPU、操作系統(tǒng)或JAVA編譯器上,都將產(chǎn)生同樣的結(jié)果。這并不是一個新的概念。人們使用C、C++也可以產(chǎn)生同樣的效果。但是使用C或C++編程人們可以有太多的選擇,在許多細(xì)節(jié)上它都沒有嚴(yán)格定義,如:未初始化變量的值、對已釋放的內(nèi)存的存取、浮點(diǎn)運(yùn)算的尾數(shù)值等等。所以除非你一開始就嚴(yán)格按照系統(tǒng)無關(guān)的概念來進(jìn)行設(shè)計(jì),否則這種可移植性只能是一種理論上的設(shè)想而不能形成實(shí)踐。總之,盡管C和C++有嚴(yán)密的語法定義,它們的語意(symantics)定義還不是標(biāo)準(zhǔn)的。這種語意上的不統(tǒng)一使得同一段程序在不同的系統(tǒng)環(huán)境下會產(chǎn)生不同的結(jié)果。有時即使系統(tǒng)情況完全相同而僅僅由于編譯器的設(shè)置不同也會產(chǎn)生令人意想不到的結(jié)果。而JAVA就不同了。它定義了嚴(yán)密的語意結(jié)構(gòu),而使編譯器不承擔(dān)這方面的工作。另外,JAVA對程序的行為的定義也比C和C++嚴(yán)格,如:它提供了內(nèi)存自動回收功能(GarbageCollection),使程序不能訪問越界內(nèi)存;它對未初始化的變量提供確定值等等。它的這些特性能夠減小在不同平臺上運(yùn)行的JAVA程序之間的差異,也使得JAVA具有即使沒有JAVA虛擬機(jī)的存在的情況下比C和C++更好的平臺無關(guān)性。然而,這些特點(diǎn)也有它不利的一面。JAVA設(shè)想運(yùn)行于具有32位字節(jié)長度且每字節(jié)為8位的計(jì)算機(jī)上,這就使得那些8位字長的計(jì)算機(jī)和一些巨型機(jī)不能有效的運(yùn)行JAVA程序。在這樣的平臺上就只能運(yùn)行那些可移植的C和C++程序了。

2.JAVA作為一個虛擬機(jī):CPU可移植性

大多數(shù)編譯器產(chǎn)生的目標(biāo)代碼只能運(yùn)行在一種CPU上(如Intel的x86系列),即使那些能支持多種CPU的編譯器也不能同時產(chǎn)生適合多種CPU的目標(biāo)代碼。如果你需要在三種CPU(如x86、SPARC和MIPS)上運(yùn)行同一程序,就必須編譯三次。

但JAVA編譯器就不同了。JAVA編譯器產(chǎn)生的目標(biāo)代碼(J-Code)是針對一種并不存在的CPU--JAVA虛擬機(jī)(JAVAVirtualMachine),而不是某一實(shí)際的CPU。JAVA虛擬機(jī)能掩蓋不同CPU之間的差別,使J-Code能運(yùn)行于任何具有JAVA虛擬機(jī)的機(jī)器上。

虛擬機(jī)的概念并不是JAVA所特有的:加州大學(xué)幾年前就提出了PASCAL虛擬機(jī)的概念;廣泛用于Unix服務(wù)器的Perl腳本也是產(chǎn)生與機(jī)器無關(guān)的中間代碼用于執(zhí)行。但針對Internet應(yīng)用而設(shè)計(jì)的JAVA虛擬機(jī)的特別之處在于它能產(chǎn)生安全的不受病毒威脅的目標(biāo)代碼。正是由于Internet對安全特性的特別要求才使得JVM能夠迅速被人們接受。當(dāng)今主流的操作系統(tǒng)如OS/2、MacOS、Windows95/NT都已經(jīng)或很快提供對J-Code的支持。

作為一種虛擬的CPU,JAVA虛擬機(jī)對于源代碼(SourceCode)來說是獨(dú)立的。我們不僅可以用JAVA語言來生成J-Code,也可以用Ada95來生成。事實(shí)上,已經(jīng)有了針對若干種源代碼的J-Code編譯器,包括Basic、Lisp和Forth。源代碼一經(jīng)轉(zhuǎn)換成J-Code以后,JAVA虛擬機(jī)就能夠執(zhí)行而不區(qū)分它是由哪種源代碼生成的。這樣做的結(jié)果就是CPU可移植性。

將源程序編譯為J-Code的好處在于可運(yùn)行于各種機(jī)器上,而缺點(diǎn)是它不如本機(jī)代碼運(yùn)行的速度快。

3.JAVA作為一種虛擬的操作系統(tǒng)(OS)和圖形用戶界面(GUI):操作系統(tǒng)可移植性

即使經(jīng)過重新編譯,大多數(shù)的用C和C++編寫的Windows程序也不能在Unix或Macintosh系統(tǒng)上運(yùn)行。這是為什么呢?因?yàn)槌绦騿T在編寫Windows程序時使用了大量的WindowsAPI和中斷調(diào)用,而Windows程序?qū)ο到y(tǒng)功能的調(diào)用與Unix和Macintosh程序有很大的差別,所以除非將全套WindowsAPI移植到其它操作系統(tǒng)上,否則重編譯的程序仍不能運(yùn)行。

JAVA采用了提供一套與平臺無關(guān)的庫函數(shù)(包括AWT、UTIL、LANG等等)的方法來解決這個問題。就象JVM提供了一個虛擬的CPU一樣,JAVA庫函數(shù)提供了一個虛擬的GUI環(huán)境。JAVA程序僅對JAVA庫函數(shù)提出調(diào)用,而庫函數(shù)對操作系統(tǒng)功能的調(diào)用由各不同的虛擬機(jī)來完成。JAVA也在它的OS/GUI庫中使用了一種“罕見名稱符”(least-commom-denominator)來提供對某種特定操作系統(tǒng)的功能調(diào)用,即此功能只在特定環(huán)境下生效而在其它操作系統(tǒng)下則被忽略。這樣做的好處在于可以針對某操作系統(tǒng)生成擁有人們熟悉的界面的應(yīng)用程序而同時此程序又能在其它系統(tǒng)下運(yùn)行。缺點(diǎn)則是系統(tǒng)中的某些功能調(diào)用有很強(qiáng)的依賴性因而在JAVA的虛擬OS/API中難以實(shí)現(xiàn)。遇到這種情況,程序員就只能寫不可移植的程序了。

以上是“JAVA可移植性的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


本文名稱:JAVA可移植性的示例分析
本文URL:http://weahome.cn/article/jhdgid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部