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模块图形具有太多边缘,无法以视觉形式轻松显示; 这里是有向无环图的传递约简,其中省略了冗余边:
JavaSE 12 规范草案_第1张图片
以下是如何阅读模块图:

如果一个模块依赖于另一个模块,并且它通过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…

你可能感兴趣的:(日常,Java基础修行)