Генерация Java-кода (Метапрограммирование, Отражение, wtv) - PullRequest
5 голосов
/ 12 апреля 2010

Кто-нибудь знает инструмент для Java (что-то вроде кодекса для C #), который предоставляет способ генерирования кода Java в файл .java?

EDIT : Я строю платформу, чтобы его основной целью было автоматизировать операцию. Давая некоторый вклад, я хочу сгенерировать код для внешнего инструмента. Так что это не генерация во время выполнения. Я хочу сгенерировать и вывести это в фактический файл.

Ответы [ 5 ]

1 голос
/ 14 апреля 2010

ABSE и AtomWeaver образуют среду для генерации кода и разработки на основе моделей, где вы можете легко реализовать то, что вы хотите. ABSE - это новая методология, в которой вы создаете генератор кода из более мелких битов (называемых Atoms), а AtomWaver - это простая IDE, которая позволяет вам реализовывать, манипулировать и использовать ваши модели генератора.

Это также позволяет непрограммистам создавать программы / конфигурации / все, что угодно, из уже созданных частей (атомы, которые вы предварительно подготовили).

Этот проект сейчас только публично запускается, и сейчас доступна альфа-версия. ABSE открыт, и AtomWeaver бесплатен для личного и коммерческого использования.

Получить более подробную информацию здесь: http://www.abse.info (Отказ от ответственности: я руководитель проекта)

1 голос
/ 12 апреля 2010

JET может быть устаревшим (я не использовал его) JET Tutorial Part 1

Больше плагинов для Eclipse Плагинов для генерации кода

EDIT: Извините, я не знаю кодирования и какие функции этот инструмент.

Автономный Freemarker и Скорость см. также пример

0 голосов
/ 14 апреля 2010

Я не уверен, что вам действительно нужно, но посмотрите на javassist . Это то, что вы ищете?

0 голосов
/ 13 апреля 2010

То, что вы можете попробовать, это использовать существующую грамматику (например, из ANTLR) и построить AST. Затем из AST сгенерируйте код. Это должно быть гораздо надежнее, чем простой шаблон. Что-то посередине я предлагаю (открывающий глаза) разговор Теренса Парра о StringTemplate . (Извините, под рукой нет ссылки для разговора)

0 голосов
/ 12 апреля 2010

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

ASM , как и большинство таких инструментов, генерирует байт-код, а не источник. Причина этого в том, что если вы хотите динамически генерировать и выполнять новый код с помощью программы, исторически было непросто вызывать компилятор Java. Поэтому, как правило, было проще создавать и использовать байт-код, чем исходный код.

Если вам нужно сгенерировать и запустить код непосредственно в вашей программе, я рекомендую вам использовать инструмент манипулирования байт-кодом. Если все, что вам нужно, это исходный код Java, я бы свернул свой собственный генератор кода, который берет мой формат ввода и генерирует код. Возможно, вы захотите поискать framework , чтобы помочь вам в этом, но поскольку исходный файл - это просто текст, обычно его так же легко создать самостоятельно, особенно если у вас есть пользовательский формат ввода.

...