Java 包 com 和 org
Posted
技术标签:
【中文标题】Java 包 com 和 org【英文标题】:Java packages com and org 【发布时间】:2011-01-08 16:16:42 【问题描述】:包org
和com
在Java中的含义是什么?
【问题讨论】:
【参考方案1】:根据Sun,包的命名空间应与您的域名相反,然后是您认为合适的名称。大多数公司或组织都有.com
或.org
域名,因此大多数软件包以com.
或org.
开头。引用Sun Code Conventions:
唯一包名的前缀总是用全小写的ASCII字母写的,应该是***域名之一,目前是com、edu、gov、mil、net、org,或者是英文两个之一- 标识 ISO 标准 3166, 1981 中规定的国家/地区的字母代码。
软件包名称的后续组成部分根据组织自己的内部命名约定而有所不同。这样的约定可能会指定某些目录名称组件是部门、部门、项目、机器或登录名。
他们提供的示例清楚地表明您应该使用公司的 DNS 名称:
com.sun.engp>
com.apple.quicktime.v2
edu.cmu.cs.bovik.cheese
您还会看到edu.
和net.
打包出in the wild,尽管它们不太常见。
【讨论】:
如果公司更改域怎么办? @LeonardoRaele 通常在这种情况下,你会进入一个痛苦的世界;-) 更严重的是,有两个选项,重命名所有类,如果代码是内部的,这可以工作,或者让它使用旧名称,因为无论如何它可能仍然是唯一的。 当您不属于组织或没有网站时,最好的命名约定是什么?我以前看过me.username
的建议,但我不确定这是最好的还是唯一的标准。
@AaronFranke 我见过人们使用他们的 GitHub 用户名作为他们的域,因此,例如:com.guthub.pwagland.xxx 主要目的是获得一个唯一的名称,这样你就不会'不必更改它,它永远不会与其他人选择的名称冲突。
如果您的公司有 2 个域,即 wordpress.com 和 wordpress.org,该怎么办【参考方案2】:
您还可以将包名称视为反向的 Internet 域名(这在现实世界中通常也是如此,例如,参见与 http://commons.apache.org 相关的 org.apache.commons
)。 com
(commercial) 和 org
(organization) 在这里,然后实际上是 Top Level Domain 名称。
包名称通常只是为了识别您所面对的代码的制造商/供应商。
【讨论】:
并保证包名的唯一性。我认为这是一种非常聪明的方法 我可能是错的,但如果每个人都打算使用 com,那么此时 com 听起来是不必要的。我宁愿只使用公司名称本身。我更喜欢他们为其他包装系统(如 npm 和 composer)提供的命名系统。他们使用“用户名/包名”或类似的东西。所以我会在java中将我的包命名为'username.packagename'【参考方案3】:公司命名包时通常使用com
,com
后跟公司名称。例如,您在 JVM 中有 com.sun
包。
org
包前缀主要用于非营利组织或开源代码,如 apache、w3c 等。
【讨论】:
将公司的 .com URL 用于内部代码,将 .org 用于任何公开代码的惯例是一个好主意。这就是我从这个答案中总结出来的。 丹尼斯,我认为这不是一个好主意。这意味着发布代码会更改包名称,并会破坏使用原始名称的内部软件。此外,如果 example.com 和 example.org 属于不同的公司并且都想发布 Java 代码,则会出现命名空间冲突。【参考方案4】:包命名见Oracle doc
请参阅Naming Conventions 了解类/接口/注释/等标准命名
包名和类标准语法:
. . .
example1:(这里是域:- “***.com”,项目:- “测试”)com.stackoverfllow.test.handler.TestHandler
示例 2:(此处域:-“www.google.co.in”,项目:-“我的项目”)in.co.google.myproj.controller.MainController
但对于 java.*、javax.*、sun.* 等保留域,您应该 从 oracle 社区获得许可
【讨论】:
【参考方案5】:域名倒序
反向域名表示法(或反向 DNS)是编程语言、系统或框架使用的组件、包、类型或文件名的命名约定。反向 DNS 字符串基于注册的域名,为了分组目的,组件的顺序颠倒了。例如,如果制造产品“MyProduct”的公司的域名为 example.com,他们可以使用反向 DNS 字符串 com.example.MyProduct 作为该产品的标识符。反向 DNS 名称是消除命名空间冲突的一种简单方法,因为任何域名对其注册所有者都是全局唯一的。
命名包 随着世界各地的程序员使用 Java 编程语言编写类和接口,很可能许多程序员会为不同的类型使用相同的名称。事实上,前面的例子就是这样做的:当已经有一个 Rectangle 类时,它定义了一个
除非两个独立的程序员为他们的包使用相同的名称,否则这很有效。是什么阻止了这个问题?公约。
命名约定
您找到联系包所有者的方法,向他们发送消息,讨论转移它的最佳方式,每个人都赢了! []
https://www.scientecheasy.com/2020/06/packages-in-java.html/
What is the convention for word separator in Java package names?
https://en.wikipedia.org/wiki/Reverse_domain_name_notation#:~:text=Reverse%20domain%20name%20notation%20(或,components%20reversed%20for%20grouping%20 purpose http://www.wellnwill.com/tutorial/core-java/package/package-convention
https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html
https://medium.com/@aretecode/package-names-gifting-hoarding-9b63ac203d33
【讨论】:
请不要只是从 Wikipedia 和 Oracle 复制和粘贴。这个答案如何比当前答案添加更多内容?以上是关于Java 包 com 和 org的主要内容,如果未能解决你的问题,请参考以下文章
java 程序包com.model 不存在 (今天解决给分多)
java: 程序包com.sun.org.slf4j.internal不存在学mei搂着胳膊问的
java: 程序包com.sun.org.slf4j.internal不存在学mei搂着胳膊问的