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