2009-01-24 33 views

Trả lời

9

Hãy nhớ rằng, như đã được chứng minh bởi halting problem, bạn không thể chắc chắn nói rằng một lớp cụ thể là hoặc không được sử dụng. Ít nhất là trên mọi ứng dụng phức tạp vừa phải. Đó là bởi vì các lớp học không chỉ bị ràng buộc tại thời gian biên dịch nhưng có thể được tải:

  • dựa trên cấu hình XML (ví dụ Spring);
  • được tải từ các tệp thuộc tính (ví dụ: tên trình điều khiển JDBC);
  • được thêm động với chú thích;
  • được tải dưới dạng kết quả của đầu vào bên ngoài (ví dụ: đầu vào của người dùng, dữ liệu từ cơ sở dữ liệu hoặc cuộc gọi thủ tục từ xa);
  • v.v.

Vì vậy, chỉ xem mã nguồn là không đủ. Điều đó đang được nói, bất kỳ IDE hợp lý nào sẽ cung cấp cho bạn các công cụ phân tích phụ thuộc. IntelliJ chắc chắn không.

Những gì bạn thực sự cần là thiết bị đo thời gian chạy trên những gì ứng dụng của bạn đang làm nhưng thậm chí không được đảm bảo. Sau khi tất cả, một con đường mã cụ thể có thể đi lên một trong 10 triệu chạy do một sự kết hợp kỳ lạ của đầu vào, do đó bạn không thể được đảm bảo rằng bạn đang bảo hiểm.

Các công cụ như thế này có một số giá trị mặc dù. Bạn có thể muốn xem một cái gì đó như Emma. Profilers như Yourkit có thể cung cấp cho bạn một đoạn mã mà bạn có thể làm một phân tích trên quá (mặc dù điều đó sẽ không nhận các đối tượng thoáng qua terribly tốt).

Cá nhân tôi tìm thấy ít giá trị ngoài những gì IDE sẽ cho bạn biết: loại bỏ các JAR không sử dụng. Chi tiết hơn là chỉ yêu cầu rắc rối cho ít hoặc không đạt được.

+0

Điều gì sẽ xảy ra nếu chúng tôi không tải các lớp động? Nói cách khác, không có cấu hình XML, tệp thuộc tính, chú thích, rpc và whatnot. Sau đó, một công cụ như vậy có thể được * bảo đảm * để hoạt động? – Pacerier

3

Bạn có thể thử JarJar http://code.google.com/p/jarjar/

Nó cắt bớt phụ thuộc của chai.

+0

Cụ thể tạo một lọ chất béo và một lọ chỉ là mã của bạn. Sử dụng 'java-jar jarjar.jar tìm lớp code.jar fat.jar' sẽ liệt kê các phụ thuộc của bạn. Bạn có thể tạo một tập tin quy tắc của "giữ" báo cáo dựa trên điều này và sau đó xử lý bình chất béo của bạn vào lọ giảm thiểu của bạn. –

4

Có, bạn muốn ProGuard. Nó là một trình rút gọn mã nguồn Java hoàn toàn miễn phí và bộ obfuscator. Thật dễ dàng để cấu hình, nhanh chóng và hiệu quả.

+1

Chỉ cần đảm bảo bạn cung cấp danh sách đúng các lớp 'gốc', từ đó tài liệu tham khảo sẽ được tìm kiếm và bạn không quên bất kỳ lớp nào mà bạn sử dụng bằng cách phản chiếu. –

0

Đối với hầu hết các trường hợp, bạn có thể làm điều đó khá dễ dàng chỉ bằng cách sử dụng javac.

Xóa các tệp lớp hiện tại của bạn. Gọi javac với tên của các lớp nhập cảnh của bạn. Nó sẽ biên dịch những lớp học cần thiết, nhưng không còn nữa. Công việc hoàn thành.

+0

Tôi nghĩ rằng OP có nghĩa là thư viện cũng như các lớp học của riêng bạn – Chii

+0

Sử dụng mã nguồn mở !! –

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