【发布时间】:2010-11-22 20:06:34
【问题描述】:
在 JRE 中,Sun 的内部包以 2 个顶级域(sun 和 com)为前缀。例如,
com.sun.security.jgss
sun.security.jgss
他们选择哪个前缀对我来说似乎很随机。我很好奇 Sun 对此使用了什么规则。
【问题讨论】:
标签: java naming-conventions packages
在 JRE 中,Sun 的内部包以 2 个顶级域(sun 和 com)为前缀。例如,
com.sun.security.jgss
sun.security.jgss
他们选择哪个前缀对我来说似乎很随机。我很好奇 Sun 对此使用了什么规则。
【问题讨论】:
标签: java naming-conventions packages
不是问题的答案,但请注意,您不应直接在程序中使用“sun”或“com.sun”包。
见Why Developers Should Not Write Programs That Call 'sun' Packages
这些包不是标准 Java 库的公共 API 的一部分,使用它们可能会使您的程序与 Java 的未来版本或 Sun 实现以外的 Java 实现不兼容(并且其他供应商有几种实现,包括 Apple、IBM 和 HP)。
【讨论】:
如果您看一眼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 类。
【讨论】:
“com.sun”约定是更可取的格式,因为它遵循为命名 Java 包而建立的“命名约定”。
http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html
您应该使用您唯一的公司或个人网站 URL 作为包中的前几个词,以保证命名空间中的唯一性。以“sun”开头的可能不打算暴露在外面的世界。
【讨论】: