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

时间:2009-08-26 00:32:11

标签: java naming-conventions packages

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

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

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

3 个答案:

答案 0 :(得分:10)

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

请参阅Why Developers Should Not Write Programs That Call 'sun' Packages

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

答案 1 :(得分:7)

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

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

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

答案 2 :(得分:1)

如果你看一眼compatibility document for Java 5,你会注意到还有其他原因:

  

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