【问题标题】:What is the status of JSR 305?JSR 305 的状态如何?
【发布时间】:2011-01-18 09:10:47
【问题描述】:

我看到了JSR305 vs. JSR308 (Java Type Anotations) - Which is going to be the standard? 的问题,我理解JSR 308JSR 305 之间的区别。

我也明白了,这个时候Java 7 308 是预定的,305 不是,我很好奇305 的整体状态。

具体来说,我在我的一些项目中使用Google CollectionsJSR-305(以类似于one of the Guice best practices advocates 的方式)并且想知道我是否应该使用更“未来方向”友好的方法反而。我也打算在 JSR-305 小组上询问这个问题,但该小组没有太多活动,我只是想知道这里是否有人有更多信息。

【问题讨论】:

  • 我会接受你离开 Kevin 的答案,但我在那些文章中找不到明确表示它们将在 Java 7 中的位置,或者不是? (并且在实际发布问题之前,我已经简要地查看了该信息。)您是否在其中看到具体提及他们包括在内(如您的回答中所示)?提前感谢您的帮助。
  • 经过这么长时间,以及一些其他努力弄清楚到底发生了什么,我授予最佳答案,唯一的答案,“答案”的区别。 ;)
  • Mark Reinhold recently commented on another SO post that “JSR 305,它本来可以标准化 javax.annotation.NonNull,因为它的规范领导退出了,所以从未完成。”

标签: java jsr305


【解决方案1】:

正如answer 中所述,JSR-305 提出了新的注解,例如@NonNull,而JSR-308 提出允许在新的地方注解,例如泛型声明。

引用JSR 308页面:

…本文档不提出任何注释,只是指定它们可以出现在 Java 代码中的什么位置。

JSR 308(新位置的注释)包含在java 8 中的JEP 104 下。

截至 2017 年,JSR 305(新注解)继续保持“休眠”的官方状态。自 2010 年以来,关于它在 google 群组中的状态的 question 一直没有得到答复。

有一个 JSR-305 注释 here 的参考实现,它被许多项目使用,包括番石榴。使用 maven,您可以通过将其添加到您的 pom 中来使用 JSR-305 参考实现:

<dependency>
    <groupId>com.google.code.findbugs</groupId>
    <artifactId>jsr305</artifactId>
    <version>3.0.0</version>
</dependency>

【讨论】:

  • 链接到com.google.code.findbugs:jsr305 on maven central(最新版本现在是3.0.0)
  • 您可以使用与findbugs-maven-plugin(来自org.codehaus.mojo)相同的版本来同步两者。
  • Java 9 功能完整但尚未发布,看起来好像没有包含 JSR-305。是否有另一个 JSR 添加了类似的注释?
【解决方案2】:

JSR 305 不会成为 Java 8 的一部分:

【讨论】:

【解决方案3】:

JSR 337 描述了 Java 8:规范已达到最终状态:see here

  • JSR 308 肯定在
  • JSR 305 肯定出局了

【讨论】:

    【解决方案4】:

    如果您担心可空性注释,那么我建议您使用 SpotBugs 项目从 edu.umd.cs.findbugs.annotations 命名空间提供的注释。如今,大多数 linter 或 IDE 都应该支持它。它不如 JSR 305 中提议的 javax.annotation 好,但请记住,JSR 305 从未获得批准,实际上没有带类的 jar 文件附加到 JSR 305 提议中。

    关于这个的更多有趣的文章:

    JSR 305 与 JSR 308

    JSR 305 和 JSR 308 之间几乎没有任何关系。JSR 308 是关于将注释应用于泛型(java 类型参数)的能力。 JSR 308 已合并为 Java SE 8 的一部分。

    唯一的链接是两个 JSR 都与两个不同的项目(FindBugs 和 Checker Framework)相关,这两个项目涉及空安全性和可空性注释主题。

    从内容来看,JSR 没有任何关系。

    【讨论】:

      【解决方案5】:

      据 Alex Millers Java 7 blog 称,JSR-308(和 305)计划进入 Java 7。也许他会出现在这里并为您提供更多信息。

      【讨论】:

      • 都没有进入 Java 7。
      • JSR308 将在 Java 8 中使用,但(2013 年 3 月)JSR 305 仍处于休眠状态。
      猜你喜欢
      • 1970-01-01
      • 2016-10-02
      • 1970-01-01
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      相关资源
      最近更新 更多