- 相關(guān)推薦
Java的特點(diǎn)學(xué)習(xí)教程
引導(dǎo)語(yǔ): Java是一個(gè)廣泛使用的網(wǎng)絡(luò)編程語(yǔ)言 ,以下是百分網(wǎng)小編分享給大家的Java的特點(diǎn)學(xué)習(xí)教程,希望大家喜歡!
Java的特點(diǎn)
首先 ,作為一種程序設(shè)計(jì)語(yǔ)言 ,它簡(jiǎn)單、面向?qū)ο、不依賴于機(jī)器的結(jié)構(gòu)、具有可移植性、魯棒性、安全性、并且提供了并發(fā)的機(jī)制、具有很高的性能。其次 ,它最大限度地利用了網(wǎng)絡(luò) ,Java的小應(yīng)用程序 (applet)可在網(wǎng)絡(luò)上傳輸而不受 CPU和環(huán)境的限制。另外 ,Java還提供了豐富的類庫(kù) ,使程序設(shè)計(jì)者可以很方便地建立自己的系統(tǒng)。
下面我們分別從這三個(gè)方面來討論 Java的特點(diǎn) ,然后通過把 Java與 C, C++相比進(jìn)一步指出它所具有的優(yōu)點(diǎn)。
一、Java語(yǔ)言
Java語(yǔ)言有下面一些特點(diǎn) :簡(jiǎn)單、面向?qū)ο、分布式、解釋?zhí)行、魯棒、安全、體系結(jié)構(gòu)中立、可移植、高性能、多線程以及動(dòng)態(tài)性。
1.簡(jiǎn)單性
Java語(yǔ)言是一種面向?qū)ο蟮恼Z(yǔ)言 ,它通過提供最基本的方法來完成指定的任務(wù) ,只需理解一些基本的概念 ,就可以用它編寫出適合于各種情況的應(yīng)用程序。 Java略去了運(yùn)算符重載、多重繼承等模糊的概念 ,并且通過實(shí)現(xiàn)自動(dòng)垃圾收集大大簡(jiǎn)化了程序設(shè)計(jì)者的內(nèi)存管理工作。另外 ,Java也適合于在小型機(jī)上運(yùn)行 ,它的基本解釋器及類的支持只有 40KB左右 ,加上標(biāo)準(zhǔn)類庫(kù)和線程的支持也只有 215KB左右。庫(kù)和線程的支持也只有 215KB左右。
2.面向?qū)ο?/p>
Java語(yǔ)言的設(shè)計(jì)集中于對(duì)象及其接口 ,它提供了簡(jiǎn)單的類機(jī)制以及動(dòng)態(tài)的接口模型。對(duì)象中封裝了它的狀態(tài)變量以及相應(yīng)的方法 ,實(shí)現(xiàn)了模塊化和信息隱藏 ;而類則提供了一類對(duì)象的原型 ,并且通過繼承機(jī)制 ,子類可以使用父類所提供的方法 ,實(shí)現(xiàn)了代碼的復(fù)用。
3.分布性
Java是面向網(wǎng)絡(luò)的語(yǔ)言。通過它提供的類庫(kù)可以處理 TCP/IP協(xié)議 ,用戶可以通過 URL地址在網(wǎng)絡(luò)上很方便地訪問其它對(duì)象。
4.魯棒性
Java在編譯和運(yùn)行程序時(shí) ,都要對(duì)可能出現(xiàn)的問題進(jìn)行檢查 ,以消除錯(cuò)誤的產(chǎn)生。它提供自動(dòng)垃圾收集來進(jìn)行內(nèi)存管理 ,防止程序員在管理內(nèi)存時(shí)容易產(chǎn)生的錯(cuò)誤。通過集成的面向?qū)ο蟮睦馓幚頇C(jī)制 ,在編譯時(shí),Java提示出可能出現(xiàn)但未被處理的例外 ,幫助程序員正確地進(jìn)行選擇以防止系統(tǒng)的崩潰。另外, Java在編譯時(shí)還可捕獲類型聲明中的許多常見錯(cuò)誤 ,防止動(dòng)態(tài)運(yùn)行時(shí)不匹配問題的出現(xiàn)。
5.安全性
用于網(wǎng)絡(luò)、分布環(huán)境下的 Java必須要防止病毒的入侵。 Java不支持指針,一切對(duì)內(nèi)存的訪問都必須通過對(duì)象的實(shí)例變量來實(shí)現(xiàn) ,這樣就防止程序員使用"特洛伊 "木馬等欺騙手段訪問對(duì)象的私有成員 ,同時(shí)也避免了指針操作中容易產(chǎn)生的錯(cuò)誤。
6.體系結(jié)構(gòu)中立
Java解釋器生成與體系結(jié)構(gòu)無(wú)關(guān)的字節(jié)碼指令 ,只要安裝了 Java運(yùn)行時(shí)系統(tǒng) ,Java程序就可在任意的處理器上運(yùn)行。這些字節(jié)碼指令對(duì)應(yīng)于 Java虛擬機(jī)中的表示 ,Java解釋器得到字節(jié)碼后 ,對(duì)它進(jìn)行轉(zhuǎn)換 ,使之能夠在不同的平臺(tái)運(yùn)行。
7.可移植性
與平臺(tái)無(wú)關(guān)的特性使 Java程序可以方便地被移植到網(wǎng)絡(luò)上的不同機(jī)器。 同時(shí) ,Java的類庫(kù)中也實(shí)現(xiàn)了與不同平臺(tái)的接口 ,使這些類庫(kù)可以移植。另外, Java編譯器是由 Java語(yǔ)言實(shí)現(xiàn)的 ,Java運(yùn)行時(shí)系統(tǒng)由標(biāo)準(zhǔn) C實(shí)現(xiàn) ,這使得Java 系統(tǒng)本身也具有可移植性。
8.解釋執(zhí)行
Java解釋器直接對(duì) Java字節(jié)碼進(jìn)行解釋執(zhí)行。字節(jié)碼本身攜帶了許多編譯時(shí)信息 ,使得連接過程更加簡(jiǎn)單。
9.高性能
和其它解釋執(zhí)行的語(yǔ)言如 BASIC、 TCL不同 ,Java字節(jié)碼的設(shè)計(jì)使之能很容易地直接轉(zhuǎn)換成對(duì)應(yīng)于特定CPU的機(jī)器碼 ,從而得到較高的性能。
10.多線程
多線程機(jī)制使應(yīng)用程序能夠并行執(zhí)行 ,而且同步機(jī)制保證了對(duì)共享數(shù)據(jù)的正確操作。通過使用 多線程 ,程序設(shè)計(jì)者可以分別用不同的線程完成特定的行為 ,而不需要采用全局的事件循環(huán)機(jī)制 ,這樣就很容易地實(shí)現(xiàn)網(wǎng)絡(luò)上的實(shí)時(shí)交互行為。
11.動(dòng)態(tài)性
Java的設(shè)計(jì)使它適合于一個(gè)不斷發(fā)展的環(huán)境。在類庫(kù)中可以自由地加入新的方法和實(shí)例變量而不會(huì)影響用戶程序的執(zhí)行。并且 Java通過接口來支持多重繼承 ,使之比嚴(yán)格的類繼承具有更靈活的方式和擴(kuò)展性。
二、 Java Applet
Java語(yǔ)言的特性使它可以最大限度地利用網(wǎng)絡(luò)。 Ap-plet是 Jav a的小應(yīng)用程序 ,它是動(dòng)態(tài)、安全、跨平臺(tái)的網(wǎng)絡(luò)應(yīng)用程序。 Java Applet嵌入 HTML語(yǔ)言 ,通過主頁(yè)發(fā)布到 Internet。網(wǎng)絡(luò)用戶訪問服務(wù)器的 Applet時(shí) ,這些Applet 從網(wǎng)絡(luò)上進(jìn)行傳輸 ,然后在支持 Java的瀏覽器中運(yùn)行。由于 Java語(yǔ)言的安全機(jī)制 ,用戶一旦載入 Applet,就可以放心地來生成多媒體的用戶界面或完成復(fù)雜的計(jì)算而不必?fù)?dān)心病毒的入侵。雖然 Applet可以和圖像、聲音、動(dòng)畫等一樣從網(wǎng)絡(luò)上下載 ,但它并不同于這些多媒體的文件格式 ,它可以接收用戶的輸入 ,動(dòng)態(tài)地進(jìn)行改變,而不僅僅是動(dòng)畫的顯示和聲音的播放。
三、豐富的類庫(kù)
Java提供了大量的類以滿足網(wǎng)絡(luò)化、多線程、面向?qū)ο笙到y(tǒng)的需要。
1.語(yǔ)言包提供的支持包括字符串處理、多線程處理、例外處理、數(shù)學(xué)函數(shù)處理等 ,可以用它簡(jiǎn)單地實(shí)現(xiàn)Java程序的運(yùn)行平臺(tái)。
2.實(shí)用程序包提供的支持包括哈希表、堆棧、可變數(shù)組、時(shí)間和日期等。
3.輸入輸出包用統(tǒng)一的 "流 "模型來實(shí)現(xiàn)所有格式的 I/O,包括文件系統(tǒng)、網(wǎng)絡(luò)、輸入;
4.低級(jí)網(wǎng)絡(luò)包用于實(shí)現(xiàn) Socket編程。
5.抽象圖形用戶接口包實(shí)現(xiàn)了不同平臺(tái)的計(jì)算機(jī)的圖形用戶接口部件 ,包括窗口、菜單、滾動(dòng)條、對(duì)話框等 ,使得 Java可以移植到不同平臺(tái)的機(jī)器。
6.網(wǎng)絡(luò)包支持 Internet的 TCP/IP協(xié)議 ,提供了與 In-ternet的接口。 它支持 URL連接 ,WWW的即時(shí)訪問 ,并且簡(jiǎn)化了用戶 /服務(wù)器模型的程序設(shè)計(jì)。
四、Java和C、C++
對(duì)于變量聲明、參數(shù)傳遞、操作符、流控制等 ,Java使用了和 C、 C++相同的傳統(tǒng) ,使得熟悉 C、 C++的程序員能很方便地進(jìn)行編程。同時(shí) ,Java為了實(shí)現(xiàn)其簡(jiǎn)單、魯棒、安全等特性 ,也摒棄了 C和 C++中許多不合理的內(nèi)容。
1.全局變量
Java程序中 ,不能在所有類之外定義全局變量 ,只能通過在一個(gè)類中定義公用、靜態(tài)的變量來實(shí)現(xiàn)一個(gè)全局變量。例如 :
Class GlobalVar{
public static global_var; 、
}
在類 GlobalVar中定義變量 global_var為 public stat-ic,使得其它類可以訪問和修改該變量。 Java對(duì)全局變量進(jìn)行了更好的封裝。而在 C和 C++中 ,依賴于不加封裝的全局變量常常造成系統(tǒng)的崩潰。
2.Goto
Java不支持 C、 C++中的 goto語(yǔ)句 ,而是通過例外處理語(yǔ)句 try, Catch, final等來代替 C、 C++中用 goto來處理遇到錯(cuò)誤時(shí)跳轉(zhuǎn)的情況 ,使程序更可讀 且更結(jié)構(gòu)化。
3.指針
指針是 C、 C++中最靈活 ,也是最容易產(chǎn)生錯(cuò)誤的數(shù)據(jù)類型。由指針?biāo)M(jìn)行的內(nèi)存地址操作常會(huì)造成不可預(yù)知的錯(cuò)誤 ,同時(shí)通過指針對(duì)某個(gè)內(nèi)存地址進(jìn)行顯式類型轉(zhuǎn)換后 ,可以訪問一個(gè) C++中的私有成員 ,從而破壞安全性 ,造成系統(tǒng)的崩潰。而 Java對(duì)指針進(jìn)行完全的控制 ,程序員不能直接進(jìn)行任何指針操作 ,例如把整數(shù)轉(zhuǎn)化為指針 ,或者通過指針釋放某一內(nèi)存地址等。同時(shí) ,數(shù)組作為類在Java 中實(shí)現(xiàn) ,良好地解決了數(shù)組訪問越界這一C、 C++中不作檢查的錯(cuò)誤。
4.內(nèi)存管理
在 C中 ,程序員通過庫(kù)函數(shù) malloc()和 free()來分配和釋放內(nèi)存 , C++中則通過運(yùn)算符 new和 delete來分配和釋放內(nèi)存。再次釋放已釋放的內(nèi)存塊或未被分配的內(nèi)存塊 ,會(huì)造成系統(tǒng)的崩潰 ;同樣 ,忘記釋放不再使用的內(nèi)存塊也會(huì)逐漸耗盡系統(tǒng)資源。而在 Java中 ,所有的數(shù)據(jù)結(jié)構(gòu)都是對(duì)象 ,通過運(yùn)算符new 為它們分配內(nèi)存堆。通過new得到對(duì)象的處理權(quán) ,而實(shí)際分配給對(duì)象的內(nèi)存可能隨程序運(yùn)行而改變 ,Java對(duì)此自動(dòng)地進(jìn)行管理并且進(jìn)行垃圾收集 ,有效防止了由于程序員的誤操作而導(dǎo)致的錯(cuò)誤 ,并且更好地利用了系統(tǒng)資源。
5.數(shù)據(jù)類型的支持
在 C、 C++中 ,對(duì)于不同的平臺(tái) ,編譯器對(duì)于簡(jiǎn)單數(shù)據(jù)類型如 in t,float 等分別分配不同長(zhǎng)度的字節(jié)數(shù) ,例如:int在 IBM PC中為 16位 ,在 VAX-11中為 32位 ,這導(dǎo)致了代碼的不可移植性 ,但在 Java中 ,對(duì)于這些數(shù)據(jù)類型總是分配固定長(zhǎng)度的位數(shù) ,如對(duì) int型 ,它總占 32位 ,這就保證了 Java的平臺(tái)無(wú)關(guān)性。
6.類型轉(zhuǎn)換
在 C、 C++中 ,可以通過指針進(jìn)行任意的類型轉(zhuǎn)換 ,常常帶來不安全性 , 而 Java中 ,運(yùn)行時(shí)系統(tǒng)對(duì)對(duì)象的處理要進(jìn)行類型相容性檢查 ,以防止不安全的轉(zhuǎn)換。
7.頭文件
C、 C++中用頭文件來聲明類的原型以及全局變量、庫(kù)函數(shù)等 ,在大的系統(tǒng)中 ,維護(hù)這些頭文件是很困難的。而 Java不支持頭文件 ,類成員的類型和訪問權(quán)限都封裝在一個(gè)類中 ,運(yùn)行時(shí)系統(tǒng)對(duì)訪問進(jìn)行控制 ,防止對(duì)私有成員的操作。同時(shí) ,Java中用 import語(yǔ)句來與其它類進(jìn)行通訊 ,以便使用它們的方法。
8.結(jié)構(gòu)和聯(lián)合
C、 C++中的結(jié)構(gòu)和聯(lián)合中所有成員均為公有 ,這就帶來了安全性問題。 Java中不包含結(jié)構(gòu)和聯(lián)合,所有的內(nèi)容都封裝在類中。
9.預(yù)處理
C、 C++中用宏定義來實(shí)現(xiàn)的代碼給程序的可讀性帶來了困難。在 Java 中 ,不支持宏 ,它通過關(guān)鍵字 final來聲明一個(gè)常量 ,以實(shí)現(xiàn)宏定義中廣泛使用的常量定義。
【Java的特點(diǎn)學(xué)習(xí)教程】相關(guān)文章:
Java數(shù)組的基礎(chǔ)學(xué)習(xí)教程08-12
Java數(shù)組的基本學(xué)習(xí)教程08-22
java教程之Java編程基礎(chǔ)09-12
java計(jì)算器綜合實(shí)例學(xué)習(xí)教程08-19
Java語(yǔ)言的特點(diǎn)07-16
java selenium基本教程09-27
Java程序規(guī)范教程09-03