Có công cụ nào liệt kê danh sách nào và khi nào một số lớp được ứng dụng sử dụng hiệu quả hay không, thậm chí tốt hơn, tự động cắt các thư viện JAR để chỉ cung cấp các lớp được tham chiếu và sử dụng?Làm cách nào để xác định các lớp nào được chương trình Java sử dụng?
Trả lời
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.
Bạn có thể thử JarJar http://code.google.com/p/jarjar/
Nó cắt bớt phụ thuộc của chai.
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. –
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ả.
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. –
Đố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.
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
Sử dụng mã nguồn mở !! –
- 1. Làm thế nào để biết dòng lệnh được Eclipse sử dụng để chạy chương trình java?
- 2. Làm cách nào để tạo chương trình Java thực thi?
- 3. Thư viện/chương trình nào có thể được sử dụng để tạo Java bytecode?
- 4. Làm cách nào để bạn sử dụng plugin firefox trong chương trình trình duyệt web selenium được viết bằng java?
- 5. Làm cách nào để cài đặt chương trình Java?
- 6. Java - Làm cách nào để sử dụng tệp lớp?
- 7. Làm cách nào để xác định quy trình nào đang sử dụng cổng nối tiếp?
- 8. Tôi làm cách nào để xác định dung lượng bộ nhớ mà chương trình .NET của tôi đang sử dụng?
- 9. Làm thế nào để vá một chương trình Java?
- 10. Làm cách nào để chạy mã java đã được dán vào chương trình
- 11. Làm thế nào để thực hiện chương trình một bộ thử nghiệm bằng cách sử dụng JUnit4 theo chương trình?
- 12. Làm cách nào để đọc phiên bản ứng dụng được xác định trong tệp kê khai theo chương trình?
- 13. Xác định các từ bằng cách sử dụng Java
- 14. Làm thế nào để xác định và sử dụng các biến tĩnh trong lớp F #
- 15. Tôi làm cách nào để xác định lại chương trình con và giữ lại chương trình con cũ?
- 16. Làm cách nào để xác định C++ redistributables chương trình của tôi cần chạy?
- 17. Làm thế nào để sử dụng Sqoop trong Chương trình Java?
- 18. Làm cách nào để nhập các lọ vào chương trình java của tôi?
- 19. Làm cách nào tôi có thể xác định chương trình các phần tử XML có thể được chèn tiếp theo?
- 20. Làm cách nào để xác định và sử dụng biến trong XAML để xác định màu?
- 21. Làm cách nào để sử dụng JDK6 ToolProvider và JavaCompiler với trình nạp lớp ngữ cảnh?
- 22. Có lý do nào để sử dụng các lớp trong Python nếu chỉ có một lớp trong chương trình không?
- 23. Làm thế nào để kiểm tra theo chương trình nếu xác nhận được bật?
- 24. Làm cách nào để truy cập bộ nhớ sử dụng theo chương trình qua JMX?
- 25. Làm thế nào để Daemonize một chương trình Java?
- 26. Linux: Làm thế nào để tiêu diệt các chương trình sử dụng cổng 1935?
- 27. Làm thế nào để có được đường dẫn chạy chương trình java
- 28. Làm cách nào để sử dụng java cho mỗi vòng lặp với các lớp tùy chỉnh?
- 29. Làm cách nào để xác định mức sử dụng CPU hiện tại từ trình bao?
- 30. Làm cách nào để xác định phần tử cuối cùng khi sử dụng trình lặp?
Đ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