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