???????? Java beta已經(jīng)發(fā)布了,雖然離正式的FCS還有一段時間,一個朋友還是急不可耐地下載了Java6進行試用,他認為Java6將會給Java桌面開發(fā)帶來革命性的變化。
???????? 最近發(fā)版的Java6(Mustang)beta是功能齊全足夠穩(wěn)定的版本,我下載并在第一周測試了這一版,我尤其被它的桌面功能所吸引,除了命名習慣改變了(2不再Java SE中出現(xiàn)),在許多新功能上都值得探索。改進總的來說分為兩類:桌面開發(fā)和內(nèi)核。
???????? 桌面開發(fā)改進主要體現(xiàn)在用戶界面(UI)效率以及本地操作系統(tǒng)桌面集成上。核心改進主要集中在增加開發(fā)效率和Java應用管理上。Sun的Mustang開發(fā)小組對Web服務和安全改進做了很多重要的努力。
???????? 總的來說,不管你是應用開發(fā)者、系統(tǒng)管理員、工具提供商或者安全專家,Java6都為你提供你想要的。本文描述了一些我用過的有趣新功能。
內(nèi)核功能和改進
???????? Java內(nèi)核是Java的幾個部分,包括語言和工具,這些是Java其他方面的基礎,從用戶界面API到服務類庫。下面我細分小類描述Java內(nèi)核以及Java6的改進。
開發(fā)效率
???????? 新的Java編譯器API允許在Java應用程序中編譯Java代碼。在編譯的時候,應用程序能夠訪問格式化的類庫依賴信息、警告信息、錯誤信息以及編譯中產(chǎn)生的其他消息(該功能已經(jīng)被netbeans6.0集成進去,實現(xiàn)新的Javac API,并籍此提高錯誤信息的提示)。盡管此項功能我不會經(jīng)常用到,但是我已經(jīng)發(fā)現(xiàn)它的新用處了。比如,用它為應用程序數(shù)據(jù)庫迅速生成數(shù)據(jù)訪問層。我寫的代碼生成并編譯訪問應用程序數(shù)據(jù)庫的類,最終生成jar文件,這些jar文件產(chǎn)生、生成之后作為系統(tǒng)的一部分部署到Ant腳本中。在應用程序中生成并編譯使得代碼生成變得可以互動起來,我可以不斷修改并反復生成這些類。
???????? 為使用Java的腳本功能,Java6支持了JSR223,JSR223提供腳本語言訪問Java內(nèi)部的框架,你可以在運行時定位并啟動腳本引擎來運行你指定的腳本。另外,Web腳本框架還允許腳本在任何Servlet容器內(nèi)生成Web頁面。
???????? 對于調(diào)試來說,Java平臺調(diào)試接口(JPDA)增強了檢測死鎖以及為被鎖定監(jiān)控對象產(chǎn)生堆棧跟蹤的功能。此外,Java6添加了允許客戶程序attach到一個正在運行的虛擬機進行診斷的功能。
應用程序管理
???????? Java6增強了內(nèi)存泄漏分析和檢測,在java.lang.OutOfMemory異常中包含了所有跟蹤棧的信息,并能當堆棧溢出時時產(chǎn)生致命錯誤的日志。另外,增添了一個新的虛擬機選項允許你當堆棧溢出時調(diào)用某段腳本。
???????? JMX監(jiān)控API的增強允許應用程序在MBean屬性值(包括那些包含在復雜類型內(nèi)的)超出臨界值時發(fā)送事件消息。
???????? 對于Solaris10用戶,Solaris的Hotspot JVM為Solaris的DTrace系統(tǒng)調(diào)試工具提供鉤子來追蹤和顯示虛擬機內(nèi)部活動,比如垃圾收集器、類加載、線程、鎖等等。參加JavaOne大會時,我觀看此項功能的演示,深深被DTrace工具調(diào)試的深度所吸引。應用程序運行時,DTrace允許你在任何地方中斷代碼的運行,查看所有加載的庫(不僅僅是Java類庫,還包含系統(tǒng)類庫),跟蹤到Solaris內(nèi)核直至硬件!Java提供的這個令人驚訝的新工具讓系統(tǒng)調(diào)試成為可能。我現(xiàn)在還記得過去經(jīng)常會遇到虛擬機中報出Solaris Signal-8的錯誤,此新功能能幫我一探究竟。
Web服務
????????? Java6包含了一些新的API來支持Web服務。XML數(shù)字簽名API允許你對XML數(shù)據(jù)進行加密,從而安全地使用基于Java的Web服務,Java-XML Web服務(JAX-WS)2.0 API更新了以前稱作JAX-RPC的接口。Java-XML綁定(JAXB)2.0的增強包括XML Schecma支持以及將類直接綁定到Schema上。最后,XML流API(STaX)提供了雙向應用程序接口通過事件流來讀寫XML,包括跳過某些部分,只處理于文檔的某些部分。
安全
????????? Java6的安全包括GSS/Kerberos集成,LDAP認證的Java認證及授權服務(JAAS),允許Java應用程序通過多種協(xié)議請求安全證書的安全證書請求框架。
桌面功能和改進
???????? 很長一段時間內(nèi)Java被認為是優(yōu)秀的服務器段軟件語言,而在桌面GUI應用方面被認為是次等公民。Sun的Java桌面開發(fā)小組一直致力于改變這種看法,將Java同本地操作系統(tǒng)更緊密的集成,結(jié)果在Java6中不僅提高了用戶界面效率,還改進了Java GUI應用程序的表現(xiàn)。
???????? Java6的許多新的桌面功能基于JDIC項目,JDIC項目讓Java應用程序可以訪問本地操作系統(tǒng)的許多功能,比如瀏覽器、email編輯器、文件類型關聯(lián)、系統(tǒng)托盤、應用程序啟動以及打印等等。下面是Java6在桌面開發(fā)上的明顯改進:
啟動畫面支持
???????? 啟動畫面告訴用戶等待應用程序啟動。Java6甚至提供了在虛擬機啟動之前展現(xiàn)啟動畫面的支持。
Java基礎類(JFC)以及Swing改進
???????? Java6調(diào)整了Windows API,使Swing既提高了運行速度,又保證了當前Windows版本的Windows外觀。
- 增強了布局管理器,加入了自定義布局管理器以及其他簡化界面組件的布局器。
- 極大的增強了Swing的drag-and-drop功能,使其更加靈活。
- 真雙緩沖機制提供了快速平滑的界面切換。
- 系統(tǒng)托盤支持,在java.awt中增添了兩個新類SystemTray和TrayIcon,允許你在Windows和Gnome Linux系統(tǒng)托盤上添加圖標、tool tips、以及彈出菜單。系統(tǒng)托盤是所有應用程序共享的桌面領域,通常位于桌面的左下角,動作事件允許Java應用程序跟蹤你放入托盤上圖標鼠標點擊事件。我發(fā)現(xiàn)這個新功能對我的服務器端程序也有用,比如和下文所提到的Desktop API結(jié)合使用能容易地為應用程序管理員啟動管理頁面瀏覽器。不管是什么操作系統(tǒng)(Linux還是Windows),我不再需要記住應用程序管理端口或者URL,只需要點擊圖標,頁面就出現(xiàn)了。
- JTable的增強打印的支持。
- Java2D的增強:增強了文本顯示質(zhì)量,特別是在液晶(LCD)顯示器上,同本地桌面字體反走樣設置集成確保了文本顯示的一致性。
- 新的java.awt.Desktop的API:Java6新的Desktop包目的是使Java用戶界面程序成為一等公民。使用該包,Java應用程序能夠啟動缺省的瀏覽器和電子郵件客戶端,并且和普通桌面應用程序(比如OpenOffice)集成,能夠打開、編輯并且打印特定類型的文件。Desktop包通過動作事件(Desktop.Action)來提供此項功能,讓你能集成到你的應用系統(tǒng)中。
國際化
?????????? Java6為某些格式支持可插拔式支持,比如日期格式化、Unicode文本標準化以及資源bundle。
???????? Java6有可能使Java桌面應用產(chǎn)生革命的變化,就像java 2曾經(jīng)產(chǎn)生的服務器端革命一樣。我們最好為這場風暴做好準備,為早期投入Java桌面市場得到的報償擺好姿態(tài)。
posted on 2007-03-30 20:32
MEYE 閱讀(682)
評論(0) 編輯 收藏