2012-11-10 40 views
5

libs tạo mã java "tốt" là gì? Tôi tìm thấy một phần thế hệ trong JaxMe, nhưng nó là người nghèo và già. Tôi thích tạo mã java thông qua mã java. Vì vậy, về cơ bản sử dụng một lib để nói rằng nó phải tạo ra một lớp cụ thể hoặc giao diện với các trường X, các phương thức Y, v.v. sau đó được ghi vào hệ thống tệp .. Tôi biết rằng các khung sử dụng chúng, nhưng không thể tìm một thư viện độc lập .. - EdTìm kiếm thư viện tạo mã java

+1

Nếu chương trình của bạn biết tên của lớp mà nó muốn tạo, tên và nội dung của tất cả các thành viên, tại sao bạn cần một trình tạo mã? Sẽ không một tuyên bố in cho một dòng đầu ra là đủ? Các trình tạo mã thú vị phải tự thêm một cái gì đó để có ích. –

+0

Thông tin bạn nói về không được biết trước và thậm chí nếu nó biết, bạn đang nói về một khối lượng thông tin thay đổi mỗi năm do thay đổi ... Ví dụ: xbrl/xsd mà bạn muốn sử dụng để tạo mã và các xác nhận tương ứng ... – edbras

+0

Bản sao của http://stackoverflow.com/questions/121324/a-java-api-to-generate-java-source-files –

Trả lời

1

Có lẽ bạn nên quan tâm đến cglib?

3

Có một số thư viện với các khả năng khác nhau và dễ sử dụng:

Bạn có thể sẽ phải xem xét API của mỗi một để xác định e cái nào phù hợp hơn cho mục đích của bạn.

+4

Tất cả (ngoại trừ có thể là cglib) dường như là byte -công cụ chỉnh sửa mã, không phải máy phát mã nguồn ... –

+0

Cảm ơn phản hồi, nhưng như đã đề cập, chúng chủ yếu là các trình tạo mã byte và tôi đang nói về các trình tạo mã nguồn. Tôi nhận thấy rằng không có dự án tạo mã nguồn độc lập trưởng thành, nhưng chủ yếu là dự án con như codemodel và apache JaxMe ... thường là "cũ" – edbras

+0

@edbras: Tôi nghĩ bạn hỏi về thế hệ bytecode, vì điều đó là ý nghĩa của hầu hết mọi người khi nói về tạo mã trong Java. Nói chung, các trình tạo mã nhằm mục đích cho phép sử dụng các trừu tượng mức cao hơn. Sự trừu tượng đó sẽ là gì trong trường hợp của bạn, xem xét đầu ra đã là mã nguồn * Java * chưa? – thkala

0

Tôi thích ASM là tốt nhất. Nó sử dụng một mẫu khách truy cập có thể hơi khó hiểu lúc đầu khi bạn đang tạo mã; nhưng một khi bạn nắm bắt nó, nó thực sự sạch sẽ và dễ dàng.

0

Tôi đã xem xét lại điều này một chút và có một khoảng thời gian khá khó khăn để tìm kiếm bất kỳ điều gì hữu ích. Các ứng cử viên hứa hẹn nhất tôi thấy thực sự đã được xây dựng ngay vào trình biên dịch:

Java annotation processing (APT)

Họ gần đây bao gồm APT với javac, vì vậy nó luôn luôn có sẵn.

Tôi chưa thực sự có quá nhiều thời gian để nhìn vào nó, nhưng nhìn thoáng qua, nó có vẻ vô cùng mạnh mẽ (tạo/sửa đổi mã nguồn hoặc mã byte, ném lỗi, cảnh báo, ...) nhưng nó có thể là một chút phức tạp để quấn đầu của bạn xung quanh. Có thể có một số hướng dẫn tốt ngoài đó, nhưng tôi không có liên kết cụ thể cho bạn vào lúc này.

+0

Xử lý chú thích có vẻ khá tuyệt vời, cho đến khi bạn thực sự cố gắng sử dụng nó. Thời gian qua tôi đã kiểm tra, bạn phải nhảy qua một số lượng đáng kinh ngạc của hoops để ví dụ: lấy tệp nguồn hiện tại và bạn * vẫn * cần phải gây rối với hệ thống xây dựng của bạn để sử dụng nó ... đôi khi tôi chỉ bỏ lỡ bộ tiền xử lý C ... – thkala

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