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

Mik*_*ike 39 java android conventions naming-conventions package

我无法在SO上找到回答我确切问题的Q/A ,所以我想我会发布它并看看会有什么回复.

就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开发人员是否有不同的意见.

ars*_*jii 35

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

  • +1,非常好.为了与电子邮件提供商的名称空间区分开来,可以使用`email`作为前缀(如`email.com.gmail.bob`) (7认同)
  • @JannisFroese,现在有人拥有 *com.email* 域,从而使 `email.com.*` 链接无效:http://www.com.email (2认同)

Gru*_*eck 27

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

com.github.myrepositoryname
net.sf.sourceforge.myproject
com.googlecode.myproject
Run Code Online (Sandbox Code Playgroud)

优点:

缺点:

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

  • +1 这是一个好点,由于缺点,我会将其用作使用电子邮件的备份,但这是另一种实现此目的的好方法。谢谢! (2认同)

Gre*_*eek 5

域名可以免费获得.例如,dyn.com在http://free.domain.name/上提供"whatever.dyndns.org"形式的免费域名.


Jan*_*ese 5

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

jannisfroese.projectname.stuff

或者如果您想保留“有效”域名

localhost.jannisfroese.projectname.stuff

(localhost是保留的顶级域名)

当然,这只有在您的名字足够独特的情况下才有效,因此不太可能发生冲突