Генерация Java кода
Каковы ведущие рамки для генерации кода Java?
Я не ищу БД или инструмент для создания приложений. У меня есть скелет класса, и мне нужно сгенерировать его с разными динамическими частями для разных вариантов использования. Большая часть класса идентична, поэтому я хочу запустить код, который генерирует различные варианты класса.
Кто-нибудь знает хорошие рамки?
Благодарю.
10 ответов
cglib - это мощная, высокопроизводительная и качественная библиотека генерации кода
Джет / скорость используют шаблоны.
Если вы хотите создать целое приложение, ознакомьтесь со структурой JBoss Seam.
Обратите внимание, что эти утилиты в основном предназначены для запуска вашего проекта путем генерации стандартного кода.
AndroMDA (произносится как andromeda) - это платформа для генерации открытого исходного кода, которая следует парадигме MDA. Он берет модель (ы) из CASE-инструмента (ов) и генерирует полностью развертываемые приложения и другие компоненты.
Я использовал это, и это очень мощно. Он не только генерирует файлы конфигурации и код из UML, оставляя разработчику только реализацию бизнес-методов для разработки, но также поддерживает генерирование кода посредством использования хорошо известных шаблонов дессинга.
Попробуйте Xtext ( http://www.eclipse.org/Xtext/). Вы используете XText для определения DSL, XText создаст Eclipse Editor, поддерживающий этот DSL. Затем вы можете использовать XPand для определения шаблонов для генерации всех видов текста (например, кода Java-кода).
[ SQL2JAVA ] отличный инструмент. Он генерирует весь код [ CRUD ] для схемы базы данных. Его пул соединений недостаточно хорош, вы можете настроить его класс Manager для поддержки своего собственного пула.
Кроме этого, если вы заинтересованы в разработке на основе моделей (MDD), вы можете использовать [ AndroMDA ] или [ Borland's Together ], один из лучших инструментов на основе [ eclipse ].
Если вы заинтересованы в том, чтобы пойти немного дальше с генерацией кода и приступить к разработке программного обеспечения на основе моделей, вам следует взглянуть на [ openArchitectureWare ].
Другими инструментами разработки Java, которые поддерживают генерацию кода, являются [ Lombok ] и [ Spoon ]. Project Lombok предлагает такие функции, как автоматическое создание методов получения / установки по умолчанию, автоматическое управление ресурсами (с помощью аннотации @Cleanup) и обработка исключений на основе аннотаций.
[ cglib ], [ Velocity template ] и [ AppFuse ] также великолепны.
Я использовал менеджер баз данных Druid: http://druid.sourceforge.net/
Он начинается с db, который может быть подвергнут обратному проектированию, и может генерировать документацию, sql, классы и файлы на основе таблиц и полей.
Используемый язык шаблонов - скорость.
Программное обеспечение расширяется через систему плагинов.
Я предполагаю, что ASM является самой популярной библиотекой генерации байт-кода Java. Это самая низкоуровневая библиотека байт-кода из всех существующих, но есть и другие высокоуровневые библиотеки генерации кода, которые построены на ASM, хотя непосредственное использование ASM также не слишком сложно (одно из преимуществ прямого использования заключается в том, что размер JAR ASM очень маленький). Некоторые пользователи ASM упомянуты по адресу http://asm.ow2.org/users.html
РЕДАКТИРОВАТЬ:
Для обновленного вопроса, в котором упоминается сценарий использования ("У меня есть скелет класса, и мне нужно сгенерировать его с разными динамическими частями для разных вариантов использования."), Мой ответ заключается в том, чтобы улучшить дизайн так, чтобы все дублирование кода удаляется и генерация кода не требуется. Чтение о различных шаблонах дизайна может дать некоторые идеи о том, как это сделать. Чтобы получить более конкретный ответ, вам нужно будет показать некоторый код и более конкретно рассказать о своих потребностях.
Еще один голос за шаблонный движок Velocity. Я использовал его в нескольких проектах, для генерации шаблонного кода EJB2.1, объектов базы данных и т. Д. Отлично работает и довольно прост в освоении.
AtomWeaver http://www.atomweaver.com/ теперь находится в публичной бета-версии. Это IDE для генерации кода, которую можно использовать вместе с вашей текущей IDE (так что это не фреймворк, а отдельное приложение). С его помощью вы можете генерировать стандартный код, а также полный проект.
AtomWeaver реализует ABSE (Atom-Based Software Engineering), которая является формой разработки программного обеспечения на основе моделей (не имеет ничего общего с UML или MDA).
По сути, это система на основе шаблонов.