Apa gunanya konvensi penamaan paket Java?

14

Saya tidak mengerti mengapa Java menggunakan kebalikan dari nama domain (mungkin hipotetis) sebagai nama paket, sementara sebagian besar tidak ada koneksi antara nama domain yang beberapa orang gunakan dan produk yang mereka miliki. Banyak pengembang bahkan tidak memiliki domain apa pun.

Apa alasan konvensi penamaan ini, jika ada?

Louis Rhys
sumber
Bahkan tanpa domain itu adalah praktik umum di Jawa-tanah untuk berpura-pura Anda lakukan untuk penamaan paket. Misalnya dalam kasus Anda, Anda akan menggunakan com.louisrhys.xxx.yyymilik Anda atau tidaklouisrhys.com
Wayne Molina

Jawaban:

14

Keunikan global. Jika setiap orang, atau setidaknya pengembang serius yang mendistribusikan kode mereka di luar proyek in-house, mematuhi konvensi itu, tidak akan pernah terjadi bahwa Anda mendapatkan bentrokan nama ketika Anda menambahkan perpustakaan pihak ketiga lain ke proyek Anda. Ingatlah bahwa Java pada awalnya disebarkan sebagai solusi untuk penyebaran kode di mana saja, kapan saja (melalui applet dan classloading jarak jauh melalui internet).

Kilian Foth
sumber
3
Di Java 1.4 Sun menggunakan open source alat Apache XML tanpa mengubah ruang nama. Jadikan "menarik" untuk mencoba memiliki versi yang lebih baru di aplikasi Anda sendiri.
3
Java was initially propagated as a solution for code deployment anywhere, anytime Berbeda dengan apa itu Java sekarang? Saya tidak tahu tentang Anda tetapi saya masih agak berhasil menggunakan Java WebStart untuk menyebarkan kode sisi klien ke ribuan PC di jaringan internal. Ini membuat "Lepaskan Dini, Lepaskan Sering" jauh lebih menyakitkan bagi semua orang.
maple_shaft
1
Belum tentu benar. Anda akhirnya akan kehilangan nama domain; apakah dengan mati atau hanya lupa memperbaruinya. Orang lain bisa membelinya, dan, tanpa disadari, mengeluarkan paket Java yang bertentangan dengan Anda. Dan ada juga kemungkinan seseorang memiliki domain sebelum Anda dan mengeluarkan kode yang bertentangan dengan kode Anda.
Kevin
@maple_shaft Belum pernah terjadi pada sebagian besar pengguna sejak penurunan applet Java. Melainkan itu hanyalah platform lain untuk aplikasi (seperti, katakanlah, Qt atau XUL atau Electron).
user253751
12

Seperti yang dikatakan Wikipedia tentang masalah ini,

"Spesifikasi Bahasa Jawa menetapkan konvensi penamaan paket untuk menghindari kemungkinan dua paket yang diterbitkan memiliki nama yang sama."

LaLeX
sumber
Apakah spesifikasi merinci konvensi apa yang akan digunakan jika pengembang tidak memiliki nama domain sendiri?
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner: Tidak, tidak .
Mike Seymour
@ MikeSeymour: Jadi ... kita bisa memberi nama mereka seperti yang kita inginkan dalam kasus itu? Woo hoo! :)
FrustratedWithFormsDesigner
1
@FrustratedWithFormsDesigner Anda dapat menamainya sesuka Anda. Jika Anda ingin orang lain menggunakan perangkat lunak Anda, Anda harus mengikuti spesifikasi dan menyimpulkan namespace logis dan mungkin unik jika Anda tidak memiliki domain yang sebenarnya.
Jeremy