JSR 305的状态是什么?

时间:2010-02-18 15:23:01

标签: java jsr305

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

我也明白,在这个时候,308是针对Java 7的,而305则不是,我很好奇305的整体状态。

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

5 个答案:

答案 0 :(得分:62)

如此answer中所述,JSR-305提出了新的注释,例如@NonNull,而JSR-308建议允许在新地方进行注释,例如通用声明。

引用JSR 308页面:

  

...本文档未提出任何注释,仅指定它们在Java代码中的显示位置。

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

截至2017年,JSR 305(新注释)继续具有“休眠”的官方身份。自2010年以来,关于它在谷歌群组中的状态的question未得到回复。

JSR-305注释here的参考实现被许多项目使用,包括番石榴。使用maven,您可以使用JSR-305参考实现,将其添加到您的pom,

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

答案 1 :(得分:18)

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

答案 2 :(得分:9)

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

  • JSR 308绝对是
  • JSR 305绝对是

答案 3 :(得分:4)

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

关于此的一些更有趣的文章:

JSR 305 与 JSR 308

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

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

根据内容,JSR 没有任何关联。

答案 4 :(得分:1)

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