2009-08-26 51 views
9

Trong JRE, gói nội bộ của Sun được đặt trước bằng 2 tên miền cấp cao nhất (mặt trời và com). Ví dụ:Công ước đặt tên gói Java của Sun: sun vs. com.sun

com.sun.security.jgss 
sun.security.jgss 

Điều này có vẻ khá ngẫu nhiên đối với tôi tiền tố họ chọn. Tôi tò mò về những quy tắc mà Sun sử dụng cho việc này.

Trả lời

7

Quy ước "com.sun" là định dạng thích hợp hơn vì nó tuân theo "quy ước đặt tên" đã được thiết lập để đặt tên cho các gói Java.

http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html

Bạn đang phải sử dụng công ty duy nhất của bạn hoặc URL trang web cá nhân như một vài từ đầu tiên trong gói để đảm bảo tính độc đáo trong không gian tên. Những cái bắt đầu với "mặt trời" có lẽ không có ý định tiếp xúc với thế giới bên ngoài.

1

Nếu bạn có một cái nhìn tại compatibility document for Java 5 bạn sẽ nhận thấy rằng có những lý do khác nữa:

Apache - Các lớp org.apache, mà chưa bao giờ được hỗ trợ API J2SE nhưng được sử dụng bởi các javax gói .xml, đã di chuyển trong 5.0 đến ** com.sun. ** org.apache.package.internal để chúng không đụng độ với các phiên bản mới hơn, được nhà phát triển tải xuống của các lớp.
Bất kỳ ứng dụng nào phụ thuộc vào lớp org.apache là một phần của bản phát hành J2SE phải thực hiện một trong các thao tác sau để làm việc trong 5.0:
* Mã ứng dụng để nó chỉ sử dụng giao diện được hỗ trợ là một phần của JAXP.
* Tải xuống các lớp org.apache.xalan từ Apache.

10

Không phải là câu trả lời cho câu hỏi, nhưng xin lưu ý rằng bạn không nên sử dụng trực tiếp các gói 'mặt trời' hoặc 'com.sun' trong chương trình của mình.

Xem Why Developers Should Not Write Programs That Call 'sun' Packages

Những gói không phải là một phần của API công cộng của thư viện chuẩn của Java, và sử dụng chúng có thể làm cho chương trình của bạn không tương thích với các phiên bản tương lai của Java hoặc triển khai của Java khác hơn việc thực hiện Sun (và có là một số triển khai của các nhà cung cấp khác, bao gồm Apple, IBM và HP).

+1

Tôi không thấy bất kỳ điều gì về việc không sử dụng com.sun. * Trong tài liệu mà bạn đã liên kết; nó chỉ nói không sử dụng mặt trời. Chỉ định gói com.sun. * Chỉ có nghĩa là nó là một phần của phần mềm công khai của riêng chúng mà chúng có sẵn giống như bất kỳ công ty nào khác. – Tom

+1

@Jasper, bạn đã đăng liên kết này trong một cuộc thảo luận khác [http://stackoverflow.com/questions/1906673/import-com-sun-image-codec-jpeg/1907060#1907060] nhưng tài liệu được liên kết chỉ là về " mặt trời "gói, không" com.sun "những người thân. Bạn có thể vui lòng cập nhật liên kết nếu bạn có thể cung cấp liên kết thực sự yêu cầu không sử dụng các gói "com.sun" không? – danidemi

Các vấn đề liên quan