成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳細介紹JAVA的可移植性

開發 后端
本文介紹的是java的可移植性,希望對你有幫助,一起來看。

軟件可移植性指與軟件從某一環境轉移到另一環境下的難易程度。為獲得較高的可移植性,在設計過程中常采用通用的程序設計語言和運行支撐環境。盡量不用與系統的底層相關性強的語言。下面介紹JAVA的可移植性。

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

作為一種編程語言,JAVA提供了一種最簡單同時也是人們最熟悉的可移植性–源代碼移植。這意味著任意一個JAVA程序,不論它運行在何種CPU、操作系統或JAVA編譯器上,都將產生同樣的結果。這并不是一個新的概念。人們使用C、C++也可以產生同樣的效果。

但是使用C或C++編程人們可以有太多的選擇,在許多細節上它都沒有嚴格定義,如:未初始化變量的值、對已釋放的內存的存取、浮點運算的尾數值等等。所以除非你一開始就嚴格按照系統無關的概念來進行設計,否則這種可移植性只能是一種理論上的設想而不能形成實踐。

總之,盡管C和C++有嚴密的語法定義,它們的語意(symantics)定義還不是標準的。這種語意上的不統一使得同一段程序在不同的系統環境下會產生不同的結果。有時即使系統情況完全相同而僅僅由于編譯器的設置不同也會產生令人意想不到的結果。而JAVA就不同了。它定義了嚴密的語意結構,而使編譯器不承擔這方面的工作。

另外,JAVA對程序的行為的定義也比C和C++嚴格,如:它提供了內存自動回收功能(GarbageCollection),使程序不能訪問越界內存;它對未初始化的變量提供確定值等等。它的這些特性能夠減小在不同平臺上運行的JAVA程序之間的差異,也使得JAVA具有即使沒有JAVA虛擬機的存在的情況下比C和C++更好的平臺無關性。

然而,這些特點也有它不利的一面。JAVA設想運行于具有32位字節長度且每字節為8位的計算機上,這就使得那些8位字長的計算機和一些巨型機不能有效的運行JAVA程序。在這樣的平臺上就只能運行那些可移植的C和C++程序了。

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

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

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

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

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

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

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

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

JAVA采用了提供一套與平臺無關的庫函數(包括AWT、UTIL、LANG等等)的方法來解決這個問題。就象JVM提供了一個虛擬的CPU一樣,JAVA庫函數提供了一個虛擬的GUI環境。JAVA程序僅對JAVA庫函數提出調用,而庫函數對操作系統功能的調用由各不同的虛擬機來完成。

JAVA也在它的OS/GUI庫中使用了一種“罕見名稱符”(least-commom-denominator)來提供對某種特定操作系統的功能調用,即此功能只在特定環境下生效而在其它操作系統下則被忽略。

這樣做的好處在于可以針對某操作系統生成擁有人們熟悉的界面的應用程序而同時此程序又能在其它系統下運行。缺點則是系統中的某些功能調用有很強的依賴性因而在JAVA的虛擬OS/API中難以實現。遇到這種情況,程序員就只能寫不可移植的程序了。

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

責任編輯:于鐵 來源: 互聯網
相關推薦

2011-07-22 17:41:02

java

2011-06-14 14:18:08

可移植性測試

2012-12-14 09:35:03

私有云應用程序可移植性OpenStack

2016-08-02 09:45:59

云計算

2013-05-28 10:33:06

虛擬化虛擬機移植

2013-10-31 10:22:21

開源云Linux容器Docker

2023-10-13 09:00:00

云計算架構

2012-09-07 09:51:07

云互操作性云可移植性云計算服務

2012-11-16 15:34:35

Cloud FoundVMware PaaS平臺即服務

2024-03-01 09:09:56

云計算架構應用

2009-07-17 13:42:36

Windows CE應WinCE可移植性

2009-08-17 10:17:01

C# Windows

2009-03-26 09:25:14

J2MEJCPJSR

2020-10-26 14:32:39

AI 數據模型

2013-12-09 09:24:46

2018-09-06 14:45:49

數據云轉型云計算

2013-04-02 09:25:20

PaaS 應用可移植性PaaS提供商平臺即服務

2021-11-19 11:53:42

云計算混合云Kubernetes

2024-12-18 14:13:07

2024-11-22 09:00:00

云原生云計算云應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩毛片免费看 | 国产精品91网站 | 精品国产乱码久久久久久影片 | 中文字幕国产视频 | 国产一级成人 | 欧美日韩久久久 | 精品欧美一区二区三区免费观看 | 国产偷久久一级精品60部 | www.欧美 | 涩涩视频在线观看 | 久久久久久国产精品免费免费 | 欧美黄色网 | 国产成人精品一区二 | 综合久久综合久久 | 久久av一区二区三区 | 亚洲成人网在线 | 视频一区二区中文字幕日韩 | 亚洲永久免费观看 | 国产一区免费 | 欧美日韩精品久久久免费观看 | 日本三级电影免费 | 色永久 | 国产精品久久久久国产a级 欧美日韩国产免费 | 欧美日韩在线播放 | 国产成人免费 | cao视频| 亚洲视频二区 | 天堂久久av| 人妖一区| yeyeav| 毛片一区二区三区 | 一区二区成人 | 成人午夜黄色 | av天天干 | 午夜精品久久久久久 | 国产精品伦一区二区三级视频 | 天天干夜夜 | 国产精品一区二区欧美 | 网站国产| 91国产在线播放 | 天堂资源最新在线 |