激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

JAVA的可移植性

時(shí)間:2024-10-23 19:59:32 JAVA認證 我要投稿
  • 相關(guān)推薦

JAVA的可移植性

  JAVA在可移植性方面的特點(diǎn)使它在Internet上具有廣泛的應用前景。同時(shí)它本身具有的防病毒的能力也使它在需要高可靠性的應用中占有一席之地。

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

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

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

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

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

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

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

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

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

  即使經(jīng)過(guò)重新編譯,大多數的用C和C++編寫(xiě)的Windows程序也不能在Unix或Macintosh系統上運行。這是為什么呢?因為程序員在編寫(xiě)Windows程序時(shí)使用了大量的WindowsAPI和中斷調用,而Windows程序對系統功能的調用與Unix和Macintosh程序有很大的差別,所以除非將全套WindowsAPI移植到其它操作系統上,否則重編譯的程序仍不能運行。

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

【JAVA的可移植性】相關(guān)文章:

Java與Java web的區別08-10

java習題及答案10-25

學(xué)習java技巧09-23

關(guān)于Java的import10-27

JAVA認證簡(jiǎn)介10-02

學(xué)習Java的技巧07-30

Java入門(mén)基礎知識:Java IO(輸入/輸出)09-23

JAVA認證開(kāi)源技術(shù):關(guān)于Java的對象equals方法06-26

sun認證java程序員須知Java日志框架09-11

JAVA認證基礎知識:Java獲取當前的系統時(shí)間06-08

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频