为啥包名称通常以“com”开头[重复]

Posted

技术标签:

【中文标题】为啥包名称通常以“com”开头[重复]【英文标题】:Why do package names often begin with "com" [duplicate]为什么包名称通常以“com”开头[重复] 【发布时间】:2011-11-16 17:22:45 【问题描述】:

可能重复:Java packages com and org

我是一名 Java 开发人员。现在我正在学习 struts,在阅读教程时,我的脑海中突然出现了一种关于

的好奇心
package com.something.something;

我知道这是一个非常简单的包声明,但是呢

package **com**.something.something;

这个包名称片段经常出现在许多商业发行版中。现在我想知道这是什么意思?请澄清一下。

谢谢,如果我不能澄清它,我很抱歉......

【问题讨论】:

如果您要求我们将 com 放在包名之前,那么答案就是约定俗成,没有其他原因。有人说它与 URL 或 XML 命名空间相反,但它只是约定而已。 其实你应该按照下面别人说的... 如果你曾经写过一个类,你会知道这不是域名,因为它可能是你的 surname.lastname 。 Sun-Oracle 和文档可以说出他们认为合适的内容,但是当我每天花时间创建类时,我知道它们几乎从来都不是域名。试试 org.apache.commons 或 commons.apache.org 并告诉我如何他们的欢迎页面看起来像。 是的,也许你是对的,这取决于项目的性质。对于商业项目,我们可以使用 domain_TLD.companyname.xyz 创建包,对于家庭项目,我们可以随意进行... 根据有关此主题的所有反馈,似乎包声明命名约定除了强制执行唯一标识符之外没有任何作用。此外,如果每个人都以“com”或“org”域开始包声明,这不是否定了这一切吗? 【参考方案1】:

***,在所有地方,actually discusses this。

我们的想法是确保所有包名称在全球范围内都是唯一的,方法是让作者使用他们拥有的 DNS 名称的变体来命名包。例如,joda.org 域名的所有者创建了多个名称以org.joda 开头的包,例如:

org.joda.time org.joda.time.base org.joda.time.chrono org.joda.time.convert org.joda.time.field org.joda.time.format

【讨论】:

【参考方案2】: com => 域 某事 => 公司名称 something => 主包名

例如:com.paresh.mainpackage

公司使用他们的反向 Internet 域名来开始他们的包名——例如,com.example.mypackage 表示由 example.com 的程序员创建的名为 mypackage 的包。 我在http://download.oracle.com/javase/tutorial/java/package/namingpkgs.html找到的这些信息

【讨论】:

这个答案缺少与实际注册域名的非常重要的关系。这就是确保你的包名是唯一的。【参考方案3】:

这只是一个命名空间定义,以避免类名冲突。 com.domain.package.Class 是一个既定的 Java 约定,其中命名空间与公司域相反。

【讨论】:

相关文档:docs.oracle.com/javase/tutorial/java/package/namingpkgs.html 没有自己的域怎么办? @StephenHolt 如果您的代码是开源的并且托管在公共存储库中,那么使用源代码控制存储库本身的域是一种流行趋势。例如,许多热门项目仍在使用net.sourceforgenet.sf 后跟项目名称。如今,GiHub 和 GitLab 都在 project.gihub.ioproject.gitlab.io 为您的项目提供静态 Web 托管,因此可以作为另一种探索方式。【参考方案4】:

Sun-Oracle documentation 是这么说的:

包名全部小写,避免与类名或接口名冲突。

公司使用颠倒的 Internet 域名来开始他们的包名——例如,com.example.mypackage 表示由 example.com 的程序员创建的名为 mypackage 的包。

【讨论】:

【参考方案5】:

来自Java package naming 上的***文章:

通常,包名称以组织的***域名开头,然后是组织的域,然后是任何子域,以相反的顺序列出。然后,组织可以为其包选择一个特定的名称。包名称应尽可能全部为小写字符。
例如,如果加拿大的一个名为 MySoft 的组织创建了一个包来处理分数,将包命名为 ca.mysoft.fractions 可以将分数包与另一家公司创建的另一个类似包区分开来。如果一家名为 MySoft 的美国公司也创建了一个 fractions 包,但将其命名为 us.mysoft.fractions,那么这两个包中的类将定义在一个唯一且单独的命名空间中。

【讨论】:

【参考方案6】:

是倒过来的域名。

例如,我的域之一是hedgee.com。所以,我使用com.hedgee 作为我所有包的基本名称。

【讨论】:

以上是关于为啥包名称通常以“com”开头[重复]的主要内容,如果未能解决你的问题,请参考以下文章

以一个下划线开头的PHP函数名称[重复]

名称不能以''字符开头,在c#中使用xml字符串的十六进制值0x20 [重复]

消除重复的Json元素并检索以大写字母开头的元素名称spring boot/java

为啥熊猫转换后在csv文件的开头添加数字[重复]

如果 href 以 http://www.twitter.com/ 开头,则将类添加到 <a> [重复]

获取具有特定名称掩码的所有 DOM 元素 [重复]