Tôi đang tìm thư viện thao tác bytecode Java được duy trì tốt với API trực quan. Dường như có khá nhiều người trong số họ. Có đề xuất nào để thử?Đề xuất thư viện thao tác Bytecode Java Đề xuất
Trả lời
Câu trả lời hay nhất cho câu hỏi của bạn sẽ được điều chỉnh bởi các nhu cầu và mục tiêu cụ thể của bạn; nếu bạn có thể mở rộng dựa trên những gì bạn đang cố gắng hoàn thành, tôi có thể cung cấp một phản ứng phù hợp hơn.
Thay đó, tuy nhiên, trong kinh nghiệm của tôi, ASM cung cấp có lẽ là sự kết hợp tốt nhất của sự trưởng thành, linh hoạt và dễ sử dụng:
- Nó được phát triển tương đối tích cực: mặc dù phiên bản mới nhất là từ tháng 6 năm 2009, các nhà phát triển thường xuyên thực hiện cam kết với VCS của họ.
- Nó đã được sử dụng rộng rãi trong một số sản phẩm Java nổi bật, chẳng hạn như AspectJ, Groovy, Cobertura và nhiều sản phẩm khác, hứa hẹn một nền tảng người dùng rộng và do đó là một cộng đồng rộng lớn để hỗ trợ.
- Tài liệu được viết khá kỹ lưỡng và có một số hướng dẫn, hướng dẫn sử dụng và tài liệu tham chiếu có sẵn từ số OW2 Consortium và cộng đồng nói chung.
N.B. Nhận xét @Yuri bên dưới mô tả tình huống mà cá nhân tôi chưa gặp phải nhưng điều đó có khả năng gây ra trở ngại đáng kể. Hãy lưu ý quan sát/kinh nghiệm của mình trong khi đánh giá các thư viện thao tác bytecode khác nhau.
Điều đó thực sự phụ thuộc vào cách bạn xác định trực quan ;-) Tôi bắt đầu sử dụng ASM hai tuần trước cho một nhiệm vụ nhất định trong dự án hiện tại của tôi và nó hoạt động như một sự quyến rũ. Nó chỉ mất cho tôi một vài giờ để hiểu nó và có thể sử dụng nó, nhưng tôi sẽ không chính xác gọi API trực quan. Nhưng nếu bạn biết một chút về Java bytecode và đã quen thuộc với mô hình khách truy cập, đường cong học tập không phải là rất cao, IMO.
Một ưu điểm khác của ASM là nó dường như được đóng gói với API tiêu chuẩn ít nhất trong JDK mặt trời, mặc dù trong một gói khác (com.sun.xml.internal.ws.org.objectweb.asm và gói con).
Bạn nói đúng: đánh giá bởi một số API lạ trên mạng, định nghĩa của mọi người về trực quan dường như khác nhau rất nhiều;). Tôi đã dành một chút thời gian nhìn vào ASM, và tôi ít bị đe dọa hơn tôi mong đợi! Tôi nghĩ tôi sẽ gắn bó với nó. Cảm ơn câu trả lời của bạn. – Daniel
Vui lòng không sử dụng các gói triển khai ... –
Vâng, đúng, không sử dụng các gói triển khai. Và đừng thao tác bytecode, trừ khi bạn thực sự phải ;-) –
Hãy xem bài viết này: http://www.pabrantes.net/blog/space/start/2008-03-24/1
Một chút cũ nhưng vẫn có liên quan.
ASM Và Javassist là những ứng dụng được sử dụng nhiều nhất hiện nay. Bcel sắp chết.
- 1. Bạn đề xuất thư viện Bộ sưu tập Java nào?
- 2. Đề xuất cho thư viện nén .NET
- 3. Thư viện hoạt hình JavaScript ... Đề xuất
- 4. đề xuất cho tập lệnh thư viện
- 5. đề xuất cho thư viện hiển thị biểu đồ 3D?
- 6. Các mẫu thao tác Bytecode
- 7. CORBA từ .NET - (dis) thư viện được đề xuất?
- 8. Đề xuất thư viện xác thực biểu mẫu javascript
- 9. Đề xuất thư viện thống kê javascript tốt?
- 10. Một thư viện hợp tác lọc/kết hợp/đề xuất tốt cho Python/Django?
- 11. Thư viện/hướng dẫn để thao tác video trong java
- 12. Thư viện Java được đề xuất để tạo video theo chương trình
- 13. Đề xuất Thư viện trò chơi Java/Android - thẻ, bảng, v.v.?
- 14. Thư viện được đề xuất/howtos để sử dụng WMI với java?
- 15. Thao tác chi tiết tiêu đề WCF
- 16. Thuật toán đề xuất/đề xuất đơn giản
- 17. Thuật toán đề xuất
- 18. Thư viện để thao tác đa thức đa biến
- 19. Đề xuất thư viện khách hàng Redis để sử dụng từ Scala
- 20. Mảng đề xuất Java (Solr) đắt bao nhiêu?
- 21. Đề xuất công cụ mẫu
- 22. Trích xuất tiêu đề từ tệp PDF?
- 23. Các thuật toán C# và thư viện cấu trúc dữ liệu nguồn mở được đề xuất
- 24. Thư viện hiệu quả để đề xuất từ khóa cho nội dung là gì?
- 25. đề xuất thư viện/API để giải nén tệp trong C#
- 26. Đề xuất cho thư viện phân tích HTTP trong C/C++
- 27. Thư viện PL/SQL nào để tạo JSON tự động Bạn có đề xuất không?
- 28. Thư viện API Twitter nào cho Ruby bạn có đề xuất không?
- 29. Đề xuất cho thư viện OAuth2 để tích hợp với Jersey?
- 30. Đề xuất cho thư viện ma trận và véc tơ nhỏ dựa trên c
Xin lỗi về việc thiếu chi tiết cụ thể trong câu hỏi. Tôi không muốn đưa ra các chi tiết cụ thể về những gì tôi đang làm, nhưng câu trả lời của bạn khá hữu ích. Cảm ơn. Tôi nghĩ tôi sẽ sử dụng ASM. – Daniel
Nhìn vào câu trả lời này tôi đã thử ASM và nó (4.0) có hoặc là một lỗi hoặc hành vi thực sự kỳ lạ. Tôi đang sử dụng API cây và lặp lại hướng dẫn của phương thức InsnList. Bây giờ, lần lặp đầu tiên cho một kết quả và một phép lặp giống hệt nhau sau lần đầu tiên đưa ra một kết quả khác - một lệnh được sao chép và đặt lên đầu danh sách. Không có mã sửa đổi nào cả, chỉ hai lần lặp lại một lần. Chuyển sang Javassist. –
@YuriUshakov: Đó không phải là một tình huống mà cá nhân tôi đã trải qua. Cảm ơn cho những người đứng đầu lên! – RTBarnard