Ho avuto un certo successo utilizzando ASM per modificare entrambe le classi esistenti a livello di byte di codice o per generare classi completamente nuove al volo. Il tutorial ti guida attraverso questo in modo molto comprensibile.
ASM come la maggior parte di tali strumenti genera bytecode non sorgente. La ragione di ciò è che se si vuole generare ed eseguire dinamicamente un nuovo codice da un programma, storicamente non era semplice invocare il compilatore Java. Pertanto è stato generalmente più facile generare e utilizzare bytecode rispetto alla sorgente.
Se è necessario generare ed eseguire il codice immediatamente all'interno del programma, è consigliabile utilizzare lo strumento di manipolazione del codice. Se tutto ciò di cui hai bisogno è il codice sorgente Java, eseguirò il mio generatore di codice che prende il mio formato di input e genera il codice. Potresti voler cercare un framework per aiutarti con questo, ma dal momento che un file sorgente è solo testo, in genere è altrettanto facile crearlo tu stesso, specialmente se hai un formato di input personalizzato.
fonte
2010-04-12 16:59:30
Che tipo di generazione di codice, per quale tipo di programmi? Generazione del codice in fase di esecuzione o no? Si prega di essere più specifici. –
Qual è l'obiettivo finale qui? Java ha molti strumenti per creare o modificare il codice byte (codice Java compilato), ma non ne conosco nessuno per la generazione diretta del codice Java. – ig0774
sto costruendo una piattaforma che ha come obiettivo principale quello di automatizzare un'operazione. Dando un po 'di input, voglio generare codice per uno strumento esterno. Quindi non è generazione su runtime. Voglio generare e produrre in un file reale. –