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