Sun的Java包命名约定:sun vs. com.sun

在JRE中,Sun的内部包以2个顶级域(sun和com)为前缀。 例如,

com.sun.security.jgss sun.security.jgss 

对我来说,他们选择的前缀似乎很随机。 我很好奇Sun使用什么规则。

“com.sun”约定是更优选的格式,因为它遵循为命名Java包而建立的“命名约定”。

http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html

您应该使用您的唯一公司或个人网站URL作为包中的前几个单词,以保证名称空间中的唯一性。 那些以“太阳”开头的人可能并不打算暴露在外面。

不是问题的答案,但请注意,您不应直接在程序中使用“sun”或“com.sun”软件包。

了解为什么开发人员不应该编写调用’sun’软件包的程序

这些包不是标准Java库的公共API的一部分,使用它们可能会使您的程序与Java的未来版本或除Sun实现之外的Java实现不兼容(并且其他供应商有几种实现,包括Apple, IBM和HP)。

如果您看一下Java 5的兼容性文档,您会发现还有其他原因:

Apache – org.apache类,从未被J2SE API支持但由javax.xml包使用,已经在5.0中移动到** com.sun。** org.apache.package.internal以便它们赢得’与最近的开发人员下载的类版本发生冲突。
依赖于作为J2SE版本一部分的org.apache类的任何应用程序必须执行以下操作之一才能在5.0中工作:
*对应用程序进行编码,使其仅使用作为JAXP一部分的受支持接口。
*从Apache下载org.apache.xalan类。