太阳';s Java包命名约定:sun vs.com.sun

太阳';s Java包命名约定:sun vs.com.sun,java,naming-conventions,packages,Java,Naming Conventions,Packages,在JRE中,Sun的内部包以两个顶级域(Sun和com)作为前缀。比如说, com.sun.security.jgss sun.security.jgss 对我来说,他们选择哪个前缀似乎很随机。我很好奇Sun使用了什么规则。更可取的格式是“com.Sun”约定,因为它遵循了为命名Java包而建立的“命名约定” 您应该使用您独特的公司或个人网站URL作为包中的前几个字,以保证名称空间中的唯一性。那些以“太阳”开头的可能不打算暴露于外界。如果你看一眼,你会发现还有其他原因: Apache—org

在JRE中,Sun的内部包以两个顶级域(Sun和com)作为前缀。比如说,

com.sun.security.jgss
sun.security.jgss
对我来说,他们选择哪个前缀似乎很随机。我很好奇Sun使用了什么规则。

更可取的格式是“com.Sun”约定,因为它遵循了为命名Java包而建立的“命名约定”


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

如果你看一眼,你会发现还有其他原因:

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类


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


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

在您链接到的文档中,我没有看到任何关于不使用com.sun.*的内容;它只说不要使用sun.*。软件包名称com.sun.*只是意味着它是他们自己的公共软件的一部分,他们可以像其他任何公司一样提供。@Jasper,您已经在另一个讨论中发布了此链接[但是链接的文档只是关于“sun”软件包,而不是“com.sun”如果你能提供一个告诉你不要使用“com.sun”软件包的链接,你能更新这个链接吗?