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