
Java語(yǔ)言有什么特點(diǎn)
Java是一種分布式的語(yǔ)言,Sun公司對(duì)Java的定義充分地展示了
Java的如下特點(diǎn)。歡迎閱讀
1.簡(jiǎn)單
Java是一種簡(jiǎn)單的語(yǔ)言。Java是在C、C++的基礎(chǔ)上開(kāi)發(fā)的,繼
承了C和C++的許多特性,但同時(shí)也取消其他許多編程語(yǔ)言中繁瑣的、
難以理解的、不安全的內(nèi)容,如指針、多重繼承等。JDK還提供了豐
富的基礎(chǔ)類(lèi)庫(kù),具有C或C++編程的程序員都會(huì)很熟悉,無(wú)需經(jīng)過(guò)長(zhǎng)
時(shí)間訓(xùn)練即可掌握它。
2.面向?qū)ο?/p>
Java是一種純面向?qū)ο蟮恼Z(yǔ)言。Java程序的設(shè)計(jì)思路不同于基于
過(guò)程的程序設(shè)計(jì)思路,而是采用面向?qū)ο蟮乃枷搿C嫦驅(qū)ο蟪绦蛟O(shè)計(jì),
具備更好的模擬現(xiàn)實(shí)世界環(huán)境的能力和可重用性,將待解決的現(xiàn)實(shí)問(wèn)
題概念化成一組分離的程序?qū)ο螅@些對(duì)象彼此之間可以進(jìn)行交互。
一個(gè)對(duì)象包含了對(duì)應(yīng)實(shí)體應(yīng)有的信息和訪(fǎng)問(wèn)、改變這些信息的方法。
通過(guò)這種設(shè)計(jì)方式,使所設(shè)計(jì)出來(lái)的程序更易于改進(jìn)、擴(kuò)展、維護(hù)和
重用。Java語(yǔ)言提供類(lèi)、接口和繼承等原語(yǔ)。為了簡(jiǎn)單起見(jiàn),Java只
支持類(lèi)之間的單繼承,但支持接口之間的多繼承,并支持類(lèi)與接口間
的實(shí)現(xiàn)機(jī)制,關(guān)鍵字為implements。Java語(yǔ)言全面支持動(dòng)態(tài)綁定,
而C++語(yǔ)言只對(duì)虛函數(shù)使用動(dòng)態(tài)綁定。
3.分布式
Java是一種分布式的語(yǔ)言。傳統(tǒng)的基于C/S(客戶(hù)端/服務(wù)器)架構(gòu)
的程序,均采用客戶(hù)端向服務(wù)器提出服務(wù)請(qǐng)求,服務(wù)器再根據(jù)要求執(zhí)
行適當(dāng)?shù)某绦虿⒔Y(jié)果返回,所以服務(wù)器負(fù)荷較重。Java采用Java虛
擬機(jī)架構(gòu),可將許多工作直接交由終端處理,數(shù)據(jù)因此也可以分布式
處理。此外,Java類(lèi)庫(kù)的運(yùn)用,大大減輕了網(wǎng)絡(luò)傳輸?shù)呢?fù)荷;Java類(lèi)庫(kù)
包含了支持HTTP和FTP等基于TCP/IP協(xié)議的子庫(kù),Java應(yīng)用程序
可憑借URL地址打開(kāi)并訪(fǎng)問(wèn)網(wǎng)絡(luò)上的對(duì)象,其訪(fǎng)問(wèn)方式與訪(fǎng)問(wèn)本地文
件系統(tǒng)幾乎完全相同。網(wǎng)絡(luò)環(huán)境是Java大顯身手和進(jìn)一步發(fā)展的地方。
4.高效解釋執(zhí)行
Java是高效解釋執(zhí)行的語(yǔ)言。高級(jí)語(yǔ)言程序必須轉(zhuǎn)換為機(jī)器語(yǔ)言
程序才能執(zhí)行,但不同的計(jì)算機(jī)系統(tǒng)所使用的機(jī)器語(yǔ)言不同。Java為
了實(shí)現(xiàn)“一次編譯,隨處運(yùn)行”的目標(biāo),Java的源程序在編譯時(shí),并
不直接編譯成特定的機(jī)器語(yǔ)言程序,而是編譯成與系統(tǒng)無(wú)關(guān)的“字節(jié)
碼(Bytecodes)”,由Java虛擬機(jī)(JavaVirtualMachine,JVM)來(lái)
執(zhí)行,如圖1-3所示。JVM使得Java程序可以“一次編譯,隨處運(yùn)
行”。任何系統(tǒng)只有安裝了Java虛擬機(jī)后,才可以執(zhí)行Java程序。
JVM能直接在任何機(jī)器上執(zhí)行,為字節(jié)碼提供運(yùn)行環(huán)境。當(dāng)JVM
解釋執(zhí)行Java程序時(shí),Java實(shí)時(shí)編譯器(Just-In-Time,JIT)會(huì)將字節(jié)
碼譯成目標(biāo)平臺(tái)對(duì)應(yīng)的機(jī)器語(yǔ)言的指令代碼。
早先的許多嘗試解決跨平臺(tái)的方案對(duì)性能要求都很高。其他解釋
執(zhí)行的語(yǔ)言系統(tǒng),如BASIC、TCL、PERL都有無(wú)法克服的性能缺陷。
然而,Java卻可以在非常低檔的CPU上順暢運(yùn)行,這是因?yàn)镴ava字
節(jié)碼是經(jīng)過(guò)精心設(shè)計(jì)的,能夠直接使用JIT編譯技術(shù)將字節(jié)碼轉(zhuǎn)換成高
性能的本機(jī)代碼。事實(shí)上,Java的運(yùn)行速度隨著JIT編譯器技術(shù)的發(fā)展
已接近于C++。因而“高效且跨平臺(tái)”對(duì)Java來(lái)說(shuō)已不再矛盾。
5.健壯
Java是健壯的語(yǔ)言。為了更好地理解Java的健壯性,先討論一下
在傳統(tǒng)編程環(huán)境下程序設(shè)計(jì)失敗的主要原因:內(nèi)存管理錯(cuò)誤和誤操作
引起的異常或運(yùn)行時(shí)異常。
在傳統(tǒng)的編程環(huán)境下,內(nèi)存管理是一項(xiàng)困難、乏味的工作。例如,
在C或C++中,必須手工分配、釋放所有的動(dòng)態(tài)內(nèi)存。如果忘記釋放
原來(lái)分配的內(nèi)存,或是釋放了其他程序正在使用的內(nèi)存時(shí),就會(huì)出錯(cuò)。
在傳統(tǒng)的編程環(huán)境下,異常情況可能經(jīng)常由“被零除”、“Null指針
操作”、“文件未找到”等原因引起,必須用既繁瑣又難理解的一大
堆指令來(lái)進(jìn)行管理。
對(duì)此,Java通過(guò)自行管理內(nèi)存分配和釋放,從根本上消除了有關(guān)
內(nèi)存的問(wèn)題。Java提供垃圾收集器,可自動(dòng)收集閑置對(duì)象占用的內(nèi)存。
通過(guò)提供面向?qū)ο蟮漠惓L幚頇C(jī)制來(lái)解決異常處理的問(wèn)題。通過(guò)類(lèi)型
檢查、Null指針檢測(cè)、數(shù)組邊界檢測(cè)等方法,在開(kāi)發(fā)早期發(fā)現(xiàn)程序錯(cuò)
誤。
6.安全
Java是安全的網(wǎng)絡(luò)編程語(yǔ)言。Java常被用于網(wǎng)絡(luò)環(huán)境中,為此,
Java提供了一系列的安全機(jī)制以防惡意代碼攻擊,確保系統(tǒng)安全。
Java的安全機(jī)制分為多級(jí),包括Java語(yǔ)言本身的安全性設(shè)計(jì)以及嚴(yán)格
的編譯檢查、運(yùn)行檢查和網(wǎng)絡(luò)接口級(jí)的安全檢查。
Java語(yǔ)言是強(qiáng)類(lèi)型語(yǔ)言,而且每種類(lèi)型都要求嚴(yán)格定義。首先,
每個(gè)變量、表達(dá)式都有類(lèi)型。其次,所有的數(shù)值傳遞,不管是直接的、
還是通過(guò)方法調(diào)用經(jīng)由參數(shù)傳遞,都要進(jìn)行類(lèi)型相容性檢查。有些語(yǔ)
言沒(méi)有自動(dòng)進(jìn)行數(shù)據(jù)類(lèi)型相容性檢查或?qū)_突的類(lèi)型進(jìn)行轉(zhuǎn)換的機(jī)
制;Java編譯器對(duì)所有的表達(dá)式和參數(shù)都要進(jìn)行類(lèi)型相容性的檢查以確
保類(lèi)型是兼容的。任何類(lèi)型的不匹配都是錯(cuò)誤的,在編譯完成之前,
錯(cuò)誤必須全部被糾正。此外,Java摒棄指針類(lèi)型和數(shù)據(jù)類(lèi)型的隱式轉(zhuǎn)
換,從而對(duì)內(nèi)存訪(fǎng)問(wèn)進(jìn)行了嚴(yán)格的限制。在編譯期間,Java編譯器并
不分配內(nèi)存,而是推遲到運(yùn)行時(shí)由解釋器決定,這樣編程人員就無(wú)法
通過(guò)指針來(lái)非法訪(fǎng)問(wèn)內(nèi)存。在運(yùn)行期間,Java的運(yùn)行環(huán)境提供了四級(jí)
安全保障機(jī)制:字節(jié)碼校驗(yàn)器、類(lèi)裝載器、運(yùn)行時(shí)內(nèi)存布局和文件的
訪(fǎng)問(wèn)限制。在網(wǎng)絡(luò)接口級(jí),用戶(hù)可按自己的需要來(lái)設(shè)置網(wǎng)絡(luò)訪(fǎng)問(wèn)權(quán)限。
另外,Java的未來(lái)版本將采用公開(kāi)密鑰法以及其他加密技術(shù),來(lái)
核實(shí)從網(wǎng)絡(luò)上傳輸過(guò)來(lái)的代碼的源主機(jī)及該代碼的完整性。
7.結(jié)構(gòu)中立
Java是結(jié)構(gòu)中立的語(yǔ)言。Java的設(shè)計(jì)目標(biāo)是要支持網(wǎng)絡(luò)應(yīng)用程序。
一般而言,網(wǎng)絡(luò)是由許多不同的系統(tǒng)構(gòu)成,包括各種CPU與結(jié)構(gòu)。為
了讓Java應(yīng)用程序能夠在網(wǎng)絡(luò)上任何地方執(zhí)行,其編譯器會(huì)產(chǎn)生一種
具備結(jié)構(gòu)中立性的對(duì)象文件格式即Java字節(jié)碼文件。Java字節(jié)碼可在
任何安裝了Java虛擬機(jī)的平臺(tái)上運(yùn)行。
8.可移植
Java開(kāi)發(fā)的程序是可移植的。結(jié)構(gòu)中立是確保程序可移植的必要
條件,此外還需很多其他條件的配合。Java在可移植性方面做了許多
工作。Java語(yǔ)言規(guī)范中也沒(méi)有任何“同具體實(shí)現(xiàn)相關(guān)”的內(nèi)容,解決
了所有可能會(huì)影響到Java可移植性方面的問(wèn)題。如在Windows3.1中
整數(shù)(Integer)為16位,在Windows95中整數(shù)為32位,在DEC
Alpha中整數(shù)為64位,在Intel486中為32位,不同的操作系統(tǒng)和
CPU對(duì)數(shù)據(jù)類(lèi)型及長(zhǎng)度都作了不同的定義,給程序的可移植性帶來(lái)了
一定的難度。Java通過(guò)定義獨(dú)立于平臺(tái)的基本數(shù)據(jù)類(lèi)型及其運(yùn)算,使
Java數(shù)據(jù)得以在任何硬件平臺(tái)上保持一致。事實(shí)上,幾乎目前使用的
所有CPU都能支持以上數(shù)據(jù)類(lèi)型,都支持8~64位整數(shù)格式的補(bǔ)碼運(yùn)
算和單/雙精度浮點(diǎn)運(yùn)算。Java語(yǔ)言的基本數(shù)據(jù)類(lèi)型及其表示方式如表
1-1所示。
9.高效率
Java是高效率的語(yǔ)言。每一次的版本更新,Java在性能上均做出
了改進(jìn)。在歷經(jīng)數(shù)個(gè)版本變更后,Java號(hào)稱(chēng)可以與C/C++擁有同樣甚
至更好的運(yùn)行性能。如果解釋器速度不慢,Java可以在運(yùn)行時(shí)直接將
目標(biāo)代碼翻譯成機(jī)器指令,來(lái)用JVM一秒鐘內(nèi)可調(diào)用300000個(gè)過(guò)
程,與C/C++不相上下。
10.多線(xiàn)程
Java是支持多線(xiàn)程的語(yǔ)言。多線(xiàn)程是一種應(yīng)用程序設(shè)計(jì)方法。線(xiàn)
程是一大進(jìn)程里分出來(lái)的,小的、獨(dú)立的進(jìn)程,使得在一個(gè)程序里可
同時(shí)執(zhí)行多個(gè)小任務(wù)。多線(xiàn)程帶來(lái)的好處是具有更好的交互性能和實(shí)
時(shí)控制性能。但采用傳統(tǒng)的程序設(shè)計(jì)語(yǔ)言(如:C/C++)實(shí)現(xiàn)多線(xiàn)程程
序并非易事。Java實(shí)現(xiàn)了多線(xiàn)程技術(shù),提供了簡(jiǎn)便的實(shí)現(xiàn)多線(xiàn)程的方
法,并擁有一組高復(fù)雜性的同步機(jī)制。
11.動(dòng)態(tài)
Java語(yǔ)言具有動(dòng)態(tài)特性。Java動(dòng)態(tài)特性是其面向?qū)ο笤O(shè)計(jì)方法的
擴(kuò)展,允許程序動(dòng)態(tài)地裝入運(yùn)行過(guò)程中所需的類(lèi),這是C++進(jìn)行面向
對(duì)象程序設(shè)計(jì)所無(wú)法實(shí)現(xiàn)的。C++程序設(shè)計(jì)過(guò)程中,每當(dāng)在類(lèi)中增加
一個(gè)實(shí)例變量或一種成員函數(shù)后,引用該類(lèi)的所有子類(lèi)都必須重新編
譯,否則將導(dǎo)致程序崩潰。Java采取如下措施來(lái)解決此類(lèi)問(wèn)題。
(1)Java編譯器不是將對(duì)實(shí)例變量和成員函數(shù)的引用編譯為數(shù)值引
用,而是將符號(hào)引用信息在字節(jié)碼中保存后傳遞給解釋器,再由解釋
器在完成動(dòng)態(tài)連接類(lèi)后,將符號(hào)引用信息轉(zhuǎn)換為數(shù)據(jù)偏移量。存儲(chǔ)器
生成的對(duì)象不在編譯過(guò)程中決定,而是延遲到運(yùn)行時(shí)由解釋器確定。
這樣,對(duì)類(lèi)中變量和方法進(jìn)行更新時(shí)就不至于影響現(xiàn)存的代碼。解釋
執(zhí)行字節(jié)碼時(shí),這種符號(hào)信息的查找和轉(zhuǎn)換過(guò)程僅在一個(gè)新的名字出
現(xiàn)時(shí)才進(jìn)行一次,隨后代碼便可以全速執(zhí)行。
(2)在運(yùn)行時(shí)確定引用的好處是可以使用已被更新的類(lèi),而不必?fù)?dān)
心會(huì)影響原有的代碼。如果程序連接了網(wǎng)絡(luò)中另一系統(tǒng)的某一類(lèi),該
類(lèi)的所有者也可以自由地對(duì)該類(lèi)進(jìn)行更新,而不會(huì)使任何引用該類(lèi)的
程序崩潰。
(3)Java還簡(jiǎn)化了使用一個(gè)升級(jí)的或全新的協(xié)議的方法。如果系統(tǒng)
運(yùn)行Java程序時(shí)遇到了不知怎樣處理的程序,沒(méi)關(guān)系,Java能自動(dòng)
下載你所需要的功能程序。
Java是一種比C/C++更具動(dòng)態(tài)特性的語(yǔ)言。在設(shè)計(jì)上強(qiáng)調(diào)為運(yùn)行
中的運(yùn)算環(huán)境提供支持。Java是在運(yùn)行時(shí)為模塊與模塊之間建立連接,
并能夠更直接地運(yùn)用面向?qū)ο笤O(shè)計(jì)體系。程序庫(kù)可以自由地增加新方
法和實(shí)例變量,而不會(huì)對(duì)它們的客戶(hù)產(chǎn)生任何影響。
本文發(fā)布于:2023-03-16 04:06:58,感謝您對(duì)本站的認(rèn)可!
本文鏈接:http://www.newhan.cn/zhishi/a/167891081830592.html
版權(quán)聲明:本站內(nèi)容均來(lái)自互聯(lián)網(wǎng),僅供演示用,請(qǐng)勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除。
本文word下載地址:java語(yǔ)言.doc
本文 PDF 下載地址:java語(yǔ)言.pdf
| 留言與評(píng)論(共有 0 條評(píng)論) |