单个 JSR,多个 API 版本

Single JSR, multiple API versions

许多规范为 API 的不同版本定义了不同的 JSR,例如对于 Java Servlet 规范:

 -------------------------------
|Servlet spec version |   JSR   |
 -------------------------------
|     4.0             |   369   |
|     3.1             |   340   |
|     3.0             |   315   |
|     ...             |   ...   |   
 -------------------------------

然而,在其他情况下,API 的多个版本由同一个 JSR 处理。 例如 JavaMail 有 6 个 API 版本 - 从 1.1 到 1.6,全部通过 JSR 919 定义。

尝试下载规范时,只能下载 1.5 版本(一个用于评估,另一个用于实施)(文件名为 JavaMail-1.5.pdf).如果我想阅读1.6版或实现1.2版,我运气不好。

规范的旧版本会作为流程的一部分被丢弃吗?

在这种特殊情况下,有一个 1.6 实现,但只有 1.5 规范可以访问 public。 public 中是否隐藏了文件?

与创建全新的 JSR 相比,如何决定留在同一个 JSR 中?做出该决定的过程是怎样的?我可以投票吗?

您必须是 JCP(Java 社区进程)的成员才能为 JSR 提出建议。成为会员意味着要支付一些年费。 JSR-913 解释了 JCP 规则。

JCP定义了几种类型的成员(摘自JCP):

  • 准会员:可以为 JSR 做出贡献并为执行委员会投票的个人。

  • 合作伙伴成员:Java 用户组和其他 non-profit 可以在执行委员会任职并投票的组织。

  • 正式成员:可以在专家组任职,领导 JSR,在执行委员会任职并投票。

此处提供了解释如何加入 JCP 的图表:https://jcp.org/aboutJava/communityprocess/final/jsr364/JCP_Joining_Process_v11.pdf

JavaMail 1.6 将在完全完成后可用。正如您在 JCP.org 站点 (https://jcp.org/aboutJava/communityprocess/maintenance/jsr919/JavaMail-1.6-changes.txt) 上发布的纯文本文档中所见,他们在未来谈论它 (!!!):

在这个页面上,今天(2017 年 8 月 17 日)可用,他们说得好像他们在未来一个多星期后写了从 JavaMail 1.5 到 JavaMail 1.6 的变更日志.文档开头为:

JavaMail 1.6
============
(Updated August 28, 2017)
Following is a description of the changes to the JavaMail
API introduced in JavaMail 1.6.  The numbers in parentheses
are bug numbers; you can find more information about the
bug reports at:
https://jcp.org/aboutJava/communityprocess/maintenance/jsr919/JavaMail-1.6-changes.txt

此外,HTTP headers 说它已于 2017 年 5 月 23 日发布!奇怪...

使用 Java 规范,问题与 JSR 可用性无关。它们与 TCK 和 JCK 可用性相关联。总而言之,如果没有通过 TCK/JCK 中描述的所有测试,您不能说您的 JSR 实现确实是此 JSR 的 Java 实现。而且这些文件并不是系统地免费提供的。而且即使你准备付钱给 Oracle 来获得那些文件,Oracle 也不会被迫接受。 这很奇怪,但 Oracle 拥有 Java IP 和商标,所以你必须同意 Oracle 的使用条款。