<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    中文JAVA技術(shù)平等自由協(xié)作創(chuàng)造

    Java專(zhuān)題文章博客和開(kāi)源

    常用鏈接

    統(tǒng)計(jì)

    最新評(píng)論

    JAVA可移植性廣泛應(yīng)用

      Java認(rèn)證:JAVA可移植性廣泛應(yīng)用。軟件可移植性指與軟件從某一環(huán)境轉(zhuǎn)移到另一環(huán)境下的難易程度。為獲得較高的可移植性,在設(shè)計(jì)過(guò)程中常采用通用的程序設(shè)計(jì)語(yǔ)言和運(yùn)行支撐環(huán)境。盡量不用與系統(tǒng)的底層相關(guān)性強(qiáng)的語(yǔ)言。下面介紹JAVA的可移植性。
      一、JAVA作為一種編程語(yǔ)言:源代碼可移植性
      作為一種編程語(yǔ)言,JAVA提供了一種最簡(jiǎn)單同時(shí)也是人們最熟悉的可移植性–源代碼移植。這意味著任意一個(gè)JAVA程序,不論它運(yùn)行在何種CPU、操作系統(tǒng)或JAVA編譯器上,都將產(chǎn)生同樣的結(jié)果。這并不是一個(gè)新的概念。人們使用C、C++也可以產(chǎn)生同樣的效果。
      但是使用C或C++編程人們可以有太多的選擇,在許多細(xì)節(jié)上它都沒(méi)有嚴(yán)格定義,如:未初始化變量的值、對(duì)已釋放的內(nèi)存的存取、浮點(diǎn)運(yùn)算的尾數(shù)值等等。所以除非你一開(kāi)始就嚴(yán)格按照系統(tǒng)無(wú)關(guān)的概念來(lái)進(jìn)行設(shè)計(jì),否則這種可移植性只能是一種理論上的設(shè)想而不能形成實(shí)踐。
      總之,盡管C和C++有嚴(yán)密的語(yǔ)法定義,它們的語(yǔ)意(symantics)定義還不是標(biāo)準(zhǔn)的。這種語(yǔ)意上的不統(tǒng)一使得同一段程序在不同的系統(tǒng)環(huán)境下會(huì)產(chǎn)生不同的結(jié)果。有時(shí)即使系統(tǒng)情況完全相同而僅僅由于編譯器的設(shè)置不同也會(huì)產(chǎn)生令人意想不到的結(jié)果。而JAVA就不同了。它定義了嚴(yán)密的語(yǔ)意結(jié)構(gòu),而使編譯器不承擔(dān)這方面的工作職稱(chēng)英語(yǔ)答案
      另外,JAVA對(duì)程序的行為的定義也比C和C++嚴(yán)格,如:它提供了內(nèi)存自動(dòng)回收功能(GarbageCollection),使程序不能訪問(wèn)越界內(nèi)存;它對(duì)未初始化的變量提供確定值等等。它的這些特性能夠減小在不同平臺(tái)上運(yùn)行的JAVA程序之間的差異,也使得JAVA具有即使沒(méi)有JAVA虛擬機(jī)的存在的情況下比C和C++更好的平臺(tái)無(wú)關(guān)性職稱(chēng)英語(yǔ)代考
      然而,這些特點(diǎn)也有它不利的一面。JAVA設(shè)想運(yùn)行于具有32位字節(jié)長(zhǎng)度且每字節(jié)為8位的計(jì)算機(jī)上,這就使得那些8位字長(zhǎng)的計(jì)算機(jī)和一些巨型機(jī)不能有效的運(yùn)行JAVA程序。在這樣的平臺(tái)上就只能運(yùn)行那些可移植的C和C++程序了。
      二、JAVA作為一個(gè)虛擬機(jī):CPU可移植性
      大多數(shù)編譯器產(chǎn)生的目標(biāo)代碼只能運(yùn)行在一種CPU上(如Intel的x86系列),即使那些能支持多種CPU的編譯器也不能同時(shí)產(chǎn)生適合多種CPU的目標(biāo)代碼。如果你需要在三種CPU(如x86、SPARC和MIPS)上運(yùn)行同一程序,就必須編譯三次。
      但JAVA編譯器就不同了。JAVA編譯器產(chǎn)生的目標(biāo)代碼(J-Code)是針對(duì)一種并不存在的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ī)器無(wú)關(guān)的中間代碼用于執(zhí)行。但針對(duì)Internet應(yīng)用而設(shè)計(jì)的JAVA虛擬機(jī)的特別之處在于它能產(chǎn)生安全的不受病毒威脅的目標(biāo)代碼。正是由于Internet對(duì)安全特性的特別要求才使得JVM能夠迅速被人們接受。當(dāng)今主流的操作系統(tǒng)如OS/2、MacOS、Windows95/NT都已經(jīng)或很快提供對(duì)J-Code的支持。
      作為一種虛擬的CPU,JAVA虛擬機(jī)對(duì)于源代碼(SourceCode)來(lái)說(shuō)是獨(dú)立的。我們不僅可以用JAVA語(yǔ)言來(lái)生成J-Code,也可以用Ada95來(lái)生成。事實(shí)上,已經(jīng)有了針對(duì)若干種源代碼的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)行的速度快

      三、JAVA作為一種虛擬的操作系統(tǒng)(OS)和圖形用戶(hù)界面(GUI):操作系統(tǒng)可移植性
      即使經(jīng)過(guò)重新編譯,大多數(shù)的用C和C++編寫(xiě)的Windows程序也不能在Unix或Macintosh系統(tǒng)上運(yùn)行。這是為什么呢?因?yàn)槌绦騿T在編寫(xiě)Windows程序時(shí)使用了大量的WindowsAPI和中斷調(diào)用,而Windows程序?qū)ο到y(tǒng)功能的調(diào)用與Unix和Macintosh程序有很大的差別,所以除非將全套WindowsAPI移植到其它操作系統(tǒng)上,否則重編譯的程序仍不能運(yùn)行職稱(chēng)英語(yǔ)改分
      JAVA采用了提供一套與平臺(tái)無(wú)關(guān)的庫(kù)函數(shù)(包括AWT、UTIL、LANG等等)的方法來(lái)解決這個(gè)問(wèn)題。就象JVM提供了一個(gè)虛擬的CPU一樣,JAVA庫(kù)函數(shù)提供了一個(gè)虛擬的GUI環(huán)境。JAVA程序僅對(duì)JAVA庫(kù)函數(shù)提出調(diào)用,而庫(kù)函數(shù)對(duì)操作系統(tǒng)功能的調(diào)用由各不同的虛擬機(jī)來(lái)完成托福雅思答案_代考_改分
      JAVA也在它的OS/GUI庫(kù)中使用了一種“罕見(jiàn)名稱(chēng)符”(least-commom-denominator)來(lái)提供對(duì)某種特定操作系統(tǒng)的功能調(diào)用,即此功能只在特定環(huán)境下生效而在其它操作系統(tǒng)下則被忽略。
      這樣做的好處在于可以針對(duì)某操作系統(tǒng)生成擁有人們熟悉的界面的應(yīng)用程序而同時(shí)此程序又能在其它系統(tǒng)下運(yùn)行。缺點(diǎn)則是系統(tǒng)中的某些功能調(diào)用有很強(qiáng)的依賴(lài)性因而在JAVA的虛擬OS/API中難以實(shí)現(xiàn)。遇到這種情況,程序員就只能寫(xiě)不可移植的程序了。
      總之,JAVA在可移植性方面的特點(diǎn)使它在Internet上具有廣泛的應(yīng)用前景。同時(shí)它本身具有的防病毒的能力也使它在需要高可靠性的應(yīng)用中占有一席之地。

    posted on 2013-02-28 16:17 好不容易 閱讀(132) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    PK10開(kāi)獎(jiǎng) PK10開(kāi)獎(jiǎng)
    主站蜘蛛池模板: 99精品视频在线观看免费播放| aa级毛片毛片免费观看久| 1000部啪啪未满十八勿入免费| 亚洲小说区图片区另类春色| 72pao国产成视频永久免费| 亚洲M码 欧洲S码SSS222| 国产成人亚洲精品蜜芽影院| 国产美女做a免费视频软件| 国产精品亚洲色婷婷99久久精品| 免费中文熟妇在线影片 | 亚洲视频中文字幕在线| 国产精品免费高清在线观看| 亚洲av日韩av无码| 8x8x华人永久免费视频| 亚洲图片校园春色| 青青青青青青久久久免费观看| 亚洲av无码日韩av无码网站冲| 大胆亚洲人体视频| 免费观看美女裸体网站| 亚洲av日韩专区在线观看| 热久久精品免费视频| 日韩免费码中文在线观看| 国产成人亚洲影院在线观看| 久久精品成人免费看| 亚洲六月丁香六月婷婷蜜芽| 中国国产高清免费av片| 亚洲av日韩综合一区在线观看| 50岁老女人的毛片免费观看| 亚洲日韩精品无码专区加勒比| 伊在人亚洲香蕉精品区麻豆| 中文字幕在线免费播放| 亚洲精品自拍视频| 国产无遮挡吃胸膜奶免费看| 久久不见久久见免费影院www日本| 亚洲成a人片在线观看中文动漫 | 亚洲国产熟亚洲女视频| 免费人妻av无码专区| 特级无码毛片免费视频尤物| 亚洲欧美成人一区二区三区| 中文字幕亚洲一区| 免费看黄视频网站|