为啥包名称通常以“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.sourceforge
或net.sf
后跟项目名称。如今,GiHub 和 GitLab 都在 project.gihub.io
和 project.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”开头[重复]的主要内容,如果未能解决你的问题,请参考以下文章
名称不能以''字符开头,在c#中使用xml字符串的十六进制值0x20 [重复]
消除重复的Json元素并检索以大写字母开头的元素名称spring boot/java