2010-08-02 6 views
30

Các khung công tác hàng đầu cho việc tạo mã java là gì?Tạo mã Java

Tôi không tìm kiếm công cụ tạo ứng dụng hoặc DB. Tôi có một bộ xương của một lớp, và tôi cần phải tạo ra nó với các phần năng động khác nhau cho các trường hợp sử dụng khác nhau. Phần lớn các lớp là giống hệt nhau, do đó tôi muốn chạy mã tạo ra các hương vị khác nhau của lớp.

Bất kỳ ai cũng biết một khung tốt?

Cảm ơn.

+5

Bạn cần làm gì? –

+4

http://c2.com/cgi/wiki?CodeGenerationIsaDesignSmell – oluies

+2

Bạn đang cố gắng làm điều gì đó cụ thể, hay đây chỉ là cách thu hoạch một danh sách khung công tác khác? – skaffman

Trả lời

14

cglib là một mạnh mẽ, hiệu suất cao và chất lượng Code Generation Thư viện

jet/velocity đang sử dụng mẫu.

Nếu bạn muốn tạo toàn bộ ứng dụng, hãy kiểm tra khung JBoss Seam.

+0

cglib được JUnit/EasyMock sử dụng, vì vậy có thể đã được bao gồm trong dự án của người dùng –

9

Lưu ý rằng những tiện ích chủ yếu cho kickstarting dự án của bạn bằng cách tạo mã boilerplate.

2

SQL2Java tạo mã CRUD cơ sở dữ liệu từ lược đồ DB.

3

[SQL2JAVA] là một công cụ tuyệt vời. Nó tạo tất cả mã [CRUD] cho Sơ đồ cơ sở dữ liệu. Đó là kết nối tổng hợp là không đủ tốt, bạn có thể tùy chỉnh nó là lớp Manager để duy trì hồ bơi của riêng bạn.

Khác hơn này nếu bạn quan tâm với Model Driven Development (MDD), bạn có thể sử dụng [AndroMDA] hoặc [Borland Cùng], một trong những tốt nhất [nhật thực] công cụ dựa trên mạng .

Nếu bạn quan tâm đến việc tiến xa hơn một chút với việc tạo mã và bắt đầu phát triển phần mềm theo mô hình, bạn nên xem [openArchitectureWare].

Các công cụ phát triển java khác hỗ trợ tạo mã là [Lombok] và [Spoon]. Dự án Lombok cung cấp các tính năng như tự động tạo các phương thức getter/setter mặc định, quản lý tài nguyên tự động (sử dụng chú thích @Cleanup) và xử lý ngoại lệ hướng chú thích.

[cglib], [Velocity template] và [Appfuse] cũng là tuyệt vời.

+15

** [Tại sao] ** bạn đặt ** [ngoặc vuông] ** xung quanh ** [điều] **? :) –

0

Tôi giả định rằng ASM là thư viện tạo mã byte Java phổ biến nhất. Đó là thư viện bytecode cấp thấp nhất, nhưng có các thư viện tạo mã cấp cao khác được xây dựng trên ASM, mặc dù sử dụng ASM trực tiếp không quá khó (hoặc lợi ích của việc sử dụng trực tiếp là kích thước JAR của ASM là rất nhỏ bé).Một số người dùng ASM của được nêu tại http://asm.ow2.org/users.html


EDIT:

Đối với câu hỏi được cập nhật, trong đó đề cập đến các trường hợp sử dụng ("Tôi có một bộ xương của một lớp, và tôi cần phải tạo ra nó với các phần năng động khác nhau cho các trường hợp sử dụng khác nhau. "), câu trả lời của tôi là để cải tiến thiết kế sao cho tất cả các sao chép mã bị xóa và không cần tạo mã. Đọc về các mẫu thiết kế khác nhau có thể đưa ra một số ý tưởng về cách thực hiện. Để có câu trả lời cụ thể hơn, bạn sẽ cần hiển thị một số mã và cụ thể hơn về nhu cầu của bạn.

+1

Nhưng từ góc độ lập trình dễ dàng, đó là một PITA và nguồn tạo ra ở một số ý nghĩa dễ dàng hơn. –

+0

Phụ thuộc vào những gì bạn cần làm. Việc tạo ra bytecode cũng có thể được thực hiện khi chạy và nó có thể được sử dụng để sửa đổi các lớp hiện có, do đó nó mạnh hơn khi tạo ra các tệp nguồn. –

+3

Câu hỏi đặt ra về tạo mã; không biên soạn. ASM quá thấp so với những gì được hỏi. – Recurse

2

tôi sử dụng cơ sở dữ liệu quản lý Druid: http://druid.sourceforge.net/

Nó bắt đầu từ db, có thể được thiết kế ngược lại, và nó có thể tạo tài liệu, sql, các lớp học và các tập tin dựa trên các bảng và các lĩnh vực.

Ngôn ngữ mẫu được sử dụng là vận tốc.

Phần mềm có thể mở rộng thông qua hệ thống plugin.

0

AtomWeaver http://www.atomweaver.com hiện đã ở phiên bản beta công khai. Đó là một IDE tạo mã có thể được sử dụng cùng với IDE hiện tại của bạn (vì vậy, nó không có khung công tác, mà là một ứng dụng độc lập). Với nó, bạn có thể tạo mã boilerplate, nhưng cũng là một dự án hoàn chỉnh.

AtomWeaver triển khai ABSE (Kỹ sư phần mềm dựa trên nguyên tử), là một dạng phát triển phần mềm theo mô hình (không liên quan gì đến UML hoặc MDA).

Về bản chất, đó là một hệ thống dựa trên mẫu.

6

http://www.andromda.org

AndroMDA (phát âm: andromeda) là một khuôn khổ hệ mã nguồn mở mà theo Model Driven Architecture (MDA) mô. Nó lấy (các) mô hình từ (các) công cụ CASE và tạo ra các ứng dụng hoàn toàn có thể triển khai và các thành phần khác.

Tôi đã sử dụng nó và nó rất mạnh mẽ. Nó không chỉ tạo ra các tệp cấu hình và mã từ UML, chỉ để cho nhà phát triển thực hiện các phương thức nghiệp vụ để phát triển, mà còn duy trì mã tạo ra thông qua việc sử dụng các mẫu dessing nổi tiếng.

3

Thử Xtext (http://www.eclipse.org/Xtext/). Bạn sử dụng XText để định nghĩa một DSL, XText sẽ gernerate một Eclipse Editor hỗ trợ DSL này. Sau đó, bạn có thể sử dụng XPand để xác định các mẫu để tạo ra tất cả các loại văn bản (ví dụ như mã java souce).

0

Một phiếu bầu khác cho công cụ mẫu Velocity. Tôi đã sử dụng nó trong nhiều dự án, để tạo mã soạn sẵn EJB2.1, các đối tượng cơ sở dữ liệu, vv Hoạt động tốt và khá dễ học.