sun 將要在今年的晚些時候發(fā)布最新的java平臺(開發(fā)代號Mustang)。作為正式的Java平臺,Standard Edition 6這個版本關(guān)注了幾個重要的主題,例如兼容性和穩(wěn)定性。有關(guān)完整的主題列表,參閱Java Specification Request 270,JSE 6的版本目錄。
Mustang預(yù)期擁有的新特性包括(除了別的以外):。 一個編譯器API。 控制臺輸入/輸出(I/O)。 一個啟動畫面API。 眾多的Java 2D性能改進(jìn)。 xml數(shù)字簽名。 一個系統(tǒng)托盤API。 java.io.File類的分區(qū)空間方法。 Java數(shù)據(jù)庫連接(JDBC)4.0。 公共注釋(Common annotations)。 腳本支持(Scripting)。 一個用于XML的流(streaming)API。 排序、過濾和加亮javax.swing.JTable內(nèi)容的能力。 Javadoc標(biāo)記的更新。 可編程操作網(wǎng)絡(luò)屬性(例如廣播地址和子網(wǎng)掩碼)。 方便地打印javax.swing.text.JTextComponent的內(nèi)容的能力
Mustang擁有遠(yuǎn)遠(yuǎn)超出一篇文章探討范圍的新特性,因此,本文只關(guān)注新特性的一小部份。確切地說,本文將討論用于控制臺輸入/輸出和分區(qū)空間的方法、用于啟動畫面以及與系統(tǒng)托盤交互的API.
警告由于Mustang目前沒有最終發(fā)布,一些特性還可能會被改變或者去掉。所以,當(dāng)Sun公司最終發(fā)布Mustang的時候,本文中的一些代碼可能會需要改動或者變得完全不相干了。
注重我使用Sun公司的Java 2 SDK版本1.6.0-rc (build 62)創(chuàng)建和測試了本文的代碼。底層平臺是Microsoft Windows ME.
控制臺輸入/輸出
在1997年5月,Sun收到了一個改進(jìn)控制臺輸入/輸出的增強(qiáng)請求(RFE)。申請人非凡要求一種可以提示用戶輸入密碼并且答應(yīng)用戶輸入密碼(任意長度)而不會在控制臺顯示出密碼字符的方法。申請人指出,抽象窗口工具包(AWT)的setEchoChar()方法并不合用,因?yàn)樗揽坑贕UI的可用性,然而很多基于服務(wù)器的操作系統(tǒng)根本不使用GUI.
在2005年后期,Sun回應(yīng)了RFE #4050435,為Mustang (build 57)添加了java.io.Console類。這個類所提供的方法可以訪問與當(dāng)前虛擬機(jī)相關(guān)聯(lián)的基于字符的控制臺設(shè)備。但是在調(diào)用這些方法之前,需要首先調(diào)用System的public static Console console()方法來獲取一個Console對象。該方法將返回一個用來與控制臺設(shè)備交互的Console對象,但是假如控制臺設(shè)備不存在就會返回null,例如當(dāng)你重定向標(biāo)準(zhǔn)輸入或標(biāo)準(zhǔn)輸出(或二者皆有)的時候。在調(diào)用System.console()來返回Console對象之后,下面的一段代碼將檢查返回的Console實(shí)例是否為null來測定控制臺設(shè)備是否存在:
Console console = System.console ();if (console == null){ System.err.PRintln ("Console not available"); return;}
假設(shè)控制臺設(shè)備是存在的,你可以從控制臺輸入流讀取密碼和整行的字符,還可以向控制臺輸出流寫入字符。為了讀取密碼(而不會將密碼字符顯示到控制臺輸出流),你必須調(diào)用Console的兩個readPassWord()方法之一。這兩個方法不答應(yīng)換行符作為密碼的一部分,假如達(dá)到了控制臺輸入流的字符數(shù)目限制,他們將返回null.
新聞熱點(diǎn)
疑難解答
圖片精選