Java語言是適用于分布式計算環(huán)境的面向?qū)ο缶幊陶Z言,它雖類似 C 和 C++,但比 C++簡單,忽略了許多為提高計算效率,初學(xué)者較難掌握的程序語言特性。
Java語言主要有以下特點:
1.強類型
Java 語言是一種強類型語言,強類型能約束程序員必須遵守更多的編程規(guī)定,也能讓編譯器檢測出程序中盡可能多的錯誤。
2.編譯和解釋
Java 語言是一種高級編程語言,用 Java 語言編寫的源程序在計算機上運行需經(jīng)過編譯和解釋執(zhí)行兩個嚴(yán)格區(qū)分的階段。Java 語言的編譯程序先將 Java 源程序翻譯成機器無關(guān)的字節(jié)碼(bytecode),不是通常的編譯程序?qū)⒃闯绦蚍g成計算機的機器代碼。運行時,Java 的運行系統(tǒng)和鏈接需要執(zhí)行的類,并作必要的優(yōu)化后,解釋執(zhí)行字節(jié)碼程序。
3.自動無用內(nèi)存回收功能
Java 語言具有自動無用內(nèi)存回收功能,程序可以按需使用內(nèi)存,但不需要對無用內(nèi)存顯式地撤銷分配。系統(tǒng)有一個垃圾收集器(garbage collector),自動收集程序不再使用的內(nèi)存。這樣,能避免顯式的撤銷分配所引起的安全問題。Java 語言不再含有任何不安全的語言成分。例如,沒有指針,數(shù)組元素都要檢查下標(biāo)是否越界。
4.面向?qū)ο?/b>
面向?qū)ο笫浅绦騿T編寫大型程序、有效控制程序復(fù)雜性的重要手段。Java語言在面向?qū)ο蠓矫妫?C++更“純”,它的所有數(shù)據(jù)類型,包括布爾類型、整形、字符型等,都有相應(yīng)的類,程序可完全基于對象編寫。
面向?qū)ο笳Z言主要有封裝性、繼承性和多態(tài)性三個特點。封裝就是將實現(xiàn)細(xì)節(jié)隱藏起來,只給出如何使用的信息。數(shù)據(jù)及數(shù)據(jù)上的操作用類封裝,對象是類的實例,外界使用對象中的數(shù)據(jù)及可用的操作受到一定的限制。繼承體現(xiàn)眾多的一種層次對象的特性,下一層的類可從上一層的類繼承定義,從上一層類派生的類的對象能繼承上一層對象的特性,同時可以改變和擴充一些特性,以適應(yīng)其自身的特點。多態(tài)性的意義主要體現(xiàn)在邏輯上相同的不同層次上的操作,使用相同的操作名,根據(jù)具體對象,能自動選擇對應(yīng)的操作。Java 語言很實用地實現(xiàn)了這三種特性。
5.與平臺無關(guān)
與平臺無關(guān)是對程序可移植性最直接最有效的支持。Java語言的設(shè)計者在設(shè)計時重點考慮了 Java 程序的可移植性,采用多種機制來**可移植性,其中最主要的是定義了一種虛擬機(virtual machine),以及虛擬機使用的 java字節(jié)碼。在任何平臺上,Java 源程序被 Java 編譯器編譯成虛擬機能夠識別的字節(jié)碼。這樣,只要有 Java 虛擬機的平臺,就能解釋執(zhí)行 java 字節(jié)碼程序,從而實現(xiàn) Java 與平臺無關(guān)。另外,Java 語言還采用基于國際標(biāo)準(zhǔn)的數(shù)據(jù)類
型,在任何平臺上,同上種數(shù)據(jù)類型是一致的。例如,用 int 標(biāo)識 32 位二進(jìn)制位(bit)整型數(shù)據(jù),那么無論在哪一臺計算機上,Java 的 int 數(shù)據(jù)都是 32 位整數(shù)。相反,C 語言會隨著硬軟件平臺的改變,用 int 標(biāo)識的整數(shù)位數(shù)也可能不全相同。
Java 語言提高可移植性的代價是降低程序的執(zhí)行效率。出于 java 語言也是一種解釋執(zhí)行的語言,Java 程序的執(zhí)行速度與 C 程序的執(zhí)行速度有較大的差別。不過,為了盡量彌補執(zhí)行效率低的缺陷,java 的字節(jié)碼在設(shè)計上非常接近現(xiàn)代計算機的機器碼,這有助于提高解釋執(zhí)行的速度。
6.安全性
Java 是在網(wǎng)絡(luò)環(huán)境中使用的編程語言,必須考慮安全性問題,主要有以下兩個方面:設(shè)計的安全防范:Java 語言沒有指針,避免程序因為指針使用不當(dāng),訪問不應(yīng)該訪問的內(nèi)存空間;提供數(shù)組元素上標(biāo)檢測機制,禁止程序越界訪問內(nèi)存;提供內(nèi)存自動回收機制,避免程序遺漏或重復(fù)釋放內(nèi)存。
運行安全檢查:為了防止字節(jié)碼程序可能被非法改動,解釋執(zhí)行前,先對字節(jié)碼程序作檢查,防止網(wǎng)絡(luò)“黑客”對字節(jié)碼程序已作了惡意改動,達(dá)到破壞系統(tǒng)的目的。最 后,瀏覽器限制下載的小應(yīng)用程序不允許訪問本地文件,避免小應(yīng)用程序破壞本地文件。
7.分布式計算
Java 語言支持客戶機/服務(wù)器計算模式。Java 程序能利用 URL 對象,能訪問網(wǎng)絡(luò)上的對象,如同訪問本地的文件一樣,實現(xiàn)數(shù)據(jù)分布。另外,Java 的客戶機/服務(wù)器模式也可以把計算從服務(wù)器分散到客戶機端,實現(xiàn)操作分布。
8.多線程
線程是比進(jìn)程更小的一種可并發(fā)執(zhí)行的單位,每個進(jìn)程都有自己獨立的內(nèi)存空間和其他資源,當(dāng)進(jìn)程切換時需要進(jìn)行數(shù)據(jù)和資源的保護(hù)與恢復(fù)。若干協(xié)同工作的線程可以共享內(nèi)存空間和資源,線程切換不需要數(shù)據(jù)的保護(hù)與恢復(fù)。
Java 的運行環(huán)境采用多線程實現(xiàn),可以利用系統(tǒng)的空閑時間執(zhí)行諸如內(nèi)存回收等操作;Java 語言提供語言級多線程支持,用 Java 語言能直接編寫多線程程序。