软件包com.sun.net.httpserver是否标准?

时间:2019-11-08 10:23:57

标签: java

我想了解软件包com.sun.net.httpserver是标准的并且是所有Java实现所必需的还是仅特定于OpenJDK?我检查过,甚至OpenJDK 13都包含它,并且自Java 6起就存在。这些类的文档是公共的,因此它看起来像官方的,但它的包名称看起来像专有的。

2 个答案:

答案 0 :(得分:4)

现在显然是公共API。从Java 13开始,有一个模块(jdk.httpserver)可以导出com.sun.net.httpservercom.sun.net.httpserver.spi包以及17个公共类。

javadocs已发布(https://docs.oracle.com/en/java/javase/13/docs/api/jdk.httpserver/com/sun/net/httpserver/package-summary.html),并且在软件包摘要中没有明显的警告说明这些API仅供内部使用。

尽管jdk.httpserver是标准化的,但不能保证它在所有(Java 11+)Java SE实现中都存在。正如Overview页面所说:

  

该文档分为两个部分:

     

Java SE:Java平台标准版(Java SE)API定义了用于通用计算的核心Java平台。 这些API位于名称以java开头的模块中。

     

JDK:Java开发套件(JDK)API是JDK特有的,不一定在Java SE Platform的所有实现中都可用。 这些API位于名称以jdk开头的模块中。

我们正在讨论的模块属于第二类。


Java 9+模块及其关联的显式可见性控制机制讨论了关于com.sun.*等的旧的(不一致的)包名称约定。

答案 1 :(得分:1)

按照惯例,在Java SE 9平台规范中未定义但特定于JDK的模块将共享“ jdk”。名称前缀。

来源:The State of the Module System / Platform Modules

这意味着它可以在完整的JDK发行版中使用,但是在使用模块(带有或不带有jlink)时,您必须在module-info.java中要求它。