|

在了解了整個Java的歷史背景後,我們來看看整個Java的架構。我們分成三個部份分別來探討一下,一個是Java本身的語法、二是Java執行的環境、三是Java龐大的API們。
●Java的語法
Java的語法和C語言大致上是一樣的,不論是陳述式 (statement)、條件流程控制 (if)、迴圈 (for)
等等…。也許你會有疑問,C語言加上物件導向的機制那不就是C++了嗎?那Java和C++有什麼樣的差別?簡單的說呢,Java改進了些C++中的一些缺點,並且增加了一些新的優點,讓Java變的更簡單、更容易學習,並且設計出來的程式威力更強大且更堅固
(robust)。那些東西是C++中有而Java中沒有,又有那些東西是Java特殊的設計,而C++中所沒有的呢?我們就來簡單的比較一下。
在Java中拿掉了C語言中大家對他又愛又恨的指標 (pointer),指標使用得當的話,對於程式的能力有很大的幫助,但是使用不當的話,當機可以說是家常便飯。因此為了系統安全、程式的堅固性起見,在Java中沒有指標。另外Java中也沒有了C語言中程式常用的預先處理器
(preprocessor),像是#define、#ifdef、常數宣告等…,當然也少了#include指令,因此也沒有了標頭檔
(.h)。再來對於C++來說,Java也不支援多重繼承的觀念,原因是不讓物件和物件之間的關係變得複雜。
而在Java中新增加的部份像是資源回收 (Garbage Collection)、例外處理 (Exception)、新的修飾詞
(abstract、synchronized、native、final) 等…。所新增的部份,幾乎全都是為了整個系統和程式本身的安全性而考量的。
除了上述這幾個比較大的改變之外,還有一些小的修正,像是Java不論在何種平台上,基本資料型態的大小是不變的等…。筆者會在後面的章節中,陸續的介紹Java這些新增功能的使用方法。
●Java的執行環境
用Java所寫出來的程式之所以能夠跟多種硬體平台執行,最大的功臣就是除了SUN自己本身提供這些硬體平台Java執行環境之外,其它的廠商也投入相當多的心力在Java執行環境的開發,像是IBM所開發的Java系列產品,功能甚至比SUN本身提供的還要強大。
(Java架構示意圖)
|
Java程式並不像其它程式語言,最後被編譯成所在平台的機器語言後再執行,而是先編譯成一個中立的位元碼
(byte code),然後才到裝有Java虛擬機器 (Java Virtual Machine,
JVM)上的硬體去執行,這也就是為什麼Java程式能夠跨平台的主要原因。圖1-7簡單的表示Java原始程式碥、位元碼、JVM和硬體之間的關係。
JVM目前已有多種平台的版本,像是Solaris、Linux、Windows、Macintosh等…,除了這些較大型的作業系統外,還有針對各個小型的系統設計的JVM,像是PDA、手機、Java
Card等…。
整個Java的執行環境可以統稱為JRE (Java Runtime Environment),它除了包括JVM之外,還有給瀏覽器所使用的Java
Plug-in。
|
●Java API簡介
Java應用程式之所以能夠這麼簡單、快速的開發完成,而又能在各種不同的硬體平台上面執行,最大的功臣莫過於一堆為它量身訂做的API們,筆者稱它們為類別函式庫。這些類別函式庫你可以到SUN的網頁上找到它們(http://java.sun.com/products/),筆者把它們分成四類來介紹一下。
- 基本平台套件
不管開發Java任何平台的程式,一定少不了這個基本的套件,它就是JavaTM 2 Platform, Standard
Edition,簡稱J2SE。它除了包含開發Java程式所需的基本類別函式庫之外,還有一些編譯的程式、額外的輔助工具等,而它也是本書所會使用到的主角。除了J2SE之外,SUN另外針對了企業級應用程式推出了JavaTM
2 Platform, Enterprise Edition,簡稱J2EE。J2EE除了J2SE中有的基本類別函式庫之外,還包含了撰寫伺服器端、分散式應用程式、交易處理等其它企業級應用程式所會用到的類別函式庫,像是Servlet、Enterprise
JavaBean等…。最後一個平台套件就是JavaTM 2 Platform, Micro Edition,簡稱J2ME。J2ME是Java平台套件中最小的一個,它是針對消費性電子產品和嵌入式系統所設計的,例如呼叫器、手機、PDA等…。在本書的最後兩章中,會再分別詳細地介紹J2EE和J2ME。
注意:
只有J2SE中包含了編譯Java程式所需要的一些工具程式,而在J2EE和J2ME中只有類別函式庫和執行這類Java程式所需的Java虛擬機器而已。所以就算你只開發J2EE或是J2ME的程式而已,還是會需要J2SE的這些工具程式喔。
- 消費性產品及嵌入式系統套件
這一部份有點跟現在的J2ME有些重疊,像是PersonalJava、EmbeddedJava、Java CardTM、JavaPhone、Java
TV等…,因為J2ME是這一兩年才整合起來的套件,所以會有這些重覆的現象,不過SUN打算把這個部份漸漸的整合到J2ME之中,因此你在網頁上看到的PersonalJava等這些資料都已經是舊版,而且沒有新版的東西出現了。
- J2SE額外的輔助套件
光靠J2SE這些基本類別函式庫,開發些簡單的應用程式應該是足夠的,但是想要開發些像是3D動畫、多媒體應用程式等…,就顯得後繼無力了。因此SUN為了這些特別且常用到的應用範圍,設計了許多相關的類別函式庫,像是專門處理3D繪圖的Java3D、多媒體的JMF、序列埠、並列埠等相關通訊處理的Java
Communication API,還有有關安全方面的JCE等…,種類非常多的類別函式庫,讓你在開發這方面的應用程式時,能更容易、更快速。
- 其它套件
除了上面那些套件之外,還有一些其它的類別函式庫或是相關應用程式等,像是JINI、JAIN、JavaTM Message
Queue等…。有興趣的讀者,可以自行到Java的網站上去觀看詳細的資料。
|
小知識:
在Java 1.0或Java 1.1時,稱這些類別函式庫為JDK (Java Development
Kit),但在Java 1.2版之後已改名為 Java 2 SDK (Software Development
ToolKit) 簡稱為J2SDK,不過習慣上xue zfr bn 還是稱它們為JDK。
|
|
名詞解釋-API:
API是Application Programming Interface的簡寫。API是一組其它程式設計師所寫好的程式,你只在照著它的使用規則,就可以在你的程式中使用這些程式了。
|
|
名詞解釋-SDK:
SDK是Software Development Toolkit的簡寫。當我們用某種電腦語言開發一個應用程式時,除了我們會用到那個語言所提供的API之外,還會用到像是撰寫、編譯、執行、除錯等工具,而這些東西全部合起來就叫作SDK。
|
最後筆者把Java 2的三大部份主要的API用下圖來表示,相信你會更清楚它們之間的分類。
(Java API分類圖)

|