2011-03-10 31 views
7

我想發佈一個開源的java庫。我想用我的姓氏作爲包名,但我覺得有點奇怪。我希望使用更像「open.libname」這樣的中性語言。我應該使用哪個軟件包名稱用於開放源代碼的java庫?

有關於開源java包命名的建議嗎?

+0

關閉選民:實際上有一個關於「我該如何命名我的Java軟件包?」的權威性答案,使用了答案中描述的反向域名(參見[Java語言規範第6.1節]末尾的註釋(https ://docs.oracle.com/javase/specs/jls/se8/html/jls-6.html#jls-6.1))。我投票結束重複提供了一個很好的答案,但是他的問題並不完全匹配這個問題 - 如果你知道更好的副本,請使用它。 – 2015-06-27 01:48:53

+0

[Java包com和組織]的可能的重複(http://stackoverflow.com/questions/2125293/java-packages-com-and-org) – 2015-06-27 01:49:00

回答

10

正如有人說,下手的包名反向域名:

註冊一個域名,如myproject.org,然後使用org.myproject.mymodule

或者,如果您沒有自己的域名,請使用您託管代碼的子域名,例如,如果您將代碼託管在myproject.sourceforge.net上,請使用net.sourceforge.myproject.mymodule

+1

如果選擇[sourceforge.net](http://sourceforge.net)作爲主機,'net.sf'是一個不錯的短前綴。 [sf.net](http://sf.net/)是由sourceforge.net註冊的域名。 – 2011-03-11 09:01:24

+0

我喜歡你的建議。在我的情況下,這將是一個awkard'com.google.code.mylibrary',因爲這不是谷歌官方代碼版本。備擇方案? – Gatis 2011-03-11 12:33:50

+1

@Gatis你有沒有在我的回答中看到我對'com.googlecode.'的建議? 'googlecode.com'指向'code.google.com'。 – 2011-03-11 14:10:39

4

通常的建議是將包裝上的名稱以相反順序排在您的包裝的前面:com.mydomain.mypackage。由於您擁有該域名,所以名稱衝突的機會減少了。

此外,包名稱的更好選擇是反映包的功能,而不是您自己的名稱。當你想發佈你的第二個(也許完全不相關的)庫時,你會用什麼?

+0

你的意思是類似gatis.foo和gatis.bar圖書館foo和酒吧? – Gatis 2011-03-11 12:30:53

+0

是的。如果您擁有像gatis.com這樣的域名,則可以使用包名稱「com.gatis.foo」和「com.gatis.bar」。不要太過分,但越能讓包名稱獨一無二,名稱衝突問題的機會就越小。 (在許多情況下,軟件包名稱的選擇並不重要,但分發庫時的選擇並不相同,而且Android Market等地點使用啓動類的軟件包名稱來識別應用程序。) – 2011-03-11 16:52:04

0

這可能會也可能不是您正在尋找的答案。

常見約定是反轉您的個人/公司域名,並將其預先設置爲包名稱。

所以,如果您的域名是「www.feel.com」和你的包名是「mypackage的」,那麼你完全合格的包名稱爲:com.feel.mypackage

+0

[軟件包命名約定]( http://en.wikipedia.org/wiki/Java_package#Package_naming_conventions)是一切都是小寫。 – 2011-03-10 19:15:55

+0

@特謝謝提醒,剛更新。我已經離開Java太久...... – 2011-03-10 19:18:16

3

你在哪裏管理你的項目?例如,當我在Google Code上主持項目時,我傾向於使用com.googlecode.project-name(使用com.google.code.project-name似乎很粗魯)。我實際上並不知道Google對此有什麼看法,但它是遵循許多Sourceforge.net項目的例子。如果您擁有個人/公司域名,那麼請繼續使用該域名。

相關問題