Me唱歌看書研究,程式小說新詩。搞了個Blog和古文網站,寫些亂七八糟及翻譯文章,玩些小程式和中文化。可惜時間美好人生苦短,沒法一一盡善。夢想是開間小 pub,放喜歡的音樂,喝自己調的酒。

noIE.png 針對 css 支援極差的 IE 可能會無法正常瀏覽本站,強烈建議 Mozilla Firefox

本站連結圖示與 Feed:
rss.gif atom10.gif
smalllogo.png

支援標準:
xhtml10validated.gif cssvalidated.gif
rss_valid.gif atom_valid.gif

本站架構:
firefox.png thunderbird.gif
openoffice.png postgresql.gif
spring.png ubuntu_button.gif

網路運動:
Sticker Map GeoUrl
Fight Spam!

本站授權規範:
cc.gif
Creative Commons License by-nc-sa
請參閱網頁下方之版權說明

Powered By Sylphie 0.1a

2011-08-29 03:02:35.976

Java SE 7 新功能與改進 - 1.3 Project Coin - try-with-resources 述句

try-with-resources 述句可以讓我們在 try 述句中宣告一到數項資源。當我們說某個物件是一項資源時,意味著該物件實作了 java.lang.AutoCloseable 或是它的子介面 java.lang.Closeable,並且當程式不再使用它們時,我們需要將其關閉。try 新增的述句確保每項資源在區段結束時都會被關閉。

早期我們都必須要自行處理資源的關閉,但現在我們可以藉助此一述句來簡化程式。下例會從檔案中讀取第一行,它使用 BufferedReader 物件來讀檔。BufferedReader 是一項資源,並且當程式不再使用它時,我們必須將其關閉:

本例中我們用新的 try 語法來宣告了一個 BufferedReader 資源,此語句必須接在 try 關鍵字之後,並且用圓括號 () 包起來。BufferedReader 在 Java SE 7 及其後版本裡,已實作了 java.lang.AutoCloseable 介面。因為 BufferedReader 實體是在 try-with-resource 述句中所宣告的,所以它將會被自動關閉;無論是 try 區塊正常結束,或是被突然中斷 (像是 BufferedReader.readLine 丟出 IOException)。

早期 Java 版本中,我們可以用 finally 區塊來確保資源被正確關閉 (不管 try 區塊是正常結束或是突然結束)。下例使用 finally 來替代 try-with-resources 述句:

然而在本例中,如果 readLineclose 方法同時丟出例外,則 readFirstLineFromFileWithFinallyBlock 方法最終丟出的是 finally 區塊中所產生的例外,而 try 區塊中產生的例外將會被抑制。相反地,在 readFirstLineFromFile 中,如果 try 區塊及 try-with-resources 述句中同時產生例外,則該方法最終丟出的將會是 try 區塊中所產生的例外,而不是 try-with-resources 述句中產生的例外。

也就是說,如果 readLineclose 方法同時丟出例外,則 readFirstLineFromFileWithFinallyBlock 方法會丟出由 close 方法所丟出的例外,並抑制 readLine 方法所丟出的例外;相反地 readFirstLineFromFile 方法會丟出由 readLine 方法所丟出的例外,並抑制 close 方法所丟出的例外。我們可以取得那些被抑制住的例外,細節請參考最後面的小節。

我們可以在 try-with-resources 述句中宣告一到多個資源。下例示範了如何從變數名為 zipFileName 的 ZIP 檔案中取得被壓縮的檔案名稱,並且建立一個包含這些檔案名稱的文字檔:

本例中 try-with-resources 述句宣告了兩個物件 ZipFileBufferedWriter,並且用分號 ; 分開。當此區塊程式碼運作結束時,無論是正常結束或例外發生,BufferedWriterZipFile 物件的 close 方法都會自動地依先後順序被呼叫。注意:呼叫所有資源 close 方法的順序和宣告它們的順序是相反的。

上面的程式片段在 finally 區段中的執行順序如下:

  1. rs.close();
  2. statement.close();
  3. conn.close();
  4. System.out.println("enter");
由此可知:
  1. 呼叫 close 方法的順序和宣告順序是相反的。
  2. 會先將所有資源都關閉後,才會正式進入 finally 區塊。
注意:try-with-resources 述句可以擁有 catchfinally 區塊,如同原本的 try 述句一樣。在 try-with-resources 述句中,會先將所有被宣告的資源關閉後,才會進入 catchfinally 區塊。

被抑制的例外

在上例 writeToFileZipFileContents 中,如果 try 區塊中產生了一個例外的話 (例如 write 方法),那麼 try-with-resources 述句中的其他例外全都會被抑制下來 (BufferedWriterZipFileclose 方法)。也就是說最後 writeToFileZipFileContents 方法丟出的是 try 區塊中的例外 (例如 write 方法)。如果我們想取得那些被抑制的例外的話,可以呼叫 Throwable.getSuppressed 方法。

實作了 AutoCloseableCloseable 介面的類別

請參考 AutoCloseableCloseable 介面的 JavaDoc,上面列出了所有已實作的類別。Closeable 介面繼承自 AuyoCloseable 介面。它們兩個的不同處在於:Closeable 介面的 close 方法會丟出 IOException 類型的例外,而 AutoCloseable 介面的 close 方法丟出的是 Exception 類型的例外。因此,AutoCloseable 介面的子類別可以覆寫 close 方法的行為來丟出特定的例外,像是 IOException,或是根本就不丟出任何例外。

2011-08-25 02:37:19.218

Java SE 7 新功能與改進 - 1.2 Project Coin - switch 指令支援字串

在 Java SE 7 中,可以在 switch 述句中使用 String 物件:

switch 述句會使用 String.equals 方法來比較每一個 case 標籤的字串物件,因此在 switch 述句中的字串比對是有大小寫分別的。

和一連串的 if-then-else 相比,在 switch 述句中使用字串會更有效率,並且容易閱讀。

2011-08-24 00:19:06.117

Java SE 7 新功能與改進 - 1.1 Project Coin - 二進位數字表示法

在 Java SE 7 中,整數型態 (byteshortintlong) 可以用二進位數字系統來表示,它的前置詞是 0b0B。下面列出幾個用法:

有的時候,數字用二進位法來表示,會比八或十六進位來得清楚和易讀。舉例來說:

