我想了解软件包com.sun.net.httpserver
是标准的并且是所有Java实现所必需的还是仅特定于OpenJDK?我检查过,甚至OpenJDK 13都包含它,并且自Java 6起就存在。这些类的文档是公共的,因此它看起来像官方的,但它的包名称看起来像专有的。
答案 0 :(得分:4)
现在显然是公共API。从Java 13开始,有一个模块(jdk.httpserver)可以导出com.sun.net.httpserver
和com.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
中要求它。