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