ASM ha l'albero api che può fondamentalmente fornire l'intera struttura del bytecode. Sembra che sia abbastanza facile da usare quello o anche il visitatore a stamparlo in formato XML o in qualche altro formato. Non sono sicuro di quale sia l'uso.
La traduzione di nuovo in Java è il lavoro di un decompilatore e quelli come Jad fanno bene. Ma questo è difficile perché a) ci sono informazioni perse durante la traduzione da sorgente a bytecode e b) c'è ambiguità in quella fonte multipla che può produrre lo stesso codice byte.
Se si desidera passare direttamente da un codice bytecode ad un altro linguaggio di alto livello, sarà difficile eseguirlo in modo completo e significativo, per tutti gli stessi motivi la decompilazione è difficile, tranne che in un altro linguaggio.
Se si desidera passare dall'origine Java all'origine di un'altra lingua, ciò è stato fatto prima, come in questo Java-to-Python converter. In qualche modo è più semplice convertire Java in un AST con qualcosa come Antlr, o gli strumenti del compilatore Java incorporato, Project Jackpot, ecc. Anche allora, presumo che non otterrai codice molto idiomatico nella lingua di destinazione.
fonte
2009-03-12 14:10:11