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