Java com.*包命名空间

Sta*_*tan 60 java

经常看到com.*package命名空间.'com'是什么意思?谢谢.

pol*_*nts 60

包的命名约定在JLS中指定.这是相关的片段(该部分还有更多内容):

JLS 7.7唯一包名称

您首先拥有(或属于具有)Internet域名的组织,例如,形成唯一的包名称sun.com.然后,您可以逐个组件地反转此名称,以获取(在此示例中)com.sun,并使用此名称作为程序包名称的前缀,使用组织内部开发的约定来进一步管理程序包名称.

Sun的代码约定文档的命名约定部分也给出了它:

:一个独特的包名的前缀总是全部小写的ASCII字母,应该是顶级域名之一,目前com,edu,gov,mil,net,org,或按规定来确定哪些国家的英文两字母代码之一在ISO标准3166,1981中.

软件包名称的后续组件根据组织自己的内部命名约定而有所不同.此类约定可能指定某些目录名称组件是分区,部门,项目,计算机或登录名.

例子:com.sun.eng,com.apple.quicktime.v2,edu.cmu.cs.bovik.cheese


因此com.,包名称中的前缀表示与.com域名中的后缀相同:"commercial".

  • 有趣的是,最初的Java语言规范建议顶层域部分用大写编写,例如`COM.stackoverflow.api`或其他.实际上没有人这样做,所以他们改变了如上所述的独特包名称推荐. (5认同)
  • 这不是一个坏习惯吗?将您的代码绑定到域名?如果我们成为非盈利组织并改为.org,该怎么办? (5认同)
  • @Greg:好消息!这确实是第一版的情况!http://java.sun.com/docs/books/jls/first_edition/html/6.doc.html#9184 (2认同)

Car*_*icz 29

当它创建Java时,Sun建立了一个约定,即应该从公司的反向域名或创建包的个人开始构建包名.因为DNS保证域名是唯一的(即只给予一个组织或个人),这可以避免重复.

因此,Microsoft的Java软件包的名称以com.microsoftSun的名称开头,com.sun等等.


T.J*_*der 8

除标准库之外的Java包通常以与供应商域相反的顺序命名,例如Microsoft使用com.microsoft,Apache可能使用org.apache等等.(有关Java中命名约定的详细信息,请参阅此链接.)这是为了防止命名冲突.所以com它只是域名的一部分,它对Java没有特殊意义.

没有要求您以这种方式命名您的软件包,对于任何可能远程最终在您的组织外部使用的软件包来说,这是一个非常好的主意.


bru*_*nde 5

com源自商业。就像org源自组织