JLS、JSR 和 JEP 之间有什么区别(或关系)?

What is the difference (or relation) between JLS, JSR and JEP?

这三者有什么区别(或联系)?

有些人认为这只是单词意思的问题。我认为不仅如此,但让我们从文字开始。

在一般情况下:

  • 规范指定(或定义)某物的文档。
  • 请求 是要求某事的声明(书面或口头)。
  • 提案 是一份声明(书面或口头)提出要考虑的事项。

如您所见,这些词本身的简单英语含义并没有多大帮助。我们需要更多的上下文。在这种情况下,上下文在您链接到的页面中。

Java 语言规范,JLS

这是 Java 语言的规范。 JLS 指定了 Java 编程语言的语法和其他说明什么是或不是有效 Java 程序的规则。它还指定程序的含义;即当你 运行 一个(有效的)程序时会发生什么。

Java 规范请求,JSR

JSR 是作为 Java 社区流程 (JCP) 的一部分创建的文档,它为一组人员制定新规范设定了范围。这些规范 (AFAIK) 总是 Java 相关,但它们经常解决不会成为核心 Java SE 或 Java EE 技术的问题。一个典型的JSR的主题material是一个比较成熟的技术;即处于可以指定的状态。 (如果你过早地尝试制定规范,那么你通常会得到一个糟糕的规范。其他因素也可能导致这种情况。)

Java 增强建议,JEP

JEP 是一个提议增强 Java 核心技术的文档。这些提案通常用于尚未准备好指定的增强功能。正如 JEP-0 文件所述,JEP 可能 呼吁探索新颖(甚至“古怪”)的想法。一般来说,原型设计需要将可行和不可行的想法分开,并明确到可以产生规范的程度。

所以JEP、JSR和规范之间的关系是这样的:

  1. JEP 提出并发展实验性想法,以至于 可以 被指定。并非所有 JEP 都能实现。

  2. JSR 采用成熟的想法(例如来自 JEP),并产生新的规范或对现有规范的修改。并非所有的 JSR 都能实现。

  3. 规范是 JSR 的常见工作产品。 (其他包括接口源代码和参考实现。)JLS 是规范的示例。其他还有JVM规范、Servlet和JSP规范、EJB规范等等。