Tôi không hiểu tại sao có "x" được thêm vào "java" cho một vài gói nhập. Lý do là gì? Không thể chỉ là java.swing.*
như những người khác java.io.*
?Tại sao nhập javax.swing. * Thay vì java.swing. *
Trả lời
Swing ban đầu là một phần mở rộng cho Java - một thư viện có thể tải xuống riêng. Nó trở thành một phần của JRE "chính" trong Java 1.2. Nó sẽ là lẻ đối với một thư viện riêng biệt để yêu cầu một gói java. *, Do đó tình hình hiện tại. Có rất nhiều phần mở rộng khác có câu chuyện tương tự.
Wikipedia article on Swing có thêm thông tin về lịch sử của nó.
Vì lý do lịch sử và khả năng tương thích ngược. Trước khi java 1.2 swing được phân phối như là một gói riêng biệt từ java (do đó javax là phần mở rộng).
Khi xoay trở thành một phần của tên gói phân phối java chuẩn được lưu giữ để tương thích ngược. Xem thêm thông tin trong bài viết wikipedia
Từ Core Java 2:
alt text http://bks5.books.google.fr/books?id=W6bomXWB-TYC&printsec=frontcover&img=1&zoom=5&edge=curl&sig=ACfU3U3IeRSfENUVokGf-d9GUZZBU-tYMQ
Tên javax
chỉ ra một gói mở rộng Java, không phải là một gói cốt lõi. Các lớp Swing thực sự là một phần mở rộng cho Java 1.1. Vì các lớp Swing không phải là một phần của cấu trúc phân cấp lõi, nên có thể tải các lớp Swing vào một trình duyệt tương thích với Java 1.1 (trình quản lý bảo mật của trình duyệt không cho phép thêm bất kỳ gói nào bắt đầu bằng "java.
".) Bật nền tảng Java 2, gói Swing không còn là phần mở rộng nữa, mà thay vào đó là một phần của cấu trúc phân cấp lõi. Bất kỳ triển khai Java nào tương thích với Java 2 đều phải cung cấp các lớp Swing. Tuy nhiên, tên javax vẫn còn, để tương thích với mã Java 1.1. (Trên thực tế, gói Swing bắt đầu là com.sun.java.swing
, sau đó được chuyển sang java.awt.swing
trong các phiên bản Java 2 phiên bản đầu tiên, sau đó quay lại com.sun.java.swing
trong phiên bản beta 2 beta muộn và sau khi được lập trình Java phản đối. trong javax.swing
.)
x là vì chúng là tiện ích mở rộng. Trong phiên bản 1.1 của java không có swing và khi nó đã được thêm vào họ quyết định đặt tên nó như thế: javax
Có một số gói có lịch sử tương tự.
- 1. Tại sao darcs thay vì git?
- 2. Tại sao NDEBUG thay vì RELEASE?
- 3. Tại sao testFixture thay vì TestClass?
- 4. Tại sao FloatBuffer thay vì phao []?
- 5. Tại sao chặn thay vì lặp?
- 6. Tại sao CHỌN 0, ... thay vì CHỌN
- 7. Trong python, tại sao sử dụng đăng nhập thay vì in?
- 8. Tại sao sử dụng nhiều đối số để đăng nhập thay vì nội suy?
- 9. Tại sao sử dụng tăng :: ice_or thay vì || và tăng :: ice_and thay vì && trong enable_if?
- 10. Tại sao Arrays.sort lấy Object [] thay vì Comparable []?
- 11. Tại sao nên sử dụng Function.prototype.bind thay vì Function.prototype.call?
- 12. Tại sao sử dụng registerDefaults: thay vì setValue: forKey :?
- 13. tại sao nó sử dụng movl thay vì đẩy?
- 14. Tại sao Matlab được viết bằng C thay vì Fortran?
- 15. Tại sao null == myVar thay vì myVar == null?
- 16. Tại sao RTP sử dụng UDP thay vì TCP?
- 17. Tại sao trả lại NotImplemented thay vì nâng NotImplementedError
- 18. Tại sao sử dụng singleton thay vì lớp tĩnh?
- 19. Tại sao CompositionTarget.Rendering lấy EventArgs thay vì RenderingEventArgs?
- 20. Tại sao sử dụng tai thay vì chiến tranh?
- 21. Tại sao sử dụng ROLAP thay vì MySQL đơn giản?
- 22. Tại sao sử dụng Enums thay vì Constants?
- 23. Tại sao frame-> pts tăng 20, thay vì 1?
- 24. Tại sao tạo serialVersionUID dài thay vì 1L đơn giản?
- 25. Tại sao nosql với cassandra thay vì mysql?
- 26. Tại sao nên sử dụng GWT.create() thay vì mới?
- 27. Tại sao sử dụng singleton thay vì phương pháp tĩnh?
- 28. Tại sao tôi nên POST dữ liệu thay vì GET?
- 29. Tại sao `this.synchronized` thay vì chỉ` đồng bộ` trong Scala?
- 30. Tại sao sử dụng jQuery trên() thay vì nhấp chuột()
Wow !!! Bài viết Wikipedia đề cập đến một câu hỏi StackOverflow như thế nào là mát mẻ đó. – OscarRyz
Có gì tuyệt vời khi liên kết StackOverflow từ Wikipedia? Mọi người đều có thể tạo liên kết như vậy ... – Arne