Gần đây tôi đã xem qua api trình tải lớp tùy chỉnh java. Tôi đã tìm thấy một cách sử dụng ở đây, kamranzafar's blog Tôi hơi mới với khái niệm trình tải lớp. Bất kỳ ai có thể giải thích chi tiết, các tình huống khác nhau mà chúng ta có thể cần hoặc chúng ta nên sử dụng nó là gì?Việc sử dụng Trình tải lớp tùy chỉnh là gì
Trả lời
Trình tải lớp tùy chỉnh rất hữu ích trong các kiến trúc lớn hơn bao gồm một số mô-đun/ứng dụng. Dưới đây là những lợi thế của bộ nạp lớp tùy chỉnh:
- Cung cấp kiến trúc Modular Cho phép xác định nhiều bộ nạp lớp cho phép kiến trúc mô-đun.
- Tránh xung đột Xác định rõ phạm vi của lớp trong bộ nạp lớp.
- Hỗ trợ phiên bản Hỗ trợ các phiên bản khác nhau của lớp trong cùng một máy ảo cho các mô-đun khác nhau.
- Quản lý bộ nhớ tốt hơn Mô-đun chưa sử dụng có thể được gỡ bỏ để loại bỏ các lớp được sử dụng bởi mô đun đó, làm sạch bộ nhớ.
- Tải lớp học từ bất cứ nơi nào Lớp học có thể được tải từ bất kỳ đâu, cho ví dụ cũ, Cơ sở dữ liệu, Mạng hoặc thậm chí xác định nó trên bay.
- Thêm tài nguyên hoặc lớp học động Tất cả các tính năng trên cho phép bạn thêm lớp hoặc tài nguyên động.
- Thời gian tải lại lớp đã sửa đổi Cho phép bạn tải lại lớp hoặc lớp thời gian chạy bằng cách tạo bộ nạp lớp con cho trình nạp lớp thực tế, chứa các lớp đã sửa đổi.
Một ví dụ thú vị (thú vị?) khi tải các lớp từ bất cứ đâu có thể thấy ở đây: http://99-bottles-of-beer.net/language- java-1162.html – Crollster
@Ramesh PVK cảm ơn bạn đã mô tả. nhưng nó thực sự đáng ngưỡng mộ nếu bạn có thể cung cấp một số mã ví dụ để hiểu những gì bạn mô tả. hy vọng bạn sẽ làm điều đó cho chúng tôi như những người quan tâm đến java. –
Việc sử dụng chính là trong Máy chủ ứng dụng để chúng có thể chạy hai ứng dụng và không có xung đột lớp. tức là nếu ứng dụng 1 có một lớp có cùng tên với ứng dụng 2, với ứng dụng trình nạp lớp tùy chỉnh 1 sẽ tải lớp của nó và ứng dụng 2 sẽ tải lớp của nó.
Ngoài ra nếu một lớp được nạp bởi trình tải lớp tùy chỉnh, bạn có thể hủy lớp đó khỏi JVM. Một lần nữa hữu ích trong các máy chủ ứng dụng.
Sử dụng khác sẽ dành cho thiết bị đo đạc - Một cách để thực hiện lập trình hướng khía cạnh hoặc khi sử dụng một số API bền bỉ. Với trình nạp lớp tùy chỉnh, bạn có thể thêm hành vi vào các lớp đã tải trước khi chúng được chuyển sang ứng dụng đang chạy.
Trình nạp lớp Java thực hiện khá nhiều điều mà tên cho thấy: tải các lớp vào bộ nhớ để chúng có thể được sử dụng.
Các lớp học cũng được liên kết với Trình nạp lớp đã tải chúng. do đó
bộ tải lớp Tuỳ chỉnh mở ra một loạt các khả năng thú vị:
- tải nhiều phiên bản của cùng lớp với classloaders khác nhau (ví dụ để giải quyết conficts phiên bản có thể cho ví dụ)
- Bốc xếp lớp tự động tại thời gian chạy
- Tạo các lớp mới (ví dụ:JVM ngôn ngữ như Clojure sử dụng thủ đoạn classloading khác nhau để tạo ra các lớp học biên soạn mới để đại diện cho chức năng Clojure khi chạy)
- lớp Đang tải từ các nguồn phi tiêu chuẩn
các ứng dụng bình thường Java thường không cần phải lo lắng về classloaders. Nhưng nếu bạn đang viết một khuôn khổ hoặc nền tảng cần lưu trữ mã khác thì chúng trở nên quan trọng hơn/có liên quan hơn.
- 1. Điểm của việc sử dụng lớp ngoại lệ tùy chỉnh trong php là gì?
- 2. Trình tải lớp chính xác là gì?
- 3. Hậu quả của việc sử dụng tùy chọn khóa bảng với đích tải nhanh là gì?
- 4. Việc sử dụng "??" là gì?
- 5. Sử dụng NSCoding trên lớp con của lớp tùy chỉnh
- 6. việc sử dụng wchar_t trong lập trình chung là gì?
- 7. gì là việc sử dụng các lớp cấu hình trong các chương trình Hadoop
- 8. Việc sử dụng Indexers là gì?
- 9. Đang tải các lớp tùy chỉnh trong CodeIgniter?
- 10. Thực hiện việc sử dụng 'with object() như f' trong lớp tùy chỉnh trong python
- 11. Sử dụng trình phân bổ tùy chỉnh với tăng :: bimap
- 12. Những rủi ro cụ thể của việc sử dụng các thuộc tính HTML tùy chỉnh là gì?
- 13. Sử dụng lớp TelephoneNumberUtil là gì?
- 14. Việc sử dụng window.external là gì?
- 15. Việc sử dụng LOCAL_MODULE_TAGS là gì?
- 16. Việc sử dụng Deployment.Current.Dispatcher.BeginInvoke (() => {...}) là gì?
- 17. Việc sử dụng singletonList là gì?
- 18. Việc sử dụng typedef là gì?
- 19. Việc sử dụng udevadm là gì?
- 20. việc sử dụng string.Clone() là gì?
- 21. Việc sử dụng plist là gì?
- 22. Việc sử dụng "khoan dung" là gì?
- 23. Việc sử dụng AtomicReferenceArray là gì?
- 24. Sử dụng chuỗi indexer trên lớp tùy chỉnh
- 25. Việc sử dụng lớp kiên trì trong bất kỳ ứng dụng nào là gì?
- 26. Cách đặt trình tải xuống tùy chỉnh trong Trình tải ảnh toàn cục?
- 27. Trình tạo GWT sử dụng là gì?
- 28. Cách sử dụng tùy chỉnh chung trong lớp GSON TypeToken?
- 29. Cách chính xác để tải các mô-đun/lớp học từ lib/khi sử dụng config.threadsafe là gì! Tùy chọn?
- 30. Việc sử dụng "biến thành" trong qt là gì?
Bài viết hay để viết trình tải lớp tùy chỉnh. http://www.journaldev.com/349/java-classloader –