引言
Java標準版本6.0在許多新特徵的改進方面值得我們去深入研究。這些改進可以被劃分成兩部分:桌面套用和核心方面。桌面改進主要集中在用戶接口(UI)性能和本機OS桌面集成方面。核心主要集中在提高開發者的生產效率和Java應用程式的管理方面。Sun的Mustang開發小組還在Web服務支持和安全性能方面作出重要的改進。
總之,無論你是一位應用程式開發者,系統管理員,工具供應商或是一位安全專家,Java SE 6都有適合於你的內容。本文想詳細分析我所試用過的一些新鮮而令人感興趣的特徵。
核心特徵和改進
Java功能的核心部分被描述為Java的一個專有組成部分(語言部分和它的核心工具),它對於Java的所有其它方面都起基礎性的作用,從用戶接口API到各種伺服器端庫等。下面我將分別談談Java SE 6在Java核心特徵上的改進。(一) 開發者生產效率
新的Java編譯器API允許從Java應用程式內部對Java源程式進行編譯。在編譯期間,應用程式可以訪問庫相關信息以及發出警告、錯誤和其它生成的信息。儘管這個特徵似乎不是我常用的,但是我很快就發現了它的一些新用途。例如,我可以使用它來快速構建我所構建的程式的數據存取層。我可以編寫代碼來生成和編譯用於存取應用程式的資料庫表的類。最終結果是生成一個JAR檔案,這個檔案被進一步構建並作為系統的Ant腳本的一部分一同發布。能夠從應用程式內部對類進行編譯這一實現使得代碼生成具有了互動性-我可以以互動方式來修改和構建類。
為了支持Java腳本編程,Java SE 6支持JSR 223,這是一種提供了到Java內部進行存取的腳本語言的框架標準。你可以定位腳本引擎並且在運行時調用它們以運行腳本。該腳本編程API允許你為選擇的腳本語言提供Java支持。此外,該Web腳本框架允許腳本代碼在任何Servlet容器內生成Web內容。
在調試方面,Java平台調試器(JPDA)也得到進一步增強,開發人員可以針對被鎖定的監視對象檢測死鎖,並同時生成棧跟蹤。
(二) 應用程式管理
通過在java.lang.OutOfMemory異常中包含一個完整的堆疊跟蹤樹並且在堆疊滿時生成致命錯誤記錄,Java SE 6進一步加強了記憶體漏洞分析和探測能力。另外,還增加了一個新的JVM選項以允許你在堆疊滿時運行一個腳本。
注意 當MBean屬性值(包括在複雜類型內部的那些屬性值)超過指定的門檻值時,對於JMX監視API的改進方面允許應用程式傳送事件以傳遞指定的閥值。
對於Solaris 10用戶來說,Hotspot JVM for Solaris針對Solaris DTrace系統調試工具提供了鉤子機制以跟蹤和顯示內部JVM活動,例如垃圾收集、類載入、執行緒、鎖機制等。我在JavaOne上面得到有關這方面特徵的第一個演示程式,並因此為DTrace系統所提供的調試深度所深深吸引。當一個應用程式運行時,DTrace允許你在任何一處停止代碼,觀看所有已經載入的庫(而不僅僅是Java庫,也包括所有系統庫),並且能夠單步跟蹤到Solaris核心中(直到硬體層)。Java對於這種高級調試工具的新的支持使該工具非常適合於系統級上的調試。我現在還記得以前在JVM中出現Solaris Signal-8錯誤時的情況,如果當時有這種支持,那將會節省我大量的分析時間。
(三) Web服務
Java SE 6包括一些新的API以支持Web服務開發。其中,XML數字簽名API允許你保護基於Java的Web服務——通過執行針對XML數據的加密操作。Java-XML Web服務(JAX-WS)2.0 API對以前命名為JAX-RPC的部分作了進一步更新。對於Java-XML綁定(JAXB)2.0的改進包括了對XML模式的支持和把類綁定到特定模式上。最後,針對於XML的流式API(STAX)提供了一種雙向的API以便經由事件流讀寫XML-包括跳過節的能力以及能夠直接針對文檔的子節進行操作。
(四) 安全性
Java SE 6中增加的安全方面的功能包括GSS/Kerberos集成,Java認證和針對LDAP認證的授權服務(JAAS),還有一個安全證書請求框架-它允許Java應用程式通過許多協定來請求安全證書。
桌面特徵和改進
長期以來,Java被認為是一種基於伺服器端軟體的優秀語言,但是只能作為一種二流的桌面GUI套用開發工具。Sun的Java桌面開發小組一直在致力於改變這種局面。在Java SE 6忠他們成功的把Java與其所運行的主機系統更緊密地集成到一起,這導致的結果是,不僅使Java SE 6在GUI性能方面得到很大的改進,而且也大大改進了Java GUI應用程式的行為。Java SE 6的許多新的桌面特徵都是基於JDesktop集成組件(JDIC)工程。JDIC工程使得Java應用程式能夠存取本機的OS桌面中一些可用特徵,例如瀏覽器、電子郵件編輯器、檔案類型關聯程式、系統托盤、應用程式啟動與列印等。下列是Java SE 6中一些傑出的在桌面方面的改進:
· Splash螢幕支持-Splash螢幕能夠通知一個用戶,當他在等待時一個應用程式正在啟動。Java SE 6增加了對Splash螢幕的支持-即使在JVM啟動後也可以顯示Splash螢幕。
· Java基礎類(JFC)和Swing的改進:
* Java SE 6利用了Windows API來提高性能以確保在當前以及未來的Windows版本中都能具有Windows外觀感覺。
* 在設計管理改進方面,包括可定製的設計管理器和簡化GUI組件設計的其它一些改進。
* 對Swing的拖放方面進行了大幅度改進,現在可以對這一功能進行定製。
* 真實的雙緩衝機制提供了快速平滑的圖形過渡效果。
· 系統托盤支持。Java SE 6中新增兩個新類,SystemTray和TrayIcon,包含在java.awt包中,它們允許把圖示,工具提示框和彈出選單添加到Windows或Gnome Linux系統托盤。系統托盤是由所有應用程式共享的桌面區域,通常位於這個區域的右下方。行為(Action)和事件(Event)允許Java應用程式對放到托盤上的項跟蹤滑鼠點擊並回響這些點擊。我發現這個特性對我的伺服器端應用程式也非常有用。例如,通過與桌面API(見下面)一起使用,現在我可以把一個圖示添加到系統托盤上來容易地實現為應用程式的管理HTML頁面啟動一個瀏覽器。無論什麼樣的OS(Linux或Windows),我不再需要記住應用程式的管理連線埠或URL,只需要簡單地點擊圖示,則該頁面就會出現。
· 針對jtable的改進的列印支持
· Java 2D改進-在文本顯示質量方面作了改進,特別是在LCD監視器方面。與主機桌面的字型反走樣設定的集成可以確保連續的文本生成。
· 新的java.awt.Desktop API-新的Java SE 6桌麵包主要目的是使得Java UI應用程式成為"第一流的公民"。通過使用這個包,Java應用程式能夠啟動預設的瀏覽器和電子郵件客戶端,並且與普通桌面應用程式集成(例如OpenOffice)來打開、編輯和列印特定類型的檔案。該桌麵包通過能夠集成到你的應用程式中的行動事件(Desktop.Action)提供了這種能力。
· 國際化支持-Java SE 6支持針對本地化特徵的"外掛程式化",例如日期格式化,Unicode文本規範化以及資源綁定等。
一場新的Java桌面革命
實際上,本文也只是簡單地介紹了Java SE 6這個即將發行的重要的Java發行的beta版本中所作的一些改進。這些改進涉及到Java標準版本的許多方面,包括那些與Java企業版本非常密切的方面。就象Java 2對伺服器所產生的影響一樣,Java SE 6將會對桌面開發領域產生革命性的影響。如今,已經到了為這場新風暴作好準備並把你自己投入到其中的時候了。