2010-08-02 2 views
30

Каковы основные рамки для генерации кода Java?Генерация кода Java

Я не ищу инструмент для создания базы данных или приложений. У меня есть скелет класса, и мне нужно сгенерировать его с помощью разных динамических частей для разных вариантов использования. Большинство классов идентичны, поэтому я хочу запустить код, который генерирует разные вкусы класса.

Кто-нибудь знает хорошие рамки?

Спасибо.

+5

Что вам нужно сделать? –

+4

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

+2

Вы пытаетесь сделать что-то конкретное, или это просто способ сбора другого списка фреймворков? – skaffman

ответ

14

cglib является мощным, высокая производительность и качество кода библиотеки

jet/velocity используют шаблоны.

Если вы хотите создать целое приложение, ознакомьтесь с картой JBoss Seam.

+0

cglib используется JUnit/EasyMock, возможно, уже включен в проект пользователей –

9

Обратите внимание, что эти утилиты в основном для kickstarting проекта за счет генерации кода шаблонный.

2

SQL2Java генерирует код базы данных CRUD из схемы БД.

3

[SQL2JAVA] - отличный инструмент. Он генерирует все [CRUD] код для схемы базы данных. Это пул соединений недостаточно хорош, вы можете настроить его класс Manager для поддержки своего собственного пула.

Кроме этого, если вы заинтересованы в Model Driven Development (MDD), вы можете использовать [AndroMDA] или [Борланд вместе], один из инструментов на основе лучших [затмение] там ,

Если вы заинтересованы в дальнейшей разработке кода и в разработке программного обеспечения с драйверами модели, вам следует взглянуть на [openArchitectureWare].

Другие средства разработки Java, которые поддерживают генерацию кода являются [Ломбок] и [Ложка]. Проект Lombok предлагает такие функции, как автоматическое создание методов getter/setter по умолчанию, автоматическое управление ресурсами (с использованием аннотации @Cleanup) и обработку исключений, основанных на аннотациях.

[CGLIB], [шаблон Velocity] и [AppFuse] также велики.

+15

** [Почему] ** вы положили ** [скобки] ** вокруг ** [вещи] **? :) –

0

Я предполагаю, что ASM является самой популярной библиотекой генерации байт-кода Java. Это самая низкоуровневая библиотека байт-кода, но есть и другие библиотеки генерации более высокого уровня, которые построены на ASM, хотя использование ASM напрямую также не слишком тяжелое (одним из преимуществ прямого использования является то, что размер JAR ASM очень маленький).Некоторые из пользователей ASM в указывались на http://asm.ow2.org/users.html


EDIT:

Для обновленного вопроса, который упоминает случай использования ("У меня есть скелет класса, и мне нужно, чтобы создать его с разные динамические части для разных случаев использования. »), мой ответ улучшает дизайн, чтобы удалить все дубликаты кода и не требуется генерация кода. Чтение о разных шаблонах дизайна может дать некоторые идеи о том, как это сделать. Чтобы получить более конкретный ответ, вам нужно будет показать какой-то код и более конкретно о ваших потребностях.

+1

Но с точки зрения простоты программирования это PITA, а источник генерации в некотором смысле проще. –

+0

Зависит от того, что вам нужно сделать. Генерация байтов может быть выполнена также во время выполнения, и ее можно использовать для изменения существующих классов, поэтому она более эффективна для генерации исходных файлов. –

+3

Вопрос был о генерации кода; нет сбор. ASM слишком низка для того, что было задано. – Recurse

2

Я использовал друида менеджер баз данных: http://druid.sourceforge.net/

Он начинается с БД, которая может быть обратной инженерии, и он может генерировать документацию, SQL, классы и файлы на основе таблиц и полей.

Используемый язык шаблонов - это скорость.

Программное обеспечение расширяемо через плагиновую систему.

0

AtomWeaver http://www.atomweaver.com в настоящее время публично бета-версия. Это IDE генерации кода, который можно использовать вместе с текущей средой IDE (так что это не фреймворк, а автономное приложение). С его помощью вы можете создать шаблонный код, а также полный проект.

AtomWeaver реализует ABSE (Atom-Based Software Engineering), которая является формой разработки программного обеспечения, ориентированного на модель (не имеет ничего общего с UML или MDA).

Это, по сути, система на основе шаблонов.

6

http://www.andromda.org

AndroMDA (произносится: Андромеда) является открытым исходным кодом рамки поколения, который следует Model Driven Architecture (MDA) парадигмы. Он принимает модели (ов) из CASE-инструмента (ов) и генерирует полностью развертываемые приложения и другие компоненты.

Я использовал его и очень мощный. Он не только генерирует файлы конфигурации и код из UML, оставляя разработчику только реализацию бизнес-методов для разработки, но также поддерживает код генерации с использованием известных шаблонов десерации.

3

Попробуйте Xtext (http://www.eclipse.org/Xtext/). Вы используете XText для определения DSL, XText будет использовать редактор Eclipse, поддерживающий этот DSL. Затем вы можете использовать XPand для определения шаблонов для генерации всего текста (например, кода java souce).

0

Еще одно голосование за двигатель шаблонов Velocity. Я использовал его в нескольких проектах, для создания шаблона EJB2.1, объектов базы данных и т. Д. Отлично работает и довольно легко учиться.

Смежные вопросы