2011-09-14 38 views
21

thể trùng lặp:
Java packages com and orgJava ước gói đặt tên

Tôi là một nhà phát triển java, bây giờ một ngày tôi struts học tập và khi đọc một hướng dẫn một sự tò mò xâm nhập vào tâm trí của tôi liên quan

gói com.something.something;

Tôi biết đó là một tuyên bố gói rất đơn giản nhưng những gì về

gói com .something.something;

Phân đoạn tên gói này thường có nhiều bản phân phối thương mại. Bây giờ tôi muốn biết nó có ý nghĩa gì? Xin vui lòng làm rõ nó.

Cảm ơn và xin lỗi nếu tôi không thể làm rõ ...

+0

Nếu bạn yêu cầu chúng tôi đặt com trước tên gói thì câu trả lời chỉ là quy ước không có lý do nào khác. Một số người nói rằng nó đảo ngược URL hoặc không gian tên XML nhưng nó chỉ là quy ước không có gì khác. – Shahzeb

+0

Trên thực tế, bạn nên làm theo những gì người khác đang nói dưới đây ... –

+0

nếu bạn đã viết một lớp duy nhất bao giờ bạn sẽ biết điều này không phải tên miền mà vì nó có thể được như vậy nó có thể là họ của bạn.lastname. Sun-Oracle và tài liệu có thể nói những gì họ đã bao giờ cảm thấy thỏa thuận nhưng khi tôi dành thời gian trong ngày ngoài việc tạo ra classess tôi biết họ gần như không bao giờ tên miền. Hãy thử org.apache.commons hoặc commons.apache.org và cho tôi biết làm thế nào trang chào mừng của họ trông như thế nào. – Shahzeb

Trả lời

22

Nó chỉ là định nghĩa vùng tên để tránh va chạm tên lớp. com.domain.package.Class là một quy ước Java được thiết lập trong đó không gian tên đủ điều kiện với miền công ty ngược lại.

+0

Tài liệu liên quan: http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html –

+2

Tôi nên làm gì nếu tôi không có miền của riêng mình? –

+1

@StephenHolt Nếu mã của bạn là mã nguồn mở và được lưu trữ trong một kho lưu trữ công cộng, có một xu hướng phổ biến của việc sử dụng tên miền của kho lưu trữ kiểm soát nguồn chính nó. Ví dụ, nhiều dự án phổ biến vẫn đang sử dụng 'net.sourceforge' hoặc' net.sf' theo sau là tên dự án của chúng. Những ngày này, cả GiHub và GitLab đều cung cấp dịch vụ lưu trữ web tĩnh cho các dự án của bạn tại 'project.gihub.io' và' project.gitlab.io' để có thể là một tùy chọn khác để khám phá. – Mrinal

6

Đó là tên miền được viết ngược lại.

Ví dụ: một trong các tên miền của tôi là hedgee.com. Vì vậy, tôi sử dụng com.hedgee làm tên cơ sở của tất cả các gói của mình.

2
  • com => miền
  • tên gì => Công ty
  • một cái gì đó name => gói chính

Ví dụ: com.paresh.mainpackage

Các công ty sử dụng Internet đảo ngược của họ tên miền để bắt đầu tên gói của chúng — ví dụ: com.example.mypackage cho gói có tên mypackage được tạo bởi một lập trình viên tại example.com. Thông tin này tôi đã tìm thấy tại http://download.oracle.com/javase/tutorial/java/package/namingpkgs.html

+2

Câu trả lời này là thiếu quan hệ rất quan trọng đối với tên miền thực tế, đã đăng ký. Đó là những gì * đảm bảo * rằng tên gói của bạn là duy nhất. –

24

Wikipedia, ở mọi nơi, actually discusses this.

Ý tưởng là đảm bảo tất cả tên gói là duy nhất trên toàn thế giới, bằng cách để tác giả sử dụng biến thể của tên DNS mà họ sở hữu để đặt tên gói.Ví dụ, chủ sở hữu của tên miền joda.org tạo ra một số gói có tên bắt đầu với org.joda, ví dụ:

  • org.joda.time
  • org.joda.time.base
  • org.joda.time.chrono
  • org.joda.time.convert
  • org.joda.time.field
  • org.joda.time.format
2

Từ bài viết Wikipedia trên Java package naming:

Nói chung, một tên gói bắt đầu với tên top level domain của tổ chức và sau đó tên miền của tổ chức và sau đó bất kỳ tên miền phụ, được liệt kê theo thứ tự ngược. Sau đó, tổ chức có thể chọn một tên cụ thể cho gói của nó. Tên gói phải là tất cả các ký tự chữ thường bất cứ khi nào có thể.
Ví dụ: nếu tổ chức ở Canada gọi là MySoft tạo gói để xử lý phân số, đặt tên gói là.m.google.fractions sẽ phân biệt gói phân số từ gói tương tự khác được tạo bởi công ty khác. Nếu một công ty Mỹ có tên MySoft cũng tạo ra một gói phân số, nhưng đặt tên cho nó là us.mysoft.fractions, thì các lớp trong hai gói này được định nghĩa trong một không gian tên duy nhất và riêng biệt.
1

Đây là những gì Sun-Oracle documentation nói:

tên gói được viết bằng tất cả các trường hợp thấp hơn để tránh xung đột với tên của lớp hoặc giao diện.

Công ty sử dụng tên miền Internet đảo ngược của họ để bắt đầu tên gói của họ — ví dụ: com.example.mypackage cho gói có tên mypackage được tạo bởi một lập trình viên tại example.com.