JavaSE 12 規範草案

JSR 386 – JavaSE 12 規範草案

吐槽

自從 Java 9 開始,JCP 開始了6個月一個大版本的更新…
作爲一名 Java 工程師,我心裏簡直 ---- 喵喵喵(此處含有屏蔽字段)
上個月正式發佈了 Java 11, 並開始進行日常 18 個月的安全以及補充更新維護,並提出了 Java 12 的早期版本的規範草案,也就是差不多 6 個月後,Java 12 就發佈了… 並且代碼實現會遵循以下規範
(喵的,從6 - 8是便祕,9之後就直接需要瀉立停了啊ヾ(。`Д´。)ノ彡)

--------------------------------------------------------------------------------------------

下面是 JSR 386 的一部分

Java SE 12 (JSR 386)

JavaSE 12 規範草案
—— 由 Iris Clark,Brian Goetz 起草 (兩位Java語言架構師)
版權所有©2018 Oracle和/或其附屬公司·保留所有權利· 許可
本規範定義了Java平臺標準版的第12版。

目錄

  • 1 概要
  • 2 組織結構
  • 3 定義
  • 4 JSR組件規範
  • 5 特徵
  • 6 模塊 module
  • 7 提議刪除的API @deprecated
附件
  • A1 完整的API規範 (此處暫不提供)
  • A2 API規範的差異 (此處暫不提供)
  • A3 Java語言和虛擬機規範 (此處暫不提供)

正文

1.概要

此版本繼續推動平臺的發展,以確保核心Java技術取得最廣泛的成功。它包含語言預覽功能,可根據實際使用情況激發開發人員的反饋。

2.組織結構

本文檔直接指定API功能,增強功能,說明和錯誤修復。它還通過參考現有JSR的維護版本中修訂的其他規範來指定功能。這些更改的規範包含在兩個附帶的文檔中:附件1是完整的Java SE 12 API規範, 附件2是帶註釋的API規範,顯示了與Java SE 11相關的確切差異。這些更改可以在此版本的已批准的變更規範請求列表中進行查閱。

該規範包括了Java SE 12 Java語言規範Java虛擬機規範 (見附件3)。Java SE 12 版本包含自Java SE 11 版本以來所做的所有更正和說明,以及新功能的補充。

預計本規範的最終版本將包括所有當前描述的功能和更新; 但是,可能會有進一步的變化。例如,專家組認爲某個功能尚未準備好進行標準化。

3.定義

對Java SE平臺規範的更改分爲 功能增強功能。一個特點是,粗略地講,改變它的下列說法中至少有一個爲真:

它需要兩週或更長時間的開發工作來設計和實施,
這是一個值得廣泛關注的重大變革,或
它受到Java社區的高度需求。
任何不是功能的添加都被視爲 增強功能。

在解釋這個定義時,顯然有一定的解釋空間。爲了最大限度地提高平臺修訂版的可見性,我們通常傾向於將邊界項視爲要素而不是增強功能。

4.組件JSR規範(11版本之前,一些JSR定義的組件)

之前納入平臺的某些 組件JSR規範 仍可單獨使用或其本身就是十分重要的規範標準。因此,對它的更改將在單獨的維護版本中進行。以下現有組件可能具有維護版本。如有必要,這些內容將在本規範的最終版本之前以引用方式合併:

JSR 114: JDBC行集實現
JSR 199: Java編譯器API
JSR 221: JDBC API
JSR 269: 可插入註釋處理API
每個組件JSR規範或其修訂版可以與下面的詳細列表中的一個或多個特徵相關。

5.特徵

Java SE 12參考實現(Java Development Kit,版本12(JDK 12))中的功能的工作是根據JDK增強建議(JEP)組織制定的。由於功能是“目標(里程碑)”,它們將出現在本規範中。

6.模塊 (Module)

一個模塊是一組命名的設計重用包。由JCP管理的規範來定義標準包,並且可以將它們分組爲一個或多個標準模塊。

本規範將Java SE平臺的標準軟件(原Java源代碼)包分爲21個標準模塊,我們將其稱爲Java SE模塊。Java SE模塊的名稱始終以字符串“java”開頭 。。這些模塊的完整列表是:

java.base
java.compiler
java.datatransfer
java.desktop
java.instrument
java.logging
java.management java.management.rmi
java.naming
java.net.http
java.prefs
java.rmi
java.scripting
java.se(aggregator)
java.security.jgss
java.security.sasl
java.sql
java.sql.rowset
java.transaction.xa
java.xml
java.xml.crypto
與Java SE 11相比,本規範不添加或刪除任何模塊。

模塊圖 Java SE模塊如其規範中所述相互依賴,這些規範是整個API規範的一部分。相應的完整Java SE模塊圖形具有太多邊緣,無法以視覺形式輕鬆顯示; 這裏是有向無環圖的傳遞約簡,其中省略了冗餘邊:
在這裏插入圖片描述
以下是如何閱讀模塊圖:

如果一個模塊依賴於另一個模塊,並且它通過require傳遞指令賦予該模塊隱含的可讀性,則從第一個模塊到第二個模塊存在邊緣。

最底層是java.base模塊,它包含基本類,如java.lang.Object和 java.lang.String。基本模塊不依賴於任何模塊,並且每個其他模塊都依賴於基本模塊。

頂部是java.se模塊,它彙集了構成Java SE平臺的所有模塊。這是聚合器模塊的一個示例,它通過向其提供隱含的可讀性來邏輯地收集其他模塊的內容,但不添加自己的內容。配置爲包含java.se模塊的運行時系統將包含Java SE Platform的所有包。

模塊是Java SE模塊 - 即被視爲Java SE平臺規範的一部分 - 當且僅當它是可從java.se模塊訪問的標準模塊時。

本規範通過Java SE 9平臺規範(JSR 379), “模塊”引用包含以下小節:

  • Java SE模塊的約束
  • 對實現中所有模塊的約束
  • 放鬆強大的封裝
  • 覆蓋模塊聲明
  • 可升級的模塊
7.提議刪除的API (@deprecated)

建議通過Java SE 9,10或11平臺規範刪除以下API,並且在將來的版本中繼續有資格刪除。但是它們不會在本規範中被刪除。


java.security.acl(1.1版本的了…終於捨得刪了)

接口
java.security.acl.Acl(10)
java.security.acl.AclEntry(10)
java.security.acl.Group(10)
java.security.acl.Owner(10)
java.security.acl.Permission(10)
java.util.jar.Pack200.Packer(11)
java.util.jar.Pack200.Unpacker(11)


java.lang.Compiler(9)
java.security.Certificate(10)
java.security.Identity(10)
java.security.IdentityScope(10)
java.security.Signer(10)
java.util.jar.Pack200(emmm … Java提供的一個打包服務)

異常
java.security.acl.AclNotFoundException(10)
java.security.acl.LastOwnerException(10)
java.security.acl.NotOwnerException(10)

常量
javax.management.remote.rmi.RMIConnectorServer.CREDENTIAL_TYPES
小聲BB:標記了好幾個版本了,啥時候刪啊

方法
java.io.FileInputStream.finalize(10)
java.io.FileOutputStream.finalize(10)
java.lang.Runtime.traceInstructions(9)
java.lang.Runtime.traceMethodCalls(9)
java.lang.Thread.countStackFrames(9)
java.util.zip.Deflater.finalize(10)
java.util.zip.Inflater.finalize(10)
java.util.zip.ZipFile.finalize(10)

(小聲BB : Java要大改對 Zip 提供的支持啊,不過話說無論是 Apache.common3 還是 Guava, 對 Zip 的支持都要強於 Java 自己提供的這套工具,刪了就刪了吧,反正不心疼)

有關棄用的其他詳細信息(包括潛在的替代方案)可以在API規範的棄用API列表中找到。強烈建議遠離棄用的API。

後記

按照現有規範來看,Java 12 與 Java 11 版本並沒有過大的區別,感覺 Java 11 的變動好像更大: Java 11 刪除了 Java 10 的7個模塊並新增了兩個模塊 事務(java.transaction.xa)網絡(java.net.http)、確定了新的垃圾收集器(G1還沒火就 GG 了, ZGC偷笑嘿嘿嘿)、 還提供了更好的安全協議(以上內容來自 JSR 384)。
當然了,也有這個規範是剛剛起草的原因,隨着後續的開發以及社區的反饋,此規範也會逐漸增加或者刪除某些內容,然後 6 個月後 Java 12 面世ヽ(`Д´)ノ︵ ┻━┻ ┻━┻

小聲 BB

反正我沒看到有將 Java 10 或以後版本用於生產環境的開發中,大部分還是 Java 7/8, 部分傳統軟件企業的 Java 6…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章