後續幾年改版,J2SE 1.3、J2SE 1.4大多只強化API功能,語言本身並無太多更改。然而,今年即將發表的J2SE 1.5 (正式版本編號改為J2SE 5.0,代號Tiger),可說是Java出道以來第二次重大變革。除新增各種不同新功能的API,也是語言層面改變最大的一次。
J2SE 5.0一口氣新增15項JSR,內含多達十幾種的功能及語法更新,目的無非是要讓Java程式開發人員可以更具效率得撰寫更為穩固的Java應用程式。到底有哪些的更新,又能帶來何種便利性呢?讓我們一探就竟,看看這隻老虎的威力。
J2SE 5.0新功能分別內建於以下15項JSR中:
這些JSR中包含許多新增功能,大致可簡單區分以下7項主題:
簡易開發(Ease of Development)
簡易開發可以說是本次改版的重點。利用一些語法上的更新與強化,降低程式撰寫的複雜度,同時增加程式的可讀性,減少不必要、不直覺的程式碼。尤其是Collection API的使用,更可感受到Tiger所具備的便利性。其主要新增的功能除了受到期待且爭議的泛型(Generic)之外,還有Autoboxing/ auto-unboxing、Enums、Extended-loop、Static import等。
擴充性與效能(Scalability and Performance)
「Java的效能不好」、「Java的效能是不是比不上C++」是其它陣營使用者,抑或是準備轉換至Java平台的使用者心中常有的質疑。基於設計理念的不同,C語言可與作業系統緊密結合,單純就速度比較,不可否認地,Java確實在某些層面敵不過C++。
但是你要知道,Java擅長領域並非速度多快,此項語言所能保證的是系統的穩定性。就像越野車跟跑車來比速度,肯定跑車一定是快很多的。不過難到越野車就沒有贏的機會嗎?今天要比爬山越野能力,跑車就無用武之地了。就算同樣是在市區裡比賽,不同的駕駛員、不同的交通狀況,這些都是跟速度無關的條件,勝負往往也不是全靠速度。
若回頭看看速度,其實也沒有慢多少。每有新Java版本推出,都會進行效能調校與改善。這次Tiger就加大執行時期的Heap,也強化Hotspot的效能,將可提供更快速且穩定的 New I/O。尤其是視窗型的Java應用程式,使用者可明顯感受程式啟動的速度加快不少。
可監控、易管理(Monitoring and Manageability)
新版Tiger新增不少強化管理與監控功能的API。JMX Management API原本只應用於 J2EE,可便於系統管理人員管理J2EE應用系統中的各項資訊,如今,Tiger也正式加入此組API。
除易於管理之外,Tiger另新增監控機制,可讓系統管理抑或程式開發人員直接使用該標準API,撰寫監測與管理的應用程式,不僅能直接存取JVM狀態,進而可有效對應用程式或系統進行效能調校。以往這些動作皆需Third-party廠商旗下工具產品才可完成,現在,你可以自己撰寫程式完成這項工作。
桌面軟體(Desktop Client)
如前所述,Tiger提升視窗應用程式相關API的速度。此外,Tiger也更新Linux與Solaris的AWT API (名為XAWT),同時全力支援OpenGL的最新版本。利用OpenGL的原生支援,Java2D程式將可享受其所帶來的速度感。至於使用介面,Tiger也提供Windows XP與Linux/Red Hat兩大作業系統全新的Look and Feel。
支援XML(Core XML Support)
Tiger裡也更新了對XML的規格支援,XML版本支援到1.1及Namespace,也支援XML Schema及XSLT。對於底層SAX和DOM的部份,則支援到2.0.1和Level 3。相信用Java來處理XML文件會更容易、更俱威力。
新增Unicode擴充字元(Unicode Supplementary Chars)
Tiger增加了一些在Unicode 3.1裡的一些擴充字元(Supplementary Chars),這些擴充字元的編碼方式有點類以Big5字元用ASCII編碼的方式,就是用兩組UTF-16高、低字元,來表示這些擴充字元。不過你不用擔心該如何去區分一般或是擴充字元,Tiger裡已經透明化處理相關的API,讓你字串/元的運算跟平常沒兩樣。
其他
其他新增的API,如JDBC RowSet,基本上可讓資料庫存取工作更為容易,讀者若有興趣不妨參考甫落幕「JavaTwo」大會中,由蘇國鈞講師所介紹的Sun Java Studio Creator中的範例,直接體驗一下JDBC RowSet的威力。
與取名Tiger的J2SE 5.0第一次接觸後,我的感覺是SCJP 1.5版本的認證考試將會更難通過,因為對於開發人員而言,必須學習的東西更多。不過,對於初學Java程式設計的人而言,Tiger確實實現簡易開發的諾言,開發人員不用在「為什麼不能直接把1, 2, 3這些數字直接加入Set之中」這類問題上迷路,當然也更加容易撰寫出可執行的程式。
就像有了自排車,駕駛不再需要煩惱何時該換檔,但若想要掌握駕馭速度的快感,還是得了解排檔原理與功用,是吧?