没有域关联的java包名称的约定是什么?

时间:2012-09-21 18:03:08

标签: java android naming-conventions package conventions

我无法在SO上找到回答我的完全问题的问答,所以我想我会发布它并看看会有什么回复。

就Java包的命名约定而言,我理解它应该是反向域名:com.whatever.stuff并且我得到的规则没有混合大小写,连字符,关键字等。

我还阅读了Java语言规范的7.7节(Unique-Package-Names)。据我所知,Java的规则是使用反向域来确保唯一性......如果你没有,请去获取一个:

You form a unique package name by first having (or belonging to an organization that has) an Internet domainname, such as sun.com. - 第7.7节

因此,如果我对为域名支付费用不感兴趣,我不属于我可以背负的名称的公司,是否存在我缺少的命名约定的任何部分应该遵循?我想我可以直接命名它,不管我现在感觉到什么名字,但我只是想知道我是否遗漏了任何东西。

注意:我想发布我的软件包供其他开发人员使用,所以我不想只做一些在我的系统上运行的东西,但如果可能的话就更标准。

我添加了android标签,因为我要编写的java包将用于Android应用程序,不确定Android开发人员是否有不同意见。

5 个答案:

答案 0 :(得分:34)

如果你要分发很多东西,我真的建议你买一个域名。然而,另一种选择是使用您的电子邮件:例如bob@gmail.com将成为com.gmail.bob。这比使用域名少见,但仍由一些人完成,仍然保证了唯一性。

答案 1 :(得分:27)

一种惯例是使用托管服务提供商的域名,例如

com.github.myrepositoryname
net.sf.sourceforge.myproject
com.googlecode.myproject

优点:

缺点:

  • 如果您决定更改提供程序,则要么包含过时的程序包结构,要么引入向后不兼容的更改以使源与新提供程序保持一致

答案 2 :(得分:5)

域名可以免费提供。 例如,dyn.com在http://free.domain.name/提供“whatever.dyndns.org”形式的免费域名

答案 3 :(得分:2)

如果您是唯一的编码员,您可以使用您的名字。 我叫Jannis Froese,所以我会用

  

jannisfroese.projectname.stuff

或者如果您希望使用“有效”域名

  

localhost.jannisfroese.projectname.stuff

(localhost是一个保留的顶级域名)

当然,这只有在您的名字足够独特时才有效,因此碰撞不太可能

答案 4 :(得分:1)

在专业环境中,惯例是使用反向域。在与您自己更相关的环境中,您可以使用org.projectname.packagename.*

这是一项惯例,而不是一项严格的规则。您可以自由使用您喜欢的任何域命名方式。