組成
Java由四方面組成:Java編程語(yǔ)言、Java類(lèi)文件格式、Java虛擬機(jī)和Java應(yīng)用程序接口(Java API)。
Java平臺(tái)由Java虛擬機(jī)(Java Virtual Machine,簡(jiǎn)稱(chēng)JVM)和Java 應(yīng)用編程接口(Application
Programming Interface,簡(jiǎn)稱(chēng)API)構(gòu)成。
Java應(yīng)用編程接口為Java應(yīng)用提供了一個(gè)獨(dú)立于操作系統(tǒng)的標(biāo)準(zhǔn)接口,可分為基本部分和擴(kuò)展部分。在硬件
或操作系統(tǒng)平臺(tái)上安裝一個(gè)Java平臺(tái)之后,Java應(yīng)用程序就可運(yùn)行。Java平臺(tái)已經(jīng)嵌入了幾乎所有的操作系統(tǒng)。
這樣Java程序可以只編譯一次,就可以在各種系統(tǒng)中運(yùn)行。Java應(yīng)用編程接口已經(jīng)從版發(fā)展到版。常用的
Java平臺(tái)基于,最近版本為。
體系
Java分為三個(gè)體系:
J2SE(Java2 Platform Standard Edition,java平臺(tái)標(biāo)準(zhǔn)版)
J2EE(Java 2 Platform,Enterprise Edition,java平臺(tái)企業(yè)版)
J2ME(Java 2 Platform Micro Edition,java平臺(tái)微型版)
平臺(tái)構(gòu)架
Java平臺(tái)由Java虛擬機(jī)(Java Virtual Machine)和Java應(yīng)用編程接口(Application
ProgrammingInterface、簡(jiǎn)稱(chēng)API)構(gòu)成。Java應(yīng)用編程接口為Java應(yīng)用提供了一個(gè)獨(dú)立于操作系統(tǒng)的標(biāo)準(zhǔn)接口,
可分為基本部分和擴(kuò)展部分。在硬件或操作系統(tǒng)平臺(tái)上安裝一個(gè)Java平臺(tái)之后,Java應(yīng)用程序就可運(yùn)行。Java
平臺(tái)已經(jīng)嵌入了幾乎所有的操作系統(tǒng)。這樣Java程序可以只編譯一次,就可以在各種系統(tǒng)中運(yùn)行。Java應(yīng)用編程
接口已經(jīng)從版發(fā)展到版。常用的Java平臺(tái)基于,最近版本為。
Java SE
* Java SE(Java Platform,Standard Edition)。Java SE 以前稱(chēng)為J2SE。它允許開(kāi)發(fā)和部署在桌面、服
務(wù)器、嵌入式環(huán)境和實(shí)時(shí)環(huán)境中使用的Java應(yīng)用程序。Java SE 包含了支持Java Web 服務(wù)開(kāi)發(fā)的類(lèi),并為Java
Platform,Enterprise Edition(Java EE)提供基礎(chǔ)。
Java EE
* Java EE(Java Platform,Enterprise Edition)。這個(gè)版本以前稱(chēng)為J2EE。企業(yè)版本幫助開(kāi)發(fā)和部署可
移植、健壯、可伸縮且安全的服務(wù)器端 Java 應(yīng)用程序。Java EE 是在Java SE 的基礎(chǔ)上構(gòu)建的,它提供Web 服
務(wù)、組件模型、管理和通信API,可以用來(lái)實(shí)現(xiàn)企業(yè)級(jí)的面向服務(wù)體系結(jié)構(gòu)(service-oriented architecture,
SOA)和Web 應(yīng)用程序。
Java ME
* Java ME(Java Platform,Micro Edition)。這個(gè)版本以前稱(chēng)為J2ME,也叫K-JAVA。Java ME 為在移動(dòng)設(shè)
備和嵌入式設(shè)備(比如手機(jī)、PDA、電視機(jī)頂盒和打印機(jī))上運(yùn)行的應(yīng)用程序提供一個(gè)健壯且靈活的環(huán)境。Java
ME 包括靈活的用戶(hù)界面、健壯的安全模型、許多內(nèi)置的網(wǎng)絡(luò)協(xié)議以及對(duì)可以動(dòng)態(tài)下載的連網(wǎng)和離線(xiàn)應(yīng)用程序的豐
富支持。基于Java ME 規(guī)范的應(yīng)用程序只需編寫(xiě)一次,就可以用于許多設(shè)備,而且可以利用每個(gè)設(shè)備的本機(jī)功
能。
優(yōu)勢(shì)
與傳統(tǒng)程序不同,Sun 公司在推出 Java 之際就將其作為一種開(kāi)放的技術(shù)。全球數(shù)以萬(wàn)計(jì)的 Java 開(kāi)發(fā)公司
被要求所設(shè)計(jì)的 Java 軟件必須相互兼容。“Java 語(yǔ)言靠群體的力量而非公司的力量”是Sun公司的口號(hào)之一,
并獲得了廣大軟件開(kāi)發(fā)商的認(rèn)同。這與微軟公司所倡導(dǎo)的注重精英和封閉式的模式完全不同。
Sun 公司對(duì) Java 編程語(yǔ)言的解釋是:Java 編程語(yǔ)言是個(gè)簡(jiǎn)單、面向?qū)ο?、分布式、解釋性、健壯、安全與
系統(tǒng)無(wú)關(guān)、可移植、高性能、多線(xiàn)程和動(dòng)態(tài)的語(yǔ)言。
Java 平臺(tái)是基于 Java 語(yǔ)言的平臺(tái)。這樣的平臺(tái)非常流行。因此微軟公司推出了與之競(jìng)爭(zhēng)的.NET平臺(tái)以及模
仿Java的C#語(yǔ)言。
主要特性
Java語(yǔ)言是簡(jiǎn)單的。
Java語(yǔ)言的語(yǔ)法與C語(yǔ)言和C++語(yǔ)言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用Java[7]。另一方面,Java丟
棄了C++中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動(dòng)的強(qiáng)制類(lèi)型轉(zhuǎn)換。特別
地,Java語(yǔ)言不使用指針,并提供了自動(dòng)的廢料收集,使得程序員不必為內(nèi)存管理而擔(dān)憂(yōu)。
Java語(yǔ)言是面向?qū)ο蟮摹?BR>
Java語(yǔ)言提供類(lèi)、接口和繼承等原語(yǔ),為了簡(jiǎn)單起見(jiàn),只支持類(lèi)之間的單繼承,但支持接口之間的多繼承,
并支持類(lèi)與接口之間的實(shí)現(xiàn)機(jī)制(關(guān)鍵字為implements)。Java語(yǔ)言全面支持動(dòng)態(tài)綁定,而C++語(yǔ)言只對(duì)虛函數(shù)使
用動(dòng)態(tài)綁定??傊?,Java語(yǔ)言是一個(gè)純的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言。
Java語(yǔ)言是分布式的。
Java語(yǔ)言支持Internet應(yīng)用的開(kāi)發(fā),在基本的Java應(yīng)用編程接口中有一個(gè)網(wǎng)絡(luò)應(yīng)用編程接口(java net),
它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類(lèi)庫(kù),包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠(yuǎn)程方法
激活)機(jī)制也是開(kāi)發(fā)分布式應(yīng)用的重要手段。
Java語(yǔ)言是健壯的。
Java的強(qiáng)類(lèi)型機(jī)制、異常處理、垃圾的自動(dòng)收集等是Java程序健壯性的重要保證。對(duì)指針的丟棄是Java的明
智選擇。Java的安全檢查機(jī)制使得Java更具健壯性。
Java語(yǔ)言是安全的。
Java通常被用在網(wǎng)絡(luò)環(huán)境中,為此,Java提供了一個(gè)安全機(jī)制以防惡意代碼的攻擊。除了Java語(yǔ)言具有的許
多安全特性以外,Java對(duì)通過(guò)網(wǎng)絡(luò)下載的類(lèi)具有一個(gè)安全防范機(jī)制(類(lèi)ClassLoader),如分配不同的名字空間以
防替代本地的同名類(lèi)、字節(jié)代碼檢查,并提供安全管理機(jī)制(類(lèi)SecurityManager)讓Java應(yīng)用設(shè)置安全哨兵。
Java語(yǔ)言是體系結(jié)構(gòu)中立的。
Java程序(后綴為java的文件)在Java平臺(tái)上被編譯為體系結(jié)構(gòu)中立的字節(jié)碼格式(后綴為class的文件),
然后可以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)中運(yùn)行。這種途徑適合于異構(gòu)的網(wǎng)絡(luò)環(huán)境和軟件的分發(fā)。
Java語(yǔ)言是可移植的。
這種可移植性來(lái)源于體系結(jié)構(gòu)中立性,另外,Java還嚴(yán)格規(guī)定了各個(gè)基本數(shù)據(jù)類(lèi)型的長(zhǎng)度。Java系統(tǒng)本身也
具有很強(qiáng)的可移植性,Java編譯器是用Java實(shí)現(xiàn)的,Java的運(yùn)行環(huán)境是用ANSI C實(shí)現(xiàn)的。
Java語(yǔ)言是解釋型的。
如前所述,Java程序在Java平臺(tái)上被編譯為字節(jié)碼格式,然后可以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)中運(yùn)行。
在運(yùn)行時(shí),Java平臺(tái)中的Java解釋器對(duì)這些字節(jié)碼進(jìn)行解釋執(zhí)行,執(zhí)行過(guò)程中需要的類(lèi)在聯(lián)接階段被載入到運(yùn)行環(huán)境中。
Java是高性能的。
與那些解釋型的高級(jí)腳本語(yǔ)言相比,Java的確是高性能的。事實(shí)上,Java的運(yùn)行速度隨著JIT(Just-In-
Time)編譯器技術(shù)的發(fā)展越來(lái)越接近于C++。
Java語(yǔ)言是多線(xiàn)程的。
在Java語(yǔ)言中,線(xiàn)程是一種特殊的對(duì)象,它必須由Thread類(lèi)或其子(孫)類(lèi)來(lái)創(chuàng)建。通常有兩種方法來(lái)創(chuàng)建
線(xiàn)程:其一,使用型構(gòu)為T(mén)hread(Runnable) 的構(gòu)造子將一個(gè)實(shí)現(xiàn)了Runnable接口的對(duì)象包裝成一個(gè)線(xiàn)程,其二,
從Thread類(lèi)派生出子類(lèi)并重寫(xiě)run方法,使用該子類(lèi)創(chuàng)建的對(duì)象即為線(xiàn)程。值得注意的是Thread類(lèi)已經(jīng)實(shí)現(xiàn)了
Runnable接口,因此,任何一個(gè)線(xiàn)程均有它的run方法,而run方法中包含了線(xiàn)程所要運(yùn)行的代碼。線(xiàn)程的活動(dòng)由
一組方法來(lái)控制。Java語(yǔ)言支持多個(gè)線(xiàn)程的同時(shí)執(zhí)行,并提供多線(xiàn)程之間的同步機(jī)制(關(guān)鍵字為synchronized)。
Java語(yǔ)言是動(dòng)態(tài)的。
Java語(yǔ)言的設(shè)計(jì)目標(biāo)之一是適應(yīng)于動(dòng)態(tài)變化的環(huán)境。Java程序需要的類(lèi)能夠動(dòng)態(tài)地被載入到運(yùn)行環(huán)境,也可
以通過(guò)網(wǎng)絡(luò)來(lái)載入所需要的類(lèi)。這也有利于軟件的升級(jí)。另外,Java中的類(lèi)有一個(gè)運(yùn)行時(shí)刻的表示,能進(jìn)行運(yùn)行
時(shí)刻的類(lèi)型檢查。Java語(yǔ)言的優(yōu)良特性使得Java應(yīng)用具有無(wú)比的健壯性和可靠性,這也減少了應(yīng)用系統(tǒng)的維護(hù)費(fèi)
用。Java對(duì)對(duì)象技術(shù)的全面支持和Java平臺(tái)內(nèi)嵌的API能縮短應(yīng)用系統(tǒng)的開(kāi)發(fā)時(shí)間并降低成本。Java的編譯一次,
到處可運(yùn)行的特性使得它能夠提供一個(gè)隨處可用的開(kāi)放結(jié)構(gòu)和在多平臺(tái)之間傳遞信息的低成本方式。特別是Java
企業(yè)應(yīng)用編程接口(Java Enterprise APIs)為企業(yè)計(jì)算及電子商務(wù)應(yīng)用系統(tǒng)提供了有關(guān)技術(shù)和豐富的類(lèi)庫(kù)。