2012-05-31 31 views
7

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ì

+0

Bài viết hay để viết trình tải lớp tùy chỉnh. http://www.journaldev.com/349/java-classloader –

Trả lời

22

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.
+3

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

+0

@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. –

11

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.

2

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.

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