ASM имеет дерево API, которое может дать вам полную структуру байт-кода. Похоже, это довольно легко использовать, или даже API посетителя, чтобы распечатать это в XML или другом формате. Не уверен, что польза от этого, хотя.
Перевод обратно на Java - это работа декомпилятора, и такие, как Jad, делают хорошо. Но это сложно, потому что: а) во время трансляции байт-кода теряется информация, исходящая от источника, и б) существует неоднозначность в том, что несколько источников могут выдавать один и тот же байт-код.
Если вы действительно хотите перейти от байт-кода к другому высокоуровневому языку напрямую, это будет непросто сделать как всесторонне, так и содержательно, по тем же причинам декомпиляция трудна, за исключением еще хуже на другом языке.
Если вы хотите перейти от источника Java к источнику другого языка, это было сделано ранее, как в этом преобразователе Java-в-Python . Это несколько проще, так как вы можете конвертировать Java в AST с помощью чего-то вроде Antlr или встроенных инструментов компилятора Java, Project Jackpot и т. Д. Даже тогда, я полагаю, вы выиграли ' получить очень идиоматический код на целевом языке.