原本在 Java 語言中可以使用整數數字的地方,都可以用二進位表示法:

你也可以用它來設計迷宮陣列,或是點陣圖形的表情符號,像是下面這個笑臉圖:

2011-08-03 15:01:14.424

Java SE 7 新功能與改進 - 0. 概觀

本系列將會介紹 Java SE 7 中的新功能和改進。首篇為概觀,其後的篇幅將會從本篇中挑出重要的部分加以詳細解說及示範。

注意:Java SE 7 中目前已發現 HotSpot 對迴圈最佳化後會在 server 模式下造成 bug。最好情況是 JVM crash (至少你知道程式掛了),最壞情況是迴圈不正確執行導致錯誤的結果 (程式繼續跑但內部資料爛掉了)。在 Java SE 6 中此功能預設是關閉的,但在 Java SE 7 預設開啟。目前不建議將 Java SE 7 使用在商業用途,請改用 Java SE 7 Update 2 或其後的版本。

附註:若必須使用 Java SE 7,又要避免上述錯誤發生的話,可以在啟動程式時加上 -XX:-UseLoopPredicate 參數,藉以避免 JVM 對迴圈做最佳化。(感謝 Hao Cheng Lee 提出)

Swing

JLayer 類別

JLayer 類別是一個靈活強大的 Swing 裝飾元件。它可以讓你在其他元件上描繪並回應元件事件,而無需直接地修改底層元件。更多訊息請參見 Java Tutorials 中的如何使用 JLayer 來裝飾元件

Nimbus 介面外觀

Nimbus 介面外觀 (Look & Feel) 已經從 com.sun.java.swing 搬到標準的 API 命名空間 javax.swing;請參見 javax.swing.plaf.nimbus。雖然它並不是預設的外觀,但你仍然可以很輕易地使用它。Java Tutorials 中的 Nimbus 介面外觀可取得更多資訊,以及在你的應用程式中用三種不同方式啟用 Nimbus 的範例。

重量級與輕量級元件

從前從前,在同一個容器中混合重量級 (AWT) 及輕量級 (Swing) 元件會造成問題。然而,在 Java SE 7 中已經可以很輕易地達到重量級和輕量級元件的混用。混用重量級與輕量級元件一文教你如何達成此目標。

多邊形及半透明視窗

Java SE 7 版本支援具透明度以及非矩形的視窗。請參見 Java Tutorials 中的如何建立半透明和多邊形視窗

JColorChooser 類別中使用 HSL 調色盤 (色調-飽和度-亮度)

HSV 分頁已加入 JColorChooser 類別裡,可允許使用者用 HSL 色彩模式來選擇顏色。

IO 及 NIO

java.nio.file 和與它相關的 java.nio.file.attribute 中提供了各式各樣的檔案 IO 支援,以及檔案系統存取。JDK 7 中同時也可找到 ZIP 檔案系統供應器。另外也包含了非同步的 IO 操作。下列資源提供了更多資訊:

網路

新增 URLClassLoader.close() 方法。此方法有效地解決了問題:如何支援更新過後的類別實作和資源,尤其是從特殊代碼庫中載入的,像是 JAR 檔。請參見關閉 URLClassLoader

Sockets Direct 協定 (SDP) 提供高效網路連線存取的能力。請參見 Java Tutorials 中的瞭解 Sockets Direct Protocol

安全性

橢圓曲線密碼學 (Elliptic Curve Cryptography,簡稱 ECC)

新的原生供應器已加進 Java SE 7 中,並提供數個以 ECC 為基礎的演算法 (ECDSA/ECDH)。請參見 Java PKCS#11 參考指南中的 Sun PKCS#11 供應器所支援的演算法

關閉 CertPath 演算法

現在可以關閉不牢固的加密演算法。例如,已不再被認為是安全的 MD2 摘要演算法。Java SE 7 提供一套機制來拒絕在憑證路徑處理和 TLS 握手連線中使用特定的演算法。請參見 Java PKI 程式設計師指南中的附錄 D: 關閉加密演算法,以及Java Secure Socket Extension (JSSE) 參考指南中的已關閉的加密演算法

JSSE (SSL/TLS)

TLS 1.1

SunJSSE 現在支援 RFC 4346 中的 TLS 1.1。最重要的更新是針對密碼字段鏈結 (Cipher block chaining,CBC) 攻擊的保護措施。

TLS 1.2

SunJSSE 現在支援 RFC 5246 中的 TLS 1.2。除此之外,它可指定不同的內部雜湊演算法、增加了新的密碼套件、並包含了改進過後的加密靈活度,尤其是商議加密演算法。

摒棄不堅固的密碼套件

像是 RFC 4346RFC 5246 以及 RFC 5469,有些密碼套件已經是過時且不應再被使用的。這些過時的套件在 SunJSSE 中已預設關閉。更多細節請查閱有關於 SunJSSE 供應器的文件中的密碼套件清單。

連線敏感的信託管理

現在信託管理者和金鑰管理者雙方都有能力檢驗 TLS 連線中的參數,明確地說是在握手階段時連線內的 SSLSession。例如,信託管理者可能會限制憑證的類型必須列在有效的簽名演算法清單中。

終端查驗

終端識別演算法可以被指定去查驗遠端電腦的主機位址需與其提供的憑證相符。此種查驗類型早先已加入 HTTPS 協定 (參見 HttpsURLConnectionHostnameVerifier),而現在它已經在 TLS 層級上列為可選項目。

TLS 重新商議

Java SE 支援 RFC 5746,它修正了 TLS 協定中一些重新商議的問題

預設關閉 SSLv2Hello

在 Java SE 7 中,SSLv2Hello 已從預設開啟的協定清單中移除。

關閉演算法

不堅固的加密演算法現在已可關閉,如同上述所說明的。

伺務器名稱指示 (Server Name Indication, 簡稱 SNI) 的 JSSE 客戶端

Java SE 7 支援在 JSSE 客戶端中的 SNI 擴展。SNI 請參見 RFC 4366。它可以讓 TLS 客戶端連線到虛擬伺服器上。

更牢固的 EncryptedPreMasterSecret 版本數量驗証

Java SE 7 限縮了在 TLS 1.1 及 TLS 1.2 握手階段中的版本數量驗證。請參見 JSSE 參考指南

並行工具

ForkJoinPool 類別為基礎的 fork/join 框架實作了 Executor 介面。它被設計成可有效地使用執行緒連線池來完成大量的任務。一種工作竊取 (work-stealing) 的技術可以讓所有的執行緒都處在忙碌的狀態,藉以達到多處理器的完整優勢。請參見 Java Tutorials 中的 Fork/Join。另外 <Java home>/sample/forkjoin/ 目錄下亦包含了 fork/join 框架的範例。

本地執行緒的偽亂數產生器 ThreadLocalRandom 類別使用偽亂數來消除執行緒之間的衝突。請參見並行隨機亂數

靈活且可複用的 Phaser 類別是新的同步關卡 (barrier),類似於 CyclicBarrier

新的傳輸佇列 TransferQueue 和並行性的雙向連結佇列 ConcurrentLinkedDeque

多樣化網際網路應用程式 (Rich Internet Applications,簡稱 RIA) 及部署

Java 2D

基於 XRender 的貼圖管線

現在基於 XRender 的新 Java 2D 貼圖管線已支援新式的 X11 桌面,提供加強過後的圖形效能,可存取大部份現今 GPU 的功能。此管線預設是關閉狀態,但可藉由設定命令列參數 -Dsun.java2d.xrender=true 來開啟。舊的 X11 組態可能無法支援 Xrender。詳盡格式 -Dsun.java2d.xrender=True 可發送一則訊息到標準輸出中,用來指出管線是否已實際啟動。請參見 Java 2D 技術中的系統變數中有關 xrender 部份。

支援 OpenType/CFF 字型

JDK 現在會列舉出並顯示已安裝的 OpenType/CFF 字型,藉由呼叫像是 GraphicsEnvironment.getAvailableFontFamilyNames() 之類的函式;這些字型同時也會被 Font.createFont() 方法識別出來。請參見 Java Tutorials 中的選擇字型

TextLayout 支援藏文字母表

TextLayout 支援藏文字母表。

支援 Linux 字型

對於 Solaris 及 Windows,JDK 的邏輯字型已在 fontconfig.properties 檔案中明確指定。而在其他各種不同的 Linux 實作品中,無法保証某特定的字型是否存在以支援特定的地區。自 Java SE 7 起,針對無法識別的 Linux 平台,可使用 libfontconfig 字型組態 API 來選擇該用何種字型去對應邏輯字型。請參見 Fontconfig

Java XML - JAXP, JAXB, and JAX-WS

JAXP

  • Java SE 7 現在包含了 Java API for XML Processing (JAXP) 1.4.5 版。
  • 和前一版比起來,有許多的臭蟲修正和一些改進,特別是一致性、安全性和效能。
  • 雖然規格仍是 JAXP 1.4,但是 StAX 已經依照 JSR 173 Maintenance Review 3 而升級到 StAX 1.2 版。
更多資訊請參考 JAXP 1.4.5 Release NotesJAXP 1.4.5 Change log

JAXB

Java SE 7 支援 Java Architecture for XML Binding (JAXB) 2.2.3 版。更多資訊請參考 JAXB Change log 中 JAXB RI 2.2 及更新版的部分。

JAX-WS

Java SE 7 支援 Java API for XML Web Services (JAX-WS) 2.2.4 版。更多資訊請參考 JAX-WS Change log 中 JAX-WS RI 2.2 及更新版的部份。

國際化

Unicode 6.0.0 中新的字碼表和字元

Java SE 7 的早期版本中加入了 Unicode 5.1.0 的支援,而 Java SE 7 的最終版本支援 Unicode 6.0.0。Unicode 6.0.0 是 Unicode 標準的主要版本,不但支援了兩千個以上的額外字元,而且也新增了屬性和資料檔案。

Java Tutorials 中有新的一節討論 Unicode

目錄 <Java home>/demo/jfc/Font2DTest/ 下包含了 Java 針對 Unicode 6.0 支援的相關範例。

ISO 4217 貨幣代碼的延伸支援

貨幣經由 ISO 4217 代碼辨別。這些代碼由外部的代理機構維護,並且獨立於 Java SE 平台外釋出。自 Java SE 7 起,將可以提供新的貨幣而無需釋出新版的 JDK。

若要在執行時期間替換預設貨幣,可事先建立一份名為 <JAVA_HOME>/lib/currency.properties 的特性檔。這份檔案需包含 ISO 3166 國家代碼以及 ISO 4217 貨幣資料的「鍵/值配對」。數值的部分由三項以逗號區分的 ISO 4217 貨幣數值所組成:字母代碼、數字代碼、以及最小單位。以 # 符號開頭的每一行皆會被視為註解。例如:

# Sample currency property for Japan
JP=JPZ,999,0

本功能的新 API 包括了下列方法,全部都位在 Currency 類別中:

分類 Locale 支援

預設地區可獨立地設定成兩種使用型態:format 使用在格式化資源上;display 使用在顯示選單和對話框中。新的 getDefault(Locale.Category) 方法可傳入 Locale.Category 參數。傳入 FORMAT 列舉的話,則此方法會回傳可供格式化資源的預設地區。同樣地,傳入 DISPLAY 列舉的話則會回傳 UI 所使用的預設地區。setDefault(Locale.Category, Locale) 方法可用為指定的分類設定地區。無參數的 getDefault() 方法會回傳 DISPLAY 的預設值。

在 Microsoft Windows 上,預設的初始值會依據 Windows 控制台中的「標準及格式」和「顯示語言」設定。

Locale 類別支援 BCP47 和 UTR35

Locale 類別已更新實作 BCP 47 (IETF BCP 47, "Tags for Identifying Languages") 和與 BCP 47 相容的 LDML (UTR#35, "Unicode Local Data Markup Language") 延伸以作為地區資料交換。

下述的巢狀類別已在本版中加入 Locale 類別:

  • Locale.Builder 可以用來建立 Locale 實體,並且可利用 setter 方法來修改其設定值。
下列方法已加入 Locale 類別: 下列常數已加入 Locale 類別: 更多訊息請參考 Java Tutorials 中的建立一個 Locale 以及 BCP 47 延伸

新的 NumericShaper 方法

NumericShaper 類別用來轉換 Latin-1 (歐洲語系) 數字到其他的 Unicode 十進位數字。在 Java SE 7 中加入了NumericShaper.Range 列舉,用來表達擁有十進位數字的字元集其 Unicode 的範圍。下列使用了 NumericShaper.Range 列舉的方法也一併加入了 Java SE 7 之中: 更多資訊請參考 Java Tutorials 中的轉換拉丁數字到其他 Unicode 數字

正規表示法 (Regular Expression) API 支援 Unicode 6.0

正規表示法模式已擴展為可支援 Unicode 6.0 匹配。你可以用 \u 或 \x 跳脫序列去匹配 Unicode 文字集 (code points)。

Java Tutorials 中的 Unicode 支援頁面有更多的資訊。

java.lang 套件

Java 程式語言

二進位數字表示法

在 Java SE 7 中,整數型態 (byteshortint 以及 long) 可表達成二進位數字系統,用 0b0B 開頭來指定二進位數字。

數值文字中的底線

在數值文字中,底線可以出現在所有數字之間。舉例來說,這項功能可以讓你在數值文字中去區分數字組,藉此增進程式碼的可讀性。

switch 指令支援字串

你可以在 switch 指令中使用 String 類別了。

泛型實體創建時的型別推論

現在可以用一個空的型別參數集 (<>) 來取代之前呼叫泛型類別的建構子時所需傳入的型別引數了,只要編譯器能從上下文中推斷該用哪些型別引數。此一角括號對被非正式地稱之為 diamond

改進了編譯器警告和錯誤訊息:在 Varargs 方法中無法實體化其形式參數時

當程式中無法實體化形式參數 (formal parameter) 時,Java SE7 編譯器會在該可變長度引數的方法和建樣子的宣告處發出警告訊息。Java SE 7 導入編譯器選項 -Xlint:varargs 和標註 @SafeVarargs 以及 @SuppressWarnings({"unchecked", "varargs"}) 來抑制這些警告。

try-with-resources 指令

此指令為宣告了一個或多個資源的 try 指令。resource 指的是在程式區段結束後必須被關閉的物件。try-with-resources 指令可確保每項資源在指令的最後都會被關閉。所有實作了 java.lang.AutoCloseable 介面和 java.io.Closeable 介面的物件皆可視為 resourcejava.io.InputStreamOutputStreamReaderWriterjava.sql.ConnectionStatement 以及 ResultSet 都已翻新去實作 java.lang.AutoCloseable 介面,並且可以在 try-with-resources 指令中使用。

抓取多種例外型別並以改進過的型別檢查來重新拋出例外

單一的 catch 區段可以處理超過一種以上的例外型別。另外和早期版本比較起來,編譯器可以更精確的分析需重新拋出的例外型別。這可以讓你在方法宣告的 throws 子句中可指定更多明確的例外型別。

Java 虛擬機器

JDBC

JDBC 4.1 加入了下列功能:

參考文章:
2011-06-15 02:46:40.654

[翻譯] JDK 7 特色中譯更新版

Update: Java SE 7 已正式釋出,詳細新功能列表請參考:Java SE 7 新功能與改進 - 0. 概觀

底下翻譯了 OpenJDK 網站上最新版的 JDK 7 Features,在正式版來臨前先一睹為快吧!


本文是 Oracle 和其他組織所開發的 JDK 7 功能列表。

下列功能將會薦舉進入 Java SE 7 Platform JSR,除了那些被列為實作特有的功能。

留言請至:jdk7-dev at openjdk.java.net

摘要

功能大致依序排列,從整個 JDK 軟體層級中的最底層一直到最高層。

分類項目
虛擬機器JSR 292:動態型別語言的支援 (InvokeDynamic)
嚴格類別檔案檢查
語言JSR 334:語言上的小改進 (Coin 專案)
核心升級類別載入器架構 (class-loader)
可關閉 URLClassLoader 的函式
並行性和容器的更新 (jsr166y)
國際化 (I18N)Unicode 6.0
Locale 的加強
區分使用者 Locale 及使用者介面 Locale
I/O 及網路JSR 203:更多 Java 平台上的全新 I/O API (NIO.2)
ZIP 及 JAR 壓縮檔的 NIO.2 檔案系統供應器
SCTP (串流控制傳輸協定)
SDP (Sockets Direct Protocol)
使用 Windows Vista IPv6 堆疊
TLS 1.2
安全性及密碼學橢圓曲線密碼學 (ECC)
資料庫連線JDBC 4.1
用戶端Java 2D 的 XRender 管線
為 6u10 圖像功能建立新的平台 API
Swing Nimbus 界面外觀
Swing JLayer 組件
Gervill 聲音合成器 [NEW]
Web更新 XML 堆疊包
管理增強的 MBeans [UPDATED]

本表中有 [NEW] 的功能已整合進 Milestone 1,但之前因文書上的失誤而未列入。另有一 [UPDATED] 功能。

曾經計劃過列入 JDK 7 但稍後卻延遲至 JDK 8 或其後版本的功能將會列在本頁最底端。

虛擬機器

JSR 292:動態型別語言的支援 (InvokeDynamic)

擴充了 JVM、Java 語言、及 Java SE API 以支援動態型別語言的實作品,可讓它們的速度直逼 Java 語言本身的效能。

規格:JSR 292java.lang.invoke
連結:專案頁面Wiki郵件清單

嚴格檔別檔案檢查

如同 Java SE 6JSR 202,以及剛批准的 JSR 924 中的維護版號規定,版本 51 (SE 7) 或之後版本的類別檔案 (class files) 必須經由型別檢查器驗證;VM 亦不能對舊的檢查器驗證失敗。

規格:JSR 202 §4.11.1

語言

JSR 334:語言上的小改進 (Coin 專案)

一些語言上的小變化,目的是為了簡化一些常見的、例行性的編程工作:switch 可使用 Stringtry-with-resources 指令、為泛型實體創建所改進的型別推論 ("diamond")、簡化多參數方法的呼叫、更好的文數字、以及改進的例外處理 (multi-catch)。

規格:JSR 334
連結:專案頁面郵件清單

核心

升級類別載入器架構 (class-loader)

修改 ClassLoader API 和實作品,以避免在非階層式類別載入器的拓撲結構中發生死結。

規格:java.lang.ClassLoaderregisterAsParallelCapablegetClassLoadingLock
連結:摘要

可關閉 URLClassLoader 的函式

提供一個方法來釋放被 URLClassLoader 所持有的潛在資源,像是已開啟的檔案。

規格:java.net.URLClassLoader.close
連結:摘要

並行性和容器的更新 (jsr166y)

一個輕量級的分岔/接合 (fork/join) 框架、彈性及可復用的同步關卡 (barrier)、傳輸佇列、並行的連結雙向 (linked double-ended) 佇列、以及本地執行緒 (thread-local) 的偽亂數產生器。

規格:java.util.concurrentForkJoinPoolPhaserTransferQueueConcurrentLinkedDequeThreadLocalRandom
連結:概觀APIWiki

國際化 (I18N)

Unicode 6.0

Unicode 的支援版本升級到 6.0。

規格:Unicode 6.0java.lang.Character

Locale 的加強

升級 java.util.Locale 以支援 IETF BCP 47 (Tags for Identifying Languages)UTR 35 (Local Data Markup Language)

規格:IETF BCP 47java.util.LocaleforLanguageTagtoLanguageTagUTR 35java.util.Locale - getUnicodeLocaleAttributesgetUnicodeLocaleTypegetUnicodeLocaleKeys
連結:概觀

區分使用者 Locale 及使用者介面 Locale

升級對區域的處理,將格式化用的 Locale 及使用者介面語言的 Locale 區分出來。

規格:java.util.LocalegetDefaultsetDefaultLocale.Category

I/O 及網路

JSR 203:更多 Java 平台上的新 I/O API (NIO.2)

新的 API,包括檔案系統存取、可調整的非同步 I/O 操作、Socket 通道綁定和組態、以及多點廣播的資料訊息 (multicast datagrams)。

規格:JSR 203
連結:專案頁面訪談談話影片java.net 文章

ZIP 及 JAR 壓縮檔的 NIO.2 檔案系統供應器

為 ZIP 及 JAR 檔提供完整功能並支援 NIO.2 檔案系統的供應器。

SCTP (串流控制傳輸協定)

Solaris 上與實作相關的串流控制傳輸協定 API。

連結:專案頁面郵件清單

SDP (Sockets Direct 協定)

Solaris 及 Linux 上與實作相關的支援。它在 Infiniband (無限寬頻) 的連線上具有可信賴且高效率的網路串流。

使用 Windows Vista IPv6 堆疊

升級網路相關的程式碼以使用 Windows Vista IPv6 堆疊,當其可用時將會優先於舊有的 Windows 堆疊。

TLS 1.2

增加對傳輸層安全性 1.2 版 (RFC 5246) 的支援。

規格:RFC 5246RFC 5289RFC 5469javax.net.sslExtendedSSLSessionSSLSocket.getHandshakeSession

安全性及密碼學

橢圓曲線密碼學 (ECC)

標準橢圓曲線密碼學演算法的可攜式實作品,使得所有 Java 應用程式都可以應用。

資料庫連線

JDBC 4.1

升級至 JDBC 4.1 及 Rowset 1.1

規格:java.sqljavax.sql.rowsetRowSetFactoryRowSetProvider

用戶端

Java 2D 的 XRender 管線

基於 X11 XRender 擴充上的新 Java2D 圖形管線,它可存取大部份現今 GPU 的功能。

為 6u10 圖像功能建立新的平台 API

為 6u10 版本中原先已實作的功能建立新的平台 API:半透明和變形視窗、重量級/輕量級混合。

規格:java.awtWindowsetShapesetQpacityComponent

Swing Nimbus 界面外觀

Swing 裡下一代跨平台的界面外觀。

規格:javax.swing.plaf.nimbus
連結:專案頁面

Swing JLayer 組件

新增 SwingLabs JXLayer 組件裝飾器至平台中。

規格:javax.swing.JLayer
連結:JXLayer 專案

Gervill 聲音合成器 [NEW]

丟棄老舊的、專有的及繁重的聲音合成器,並改用為聲音合成引擎專案 (Audio Synthesis Engine Project) 而創建並提案的 Gervill 合成器。

連結:專案頁面

Web

更新 XML 堆疊包

升級 XML 堆疊包中的組件到最新近的穩定版本: JAXP 1.4、JAXB 2.2a、和 JAX-WS 2.2。

規格:JSR 206 (JAXP)JSR 222 (JAXB)JSR 224 (JAX-WS)

管理

增強的 MBeans [UPDATED]

增強了現有的 com.sun.management MBeans,使其可報告當前整個系統的 CPU 負載、JVM 行程的 CPU 負載、以及當 GC 事件發生時送出 JMX 通知 (此功能先前包含在一個已改進過的 JMX 代理程式上,但後因缺乏時間而遭摒棄)。

規格:com.sun.managementOperatingSystemMXBeanGarbageCollectorMXBean

延遲至 JDK 8 或其後版本

JSR 294:模組編程的語言和 VM 支援

針對 Java 語言及 VM 規格的加強,使其支援模組編程,不管是編譯時期或執行時期。

規格:JSR 294
連結:郵件清單

JSR 308:Java 型別上的標註 (Annotation)

擴充了 Java 標註語法,允許它出現在每次使用型別時。

規格:JSR 308
連結:專案頁面詳細專案頁面

譯註:目前標註僅能使用在標註宣告、Package 宣告、型別宣告(包括類別、介面、列舉等宣告)、欄位宣告 (包括列舉常數宣告)、建構子宣告、方法宣告、參數宣告、和區域變數宣告上。此項改變可使得標註能出現在每次型別和型別參數出現時,以及其他地方。例如:

  • interface MyList<@ReadOnly T> {} // 型別參數
  • myStr = (@NonNull String) myObj; // 型別使用
  • List<@NonNull Integer> myList; // 型別使用
  • void read() throws @Critical IOException {} // 型別使用
  • @Readonly Document [] [] docList1 = new @Readonly Document [1][2]; // 陣列
  • Document @Readonly [] [] docList2 = new Document @Readonly [1][2]; // 陣列
  • Document [] @Readonly [] docList3 = new Document[1] @Readonly [2]; // 陣列
  • new @Interned MyObject(); // 建構子呼叫
  • public String toString() @ReadOnly { … } // 函式接收者

JSR TBD:容器的語言支援

不可變的 (immutable) 的 List、Set、和 Map 的文字運算式,以及 List 和 Map 的索引存取語法。

連結:專案頁面郵件清單

JSR TBD:Lambda 專案

提供給 Java 語言的 Lambda 表達式 (非正式地說法是 Closure)。

連結:專案頁面郵件清單

模組化 (Jigsaw 專案)

一個簡單、低階的模組系統,它側重於模組化 JDK,以及該系統的應用程式到 JDK 本身。

連結:簡介專案頁面郵件清單

JSR 296:Swing 應用程式框架

一套 API 可定義典型 Swing 程式的基本結構,從而消除許多樣板程式碼,並提供大為改善的初始開發者經驗。

連結:JSR 296

Swing JDatePicker 組件

新增 SwingLabs JXDatePicker 組件至平台中。

連結:JXDatePicker API

最後更新:2011/5/16 10:50 -0700

2010-05-14 12:42:08.062

[翻譯] PostgreSQL 9.0 Beta 1 發佈

原文:PostgreSQL News - PostgreSQL 9.0 Beta 1 Now Available


PostgreSQL 9.0 第一個 Beta 測試版現已釋出。9.0 是第一個內建即時二元資料庫應答的 PortgreSQL,它經由兩項功能ーHot standby 及 Streaming replicationー所組成的擴充查詢來達成此一目標。和本版其他的重大功能結合之後,可讓使用者擴充 PostgreSQL 的應用層面。

本版為 beta 測試版,這意味著它仍有不少臭蟲和問題,並且尚無相關文件。釋出 9.0 beta 版是為了讓我們的使用者能在最終正式版公布前,可先行發現問題並修正它們。PostgreSQL 全球發展團隊懇請所有的使用者下載並測試 9.0 版,以協助我們能及時完成更健全的版本。

9.0 版中,有多項新功能可讓開發人員和 DBA 用來擴大 PostgreSQL 的使用方式,包括:

  • 新的二元應答
  • 支援 64 位元 Windows 系統
  • 加強的 LISTEN/NOTIFY 可加快資料庫內部的事件訊息傳遞
  • 使用 DO SQL 語法來支援匿名程序
  • 條件式及相容於 SQL 語法的逐欄觸發器
  • 支援 PL/Python 中的 Python 3 和大量的 PL/Perl 改進
  • 加強支援 key-value 資料
  • 自動移除不必要的 join,為 ORM 所產生的查詢進行最佳化
超過 200 項修改的完整清單在此:release notes

喜愛嘗鮮的使用者們可先下載並測試把他們的應用程式移植到 PostgreSQL 9.0 beta 版。因為 9.0 版不但包含了許多全新的重要功能,而且也翻修了內部的程式碼,像是 PL/PgSQL 語言所允許的語法等都可向後相容。

原始碼和各平台上的安裝程式可在 PostgreSQL 網站上找到:

2010-04-30 04:07:13.156

[Linux] Ubuntu 10.04 LTS 正式版釋出

Ubuntu 10.04 LTS 已經在 4 月 29 日正式釋出,目前已可由 Get Ubuntu - Download 網頁下載。底下為 Ubuntu 10.04 LTS 功能一覽。

本文翻譯自:Ubuntu 10.04 LTS Features


瀏覽網站

Ubuntu 中包含了 Mozilla Firefox,提供快速且安全的網站瀏覽功能。您也可以從 Ubuntu 軟體中心裡選擇其他替代的開源瀏覽器。

建立專業的文件和簡報

OpenOffice.org 完全與 Microsoft Office 相容,並擁有您所需的每項工具,用來建立專業的文件、試算表和簡報。OpenOffice.org 易於使用、含概了各式功能、並且完全免費。

取得免費軟體

Ubuntu 軟體中心讓您可立即存取上千種免費的開源應用程式。包括了教育、遊戲、影音、圖像、程式設計以及辦公室等分類。這些軟體皆可輕易地尋找、安裝及移除。

電子郵件和聊天

使用 Empathy 來聊天,快速整合您的 Yahoo、Gmail、MSN、Jabber、AQL、QQ 和其他的即時通訊帳號。Evolution 郵件則提供了便利且直覺的郵件處理。

(譯註:我個人偏愛 Emesene,另外也有人推薦 Pidgin。而收信是直接用 Gmail,所以沒用過 Evolution)

一開機,就"推特"

10.04 的新功能,讓您可立即閱讀和更新社交網路狀態。新的 Ubuntu Me Menu 可直接存取您的 Facebook 和 Twitter 帳號 (還有更多)。您可連上聊天頻道,並經由單一視窗來更新您的狀態。再也沒有比這更方便的社交方式了!

即聽即買

10.04 的新功能,Ubuntu 全新的音樂播放器整合了線上商店,因此您只需點幾下滑鼠就可以購買及下載歌曲。另外感謝 Ubuntu One 檔案分享功能,讓您可將音樂儲存於線上,並經由其他電腦和音樂播放器來聆聽。Ubuntu 支援大多數音樂和媒體播放器。

欣賞、儲存和編輯相片

Ubuntu 已經為您的裝置做好了準備。只要接上您的手機和相機,就可以下載圖片到電腦中。您可以利用 F-Shot 來管理您的相片,並使用像是 Picasa、Facebook 和 Flickr 等熱門工具。您還可以從 Ubuntu 軟體中心找到免費的應用程式來進行更進階的相片編輯功能。

行動化您的數位生活!

所有 Ubuntu 使用者都可以取得一個免費的 Ubuntu One 帳號。Ubuntu One 允許您線上儲存所有種類的檔案,所以您可以從任何地方存取它們,儲存書籤、聯絡人、音樂和圖片。使用 Ubuntu One 可在任何地方取用任何資料!

製作、播放和編輯影片

從 YouTube、iPlayer 和 MSN Player 來觀賞您喜愛的所有影片內容。使用 Movie Player 來播放您的專屬影片,或用 Pitivi 來編輯它們。

快速啟動 Ubuntu

Ubuntu 在任何電腦上都可以快速開機,而在新機器上則更如虎添翼。啟動後再開啟瀏覽器僅需數秒,不像其他的作業系統一樣,讓您眼巴巴地盯著螢幕,乾等著上網。

數百種免費遊戲任君挑選

Ubuntu 軟體中心提供了上百種遊戲,包括了益智、冒險、戰略和其他種類。全部都免費任選、免費使用。

親和性

Ubuntu 哲學的核心信念是為所有人提供電腦技術,並且應該要免費及全面,無論您的經濟能力或生理條件。Ubuntu 是最具親和力的桌面作業系統。

相關連結:

2010-04-28 23:02:58.031

[Linux] Ubuntu 10.04 正式版即將釋出

再過兩天,Ubuntu 10.04 LTS 版就開放下載了,其中加入了數項令人振奮的新功能。底下文章摘錄並翻譯自 http://www.ubuntu.com/getubuntu/releasenotes/1004overview


Gnome

Ubuntu 10.04 LTS RC 中加入了最新的 GNOME 桌面環境,它包含了許多重大的新功能。

Linux kernel 2.6.32

Ubuntu 10.04 LTS RC 中加入了基於 2.6.32.11 版來開發的 2.6.32-21.32 版核心

KDE SC 4.4

Kubuntu 10.04 LTS RC 的特色主要是 KDE SC 4.4。有關 Kubuntu 中更多新功能的資訊,請參見 Kubuntu 技術概觀

移除 HAL (硬體抽象層)

此版本將 HAL 從開機程序中完全移除,這使得 Ubuntu 開機更快,並且可更快地從休眠中回復。

likewise-open 的主要新版

提供 Linux 上 Active Directory 認證和伺服器支援的 likewise-open 套件已更新至 5.4 版。本套件可將原官方支援的 4.0 版 (Ubuntu 8.04 LTS) 及 4.1 版 (Ubuntu 9.10) 升級到新版。

此次改版涉及了許多組態檔的修改和內置資料庫的升級,因此我們很感謝您的測試和回報。

(譯註:Likewise Open 可執行在 Linux、Unix 和 Mac OS 中,用於和 Windows Active Directory 伺服器互動。)

新的 nVidia 硬體預設開源驅動程式

Nouveau 現已成為 nVidia 硬體預設的影像驅動程式。它提供了核心模式設定,可增進螢幕解析度的偵測功能,同時亦提供硬體 2D 加速,如同它所取代的 -nv 驅動程式一樣。Nouveau 驅動現已在積極開發中,我們預料這將會加快臭蟲修正的速度。

nVidia 專利圖像驅動程式的增進功能

現已開放了三項不同的 nVidia 專利驅動程式:nvidia-current (190.53)、nvidia-173 和 nvidia-96。感謝新的替代選擇系統,它讓我們可以同時安裝這三個套件 (當然每次都只能使用其中一項組態設定)。

(譯註:分別是 190.53、173.14.22、以及 96.43.14 版)

一開機,就"種田"!(Social from the Start)

我們現已內建整合了 Twitter、identi.ca、Facebook 和其他社交網站到 MeMenu 面板中,它的後端是全新功能、更加可靠的 Gwibber 專案。Gwibber 現已支援 multi-column view 以同時監測多個消息來源。

全新的開機體驗

多項修改已囊括到 Ubuntu 10.04 LTS RC 版之中,讓你在外觀、感受和速度上有全新體驗。

新的指示器

通知區域 (右上方程式列) 在通訊、連線管理和其他許多工作上,都保持了更一致的使用者體驗和設計。本項改變的更多相關資訊請參見程式指示器

新的佈景主題

桌面使用了兩項佈景主題加以美化:氛圍 (Ambiance) 和 光輝 (Radiance)。新的桌布和圖示也已含括在內。

Ubuntu One 檔案同步

您可選擇家目錄下的任何資料夾來進行同步,並可挑選您的連絡人來分享它們。我們並加入了有著更多功能的偏好設定程式。

Ubuntu One 音樂商店

數以百萬計的歌曲現可經由您的 Ubuntu 來選購,並整合進 Rhythmbox 音樂播放器,以及使用 Ubuntu One 雲端儲存媒體來備份及同步。

Ubuntu 企業雲端 (UEC) 的新功能

為支援數項可選的安裝拓撲架構,Ubuntu 企業雲端的安裝程式已大幅改善。UEC 組件現可自動檢測和註冊,包括幾種複雜的拓撲架構。最後,UEC 現在使用的是 Eucalyptus 1.6.2 版。

相關新聞: Ubuntu 10.04 LTS桌機版釋出 加入雲端服務

2010-04-25 01:54:11.171

[翻譯] JDK 7 特色中譯

Update: 新版請參見 - [翻譯] JDK 7 特色中譯更新版

時序已來到 2010 年,距離發佈 JDK 7 的時間越來越近。預計今年秋季釋出的 JDK 7 正式版中到底有哪些新功能呢?底下翻譯了 OpenJDK 網站上所公佈的 JDK 7 Features,在正式版來臨前先一睹為快吧!


本文是 Oracle 和其他組織為 JDK 7 所開發的功能列表。

當 Java SE 7 平台的 JSR 送交時,這些功能會在其中被薦舉,除了那些列為 VM 層級或與實作相關的功能。

摘要

功能大致依序排列,從整體 JDK 中的最底層到最高層。

分類項目
虛擬機器64 位元物件指標壓縮
垃圾優先的 GC (G1)
JSR 292:非 Java 語言的 VM 支援 (InvokeDynamic)
語言JSR 294:模組編程的語言和 VM 支援
JSR 308:Java 型別上的標註 (Annotation)
JSR TBD:語言的小改進 (Coin 專案)
JSR TBD:Lambda 專案
核心模組化 (Jigsaw 專案)
升級類別載入器架構 (class-loader)
可關閉 URLClassLoader 的函式
Unicode 5.1
並行性和容器的更新
JSR 203:更多 Java 平台上的新 I/O API (NIO.2)
SCTP (串流控制傳輸協定)
SDP (Sockets Direct Protocol)
橢圓曲線密碼學 (ECC)
客戶端Java 2D 的 XRender 管線
6u10 部署功能
為 6u10 圖像功能建立新的平台 API
Swing Nimbus 界面外觀
Swing JLayer 組件
Web更新 XML 堆

曾經計劃過但稍後卻被摒棄的功能會列在本頁最底端。

虛擬機器

64 位元物件指標壓縮

將 64 位元指標壓縮成 32 位元的技術,可減少記憶體和其頻寬的耗用,從而增進整體效能 (VM 層級的功能)。

連結:Wiki

垃圾優先的 GC (G1)

新的垃圾收集器。它保証會比現有的 CMS 收集器還花費更少的暫停時間,以及擁有更佳的可預測性 (VM 層級的功能)。

連結:ISMM 2004 paper摘要

JSR 292:非 Java 語言的 VM 支援 (InvokeDynamic)

VM 支援非 Java 語言的實作品,可讓它們的效能直逼 Java 語言本身的效能。

連結:JSR 292專案頁面Wiki郵件清單

語言

JSR 294:模組編程的語言和 VM 支援

針對 Java 語言及 VM 規格的加強,使其支援模組編程,不管是編譯時期或執行時期。

連結:JSR 294郵件清單

JSR 308:Java 型別上的標註 (Annotation)

擴充了 Java 標註語法,允許它出現在每次使用型別時。

連結:JSR 308專案頁面詳細專案頁面

譯註:目前標註僅能使用在標註宣告、Package 宣告、型別宣告(包括類別、介面、列舉等宣告)、欄位宣告 (包括列舉常數宣告)、建構子宣告、方法宣告、參數宣告、和區域變數宣告上。此項改變可使得標註能出現在每次型別和型別參數出現時,以及其他地方。例如:

  • interface MyList<@ReadOnly T> {} // 型別參數
  • myStr = (@NonNull String) myObj; // 型別使用
  • List<@NonNull Integer> myList; // 型別使用
  • void read() throws @Critical IOException {} // 型別使用
  • @Readonly Document [] [] docList1 = new @Readonly Document [1][2]; // 陣列
  • Document @Readonly [] [] docList2 = new Document @Readonly [1][2]; // 陣列
  • Document [] @Readonly [] docList3 = new Document[1] @Readonly [2]; // 陣列
  • new @Interned MyObject(); // 建構子呼叫
  • public String toString() @ReadOnly { … } // 函式接收者

JSR TBD:語言的小改進 (Coin 專案)

一些語言上的小變化,目的是為了簡化一些常見的、例行性的編程工作。

連結:專案頁面郵件清單

JSR TBD:Lambda 專案

提供給 Java 語言的一級函式、函式型別和 Lambda 表達式 (非正式地說法是 Closure)。

連結:專案頁面郵件清單

核心

模組化 (Jigsaw 專案)

一個與實作相關、簡單、低階的模組系統,它側重於模組化 JDK,以及該系統的應用程式到 JDK 本身。

連結:簡介專案頁面郵件清單

升級類別載入器架構 (class-loader)

修改 ClassLoader API 和實作品,以避免在非階層式類別載入器的拓撲結構中發生死結。

連結:摘要

可關閉 URLClassLoader 的函式

提供一個方法來釋放被 URLClassLoader 所持有的潛在資源,像是已開啟的檔案。

連結:摘要API

Unicode 5.1

Unicode 的支援版本升級到 5.1。

並行性和容器的更新

一個輕量級的分岔/接合框架、一般化的關卡 (barrier) 和佇列、一個並行性參考的 (concurrent-reference) HashMap、和可控制細粒度讀寫順序的柵欄。

連結:概觀APIWiki

JSR 203:更多 Java 平台上的新 I/O API (NIO.2)

新的 API,包括檔案系統存取、可調整的非同步 I/O 操作、Socket 通道綁定和組態、以及多點廣播的資料訊息 (multicast datagrams)。

連結:JSR 203專案頁面訪談談話影片java.net 文章

SCTP (串流控制傳輸協定)

Solaris 上一套與實作相關的串流控制傳輸協定 API。

連結:專案頁面郵件清單

SDP (Sockets Direct 協定)

Solaris 上一套與實作相關的 Sockets Direct 協定 API。

橢圓曲線密碼學 (ECC)

標準橢圓曲線密碼學演算法的可攜式實作品,使得所有 Java 應用程式都可以應用。

客戶端

Java 2D 的 XRender 管線

基於 X11 XRender 擴充上的新 Java2D 圖形管線,它可存取大部份現今 GPU 的功能。

6u10 部署功能

從 6u10 版本而來的實作相關部署功能:新的 Java Plug-in、Java 核心、Java Quick Starter、和相關的安裝程式功能。

為 6u10 圖像功能建立新的平台 API

為 6u10 版本中原先已實作的功能建立新的平台 API:半透明和變形視窗、重量級/輕量級混合、以及增強的 AWT 安全性警示。

Swing Nimbus 界面外觀

Swing 裡下一代跨平台的界面外觀。

連結:專案頁面

Swing JLayer 組件

新增 SwingLabs JXLayer 組件裝飾器至平台中。

連結:JXLayer 專案

Web

更新 XML 堆

升級 JAXP、JAXB、和 JAX-WS API 到最新近的穩定版本。

已摒棄

JSR 296:Swing 應用程式框架

一套 API 可定義典型 Swing 程式的基本結構,從而消除許多樣板程式碼,並提供大為改善的初始開發者經驗。

連結:JSR 296

Swing JDatePicker 組件

新增 SwingLabs JXDatePicker 組件至平台中。

連結:JXDatePicker API

最後更新:2010/2/9 13:31 -0800

2010-03-03 20:33:48.921

Ubuntu 9.10 短篇調校教學系列 - 6. 安裝 FileZilla FTP 軟體

Ubuntu 本身有提供簡單的 FTP 連線方式,使用方式是左上方選單的「位置」/「連接到伺服器」選項:

Screenshot-install-filezilla-0.png

在這邊我們簡介一款好用的跨平台 FTP 連線軟體 FileZilla,安裝容易且方便使用,目前是 3.3.2 版:
Screenshot-install-filezilla-1.png

1.開啟「終端機」,執行下列指令:

sudo apt-get install filezilla
Screenshot-install-filezilla-2.png

2.按「y」來完成安裝:
Screenshot-install-filezilla-3.png

3.執行 FileZilla 的路徑為「應用程式」/「網際網路」/「FileZilla」:
Screenshot-install-filezilla-4.png