導航:首頁 > 編程語言 > 保證java語言可移植性的特徵

保證java語言可移植性的特徵

發布時間:2024-04-26 23:00:50

⑴ 簡述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上具有廣泛的應用前景。同時它本身具有的防病毒的能力也使它在需要高可靠性的應用中佔有一席之地。

⑵ 保證Java語言可移植性的特徵是( )

A、面向對象
面向對象是語言特性, 與是否跨平台可移植一點兒關系也沒有.面向過程的語言也可以是可跨平台的可移植的, 如C. 對向對象的也可能是不可移植的, 如:delphi.

B、安全性
安全不安全與平台無關.
C、分布式計算
是否分布式與跨平台也無關.

D、可跨平台
都已經跨平台了, 可移植當然就更沒有問題了.

其實可移植是比可跨平台更低的一個水平.

答案是D.可跨平台.

⑶ JAVA的技術特點是什麼

JAVA的技術特點是什麼?

Java由美國SUN公司(被oracle公司收購)發明於1995年,是目前業界應用最廣泛、使用人數最多的語言,連續多年排名世界第一,可以稱之為「計算機語言界的英語」。

那麼Java這么高的評價它的特點有哪些,下面我來為題主解答:

一、跨平台/可移植性

這是Java的核心優勢。Java在設計時就很注重移植和跨平台性。比如:Java的int永遠都是32位。不像C++可能是16,32,可能是根據編譯器廠商規定的變化。這樣的話程序的移植就會非常麻煩。

Java首先利用文本編輯器編寫 Java源程序,源文件的後綴名為.java;再利用編譯器(javac)將源程序編譯成位元組碼文件,位元組碼文件的後綴名為.class; 最後利用虛擬機(解釋器,java)解釋執行。如下圖所示:

二、安全性

Java適合於網路/分布式環境,為了達到這個目標,在安全性方面投入了很大的精力,使Java可以很容易構建防病毒,防篡改的系統。比如Java取消了強大但又危險的指針。由於指針可進行移動運算,指針可隨便指向一個內存區域,而不管這個區域是否可用,這樣做是危險的。

三、面向對象

面向對象是一種程序設計技術,非常適合大型軟體的設計和開發。由於C++為了照顧大量C語言使用者而兼容了C,使得自身僅僅成為了帶類的C語言,多少影響了其面向對象的徹底性!Java則是完全的面向對象語言。

四、簡單性

Java就是C++語法的簡化版,我們也可以將Java稱之為「C++-」。跟我念「C加加減」,指的就是將C++的一些內容去掉;比如:頭文件,指針運算,結構,聯合,操作符重載,虛基類等等。同時,由於語法基於C語言,因此學習起來完全不費力。

五、高性能

Java最初發展階段,總是被人詬病「性能低」;客觀上,高級語言運行效率總是低於低級語言的,這個無法避免。Java語言本身發展中通過虛擬機的優化提升了幾十倍運行效率。比如,通過JIT(JUST IN TIME)即時編譯技術提高運行效率。 將一些「熱點」位元組碼編譯成本地機器碼,並將結果緩存起來,在需要的時候重新調用。這樣的話,使Java程序的執行效率大大提高,某些代碼甚至接近C++的效率。

因此,Java低性能的短腿,已經被完全解決了。業界發展上,我們也看到很多C++應用轉到Java開發,很多C++程序員轉型為Java程序員。

六、分布式

Java是為Internet的分布式環境設計的,因為它能夠處理TCP/IP協議。事實上,通過URL訪問一個網路資源和訪問本地文件是一樣簡單的。Java還支持遠程方法調用(RMI,Remote Method Invocation),使程序能夠通過網路調用方法。

七、多線程

多線程的使用可以帶來更好的交互響應和實時行為。 Java多線程的簡單性是Java成為主流伺服器端開發語言的主要原因之一。

八、健壯性

Java是一種健壯的語言,吸收了C/C++ 語言的優點,但去掉了其影響程序健壯性的部分(如:指針、內存的申請與釋放等)。Java程序不可能造成計算機崩潰。即使Java程序也可能有錯誤。如果出現某種出乎意料之事,程序也不會崩潰,而是把該異常拋出,再通過異常處理機制加以處理。

以上幾種特性你了解到啦嗎? 記得給個贊!

當然這些還沒完,Java除啦這些特性還有一些其他的特點我也來給你講一講!!

1.java的風格類似C++,從某種意義上講,java是C++的一個變種。但是java摒棄了C、C++中的容易引發錯誤和難以理解的指針,結構,以及內存管理等;

2.java是一種強類型的語言,比C/C++檢查還要嚴格,java區分大小寫字母;

3.java禁止非法訪問內存,因為java沒有指針,內存的申請和釋放;

4.對於不同的操作系統,會有不同的java虛擬機,這也就決定了java的可移植性;

5.java提供了自動垃圾回收機制gc,有效避免了C、C++的內存泄漏問題;

記得給個贊!

閱讀全文

與保證java語言可移植性的特徵相關的資料

熱點內容
vf文件後綴 瀏覽:629
迅雷支持win10的版本 瀏覽:657
linux刪除非空目錄函數 瀏覽:414
審查元素查找qq相冊密碼 瀏覽:131
藍魔i10s升級包下載 瀏覽:140
蘋果7plus橫屏 瀏覽:392
ps1游戲放ps3哪個文件夾 瀏覽:505
微信能不能無法打開文件 瀏覽:609
adbexe文件放哪裡 瀏覽:810
linux源碼查看 瀏覽:371
挑戰者350升級 瀏覽:381
numbers誤刪文件 瀏覽:923
資料庫右鍵刪除的表怎麼恢復 瀏覽:377
天空網解壓密碼 瀏覽:583
拉薩網站布局該怎麼設計 瀏覽:416
零售數據怎麼用圖來表示 瀏覽:628
英雄無敵7win1064位 瀏覽:951
寧波pm編程技能培訓哪裡便宜 瀏覽:779
國外疫情數據哪裡准確 瀏覽:924
桌面上的部分文件不見了 瀏覽:453

友情鏈接