我应该使用哪个软件包名称来开源Java库?

10
我想发布一个开源的Java库。我原本想使用我的姓氏作为包名,但我觉得有点奇怪。我想使用更中立的名称,比如“open.libname”。
是否有关于开源Java包命名的建议?

关闭投票者:实际上有一个权威的答案来回答“我应该如何命名我的Java包?”,使用答案中描述的反向域名(请参见Java语言规范第6.1节末尾的注释)。我投票关闭了一个提供了很好答案但问题并不完全匹配的重复问题--如果您知道更好的重复问题,请使用它。 - Jeffrey Bosboom
可能是Java包com和org的重复问题 - Jeffrey Bosboom
4个回答

10

像其他人所说,以反转的域名作为包名开头:

注册一个域名,例如 myproject.org,然后使用 org.myproject.mymodule

或者,如果你没有自己的域名,请使用托管代码的子域名,例如如果你在 myproject.sourceforge.net 上托管代码,请使用 net.sourceforge.myproject.mymodule


1
net.sf 是一个不错的短前缀,如果选择 sourceforge.net 进行托管。sf.net 是由 sourceforge.net 注册的域名。 - Joachim Sauer
我喜欢你的建议。在我的情况下,这将是一个尴尬的“com.google.code.mylibrary”,因为这不是Google官方代码发布。有替代选择吗? - Igor Gatis
1
@Gatis,你看到我在回答中提出的com.googlecode.的建议了吗?googlecode.com指向code.google.com - Isaac Truett

4
通常建议使用你拥有的域名的反向顺序作为包的前缀:com.mydomain.mypackage。因为你拥有该域名,名称冲突的可能性降低了。
此外,更好的选择是使用反映包功能而不是你自己名称的包名。当你想要发布第二个(也许完全不相关的)库时,你会用什么呢?

您是指为库foo和bar创建类似gatis.foo和gatis.bar的内容吗? - Igor Gatis
是的。如果你拥有一个像gatis.com这样的域名,你可以使用com.gatis.foocom.gatis.bar这样的包名。不要过度使用,但是你能让你的包名更加独特,命名冲突的机会就越小。(在很多情况下,选择包名并不真的很重要,但是当你分发一个库时就不同了。而且像Android Market这样的地方使用启动类的包名来识别应用程序。) - Ted Hopp

3

你的项目托管在哪里?例如,当我在Google Code上托管项目时,我倾向于使用com.googlecode.project-name(使用com.google.code.project-name似乎有点粗鲁)。我并不知道Google对此有何看法,但这遵循了许多Sourceforge.net项目的例子。当然,如果你拥有个人/企业域名,那么可以使用该域名。


2

这可能是你想要的答案,也可能不是。

通常的惯例是将你个人/公司域名反转并将其前缀添加到包的名称之前。

因此,如果你的域名是“www.feel.com”,你的包名是“mypackage”,那么你的完全限定包名就会是:com.feel.mypackage


包命名约定是所有字母都小写。 - Ted Hopp
@Ted 感谢提醒,我已经更新了。我离开Java太久了... - Brian Driscoll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接