雖然催生Java的源動力是可移植性和安全性,但是在其最終成型的過程中其他因素也起了重要作用,下面是Java開發(fā)小組總結(jié)的Java的關(guān)鍵特性(設(shè)計目標):
(1)簡單(Simple)——易學好用,繼承了C/C++的語法和許多C++的面向?qū)ο筇卣鳌Hサ袅薈++中的一些復雜困難的東西(如頭文件、預處理、結(jié)構(gòu)、聯(lián)合、多重繼承、操作符重載、[模板]等),使語言更加精簡。
(2)安全(Secure)——為了適應分布式網(wǎng)絡(luò)環(huán)境,采用基于策略(policy)的沙箱(sandbox)模型,在語言層次上實現(xiàn)了安全性。具有如下三個方面的安全保證:語言特性(包括檢查數(shù)組邊界、限制類型轉(zhuǎn)換、取消指針變量等)、資源訪問控制(包括本地文件系統(tǒng)訪問和連接訪問網(wǎng)絡(luò)等)和代碼數(shù)字簽名(通過數(shù)字簽名確認源代碼源以及代碼是否完整)。
(3)可移植(Portable)——定長的整數(shù)型類型,如int始終為32位,而C/C++中的int在Win16、Win32和Win64平臺上分別為16位、32位和64位。固定的多字節(jié)整數(shù)二進制格式,采用統(tǒng)一的高位字節(jié)在前的方案(Intel CPU中的多字節(jié)整數(shù)的低位字節(jié)在前)。統(tǒng)一的用戶界面(AWT/Swing [/SWT])。
(4)面向?qū)ο螅∣bject Oriented)——由于沒有設(shè)計C++時兼容C的負擔,從零開始設(shè)計的Java具有更純潔的OOP特性。但是為了高性能,仍然保留了基本數(shù)據(jù)類型的非對象性。在OOP方面與C++的區(qū)別主要有單一類繼承、接口、反射等。
(5)健壯(Robust)——異構(gòu)網(wǎng)絡(luò)環(huán)境要求程序可靠運行。采用的措施有:避免內(nèi)存錯誤(取消指針變量、提供內(nèi)存管理——自動分配和釋放內(nèi)存[垃圾內(nèi)存自動回收])、強制異常處理等,可對潛在的問題進行早期和動態(tài)的檢查。
(6)多線程(Multithreaded)——交互式網(wǎng)絡(luò)化的多任務(wù)程序(如Web服務(wù)器)及多核CPU都要求多線程。Java提供了語言級的多線程支持,JVM也具有成熟的線程同步解決方案。
(7)體系結(jié)構(gòu)中立(Architecture Neutral)——通過JVM和字節(jié)碼,Java實現(xiàn)了體系結(jié)構(gòu)中立(與計算機硬件和操作系統(tǒng)無關(guān))。跨平臺是Java最重要的特征和最大的優(yōu)點,“一次編寫、到處運行”(Write Once, Run Anywhere,WORA)是Java的口號。正是跨平臺的特點,使得Java語言特別適合于網(wǎng)絡(luò)編程。
(8)解釋型(Interpreted)——與Fortran、Pascal、C/C++等編譯型高級語言不同,Java是一種(編譯性)解釋語言:Java語言的源程序(*.java),先通過Java編譯器編譯成特殊的字節(jié)碼(*.class),然后由目標機上JVM將字節(jié)碼解釋(翻譯成本機CPU指令代碼)執(zhí)行。解釋型是JVM的需要,也是跨平臺的基礎(chǔ)。
(9)高性能(High Performance)——與追求速度的編譯型語言相比,解釋型語言在本質(zhì)上是低性能的,這也是Java語言跨平臺的代價。為了克服Java程序運行慢的缺點,可用JIT(Just-In-Time,及時)編譯器,在程序的第一次運行時將(部分)字節(jié)碼先轉(zhuǎn)換成本機代碼,以提高Java程序的運行速度。
(10)分布式(Distributed)或理解網(wǎng)絡(luò)(Network-Savvy)——Java是為因特網(wǎng)的分布式環(huán)境設(shè)計的,所以它支持TCP/IP協(xié)議、URL資源訪問和RMI(Remote Method Invocation,遠程方法調(diào)用)。
(11)動態(tài)(Dynamic)——Java程序帶有大量運行時的類型信息,用于在運行時的驗證和解決對象的訪問問題。這使得在安全有效的方式下動態(tài)連接代碼成為可能。程序員可從因特網(wǎng)上下載代碼運行(瀏覽器),可全面控制對象的行為,如在特定的系統(tǒng)要求下,在運行時分析對象(如GUI構(gòu)建器、智能調(diào)試器、可插式組件、對象數(shù)據(jù)庫等)。
Java語言主要優(yōu)勢是跨平臺和安全(及類庫豐富),主要缺點是運行速度慢和圖形界面較差,主要適用范圍是(服務(wù)器端的)網(wǎng)絡(luò)編程。
新聞熱點
疑難解答