Перевод байт-кода Java в другие представления и языки программирования

Если версия интерфейса для объектов версии 2 отсутствует в списке, то она не предоставляется. Документ, на который вы ссылаетесь, последний раз обновлялся 21 февраля 2019 года, поэтому он должен быть обновлен.

7
задан Deleted User 1 July 2014 в 17:53
поделиться

4 ответа

ASM имеет древовидный API, который может в основном дать Вам полную структуру байт-кода. Кажется, что это довольно просто в использовании это или даже API посетителя для распечатывания этого в XML или некотором другом формате. Не уверенный, что использует, который является все же.

Перевод назад в Java является заданием декомпилятора, и как Вруб делают хорошо. Но это твердо, потому что a) существует информация, потерянная во время источника переводу байт-кода и b) существует неоднозначность, в которой несколько получают, может привести к тому же коду байта.

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

Если Вы хотите пойти от источника Java до источника другого языка, это было сделано прежде, как в этом преобразователе Java к Python. Это несколько легче, поскольку можно преобразовать Java в AST с чем-то как Antlr, или встроенные инструменты компилятора Java, Джекпот Проекта, и т.д. Даже затем я предполагаю, что Вы не получите очень идиоматический код на выходном языке.

7
ответ дан 6 December 2019 в 23:13
поделиться

Похож на Вас, ищут кросс-компилятор. Я знаю о проекте xmlvm, но никогда не использовал его. Возможно, это удовлетворяет Вашим потребностям.

1
ответ дан 6 December 2019 в 23:13
поделиться

Попробуйте BCEL (библиотека разработки кода байта). Можно реализовать интерфейс Visitor, который можно использовать для генерации то, что когда-либо Вы хотите (исходный код на другом языке, пользовательском AST, xml, что когда-либо).

Я использовал его для проекта в колледже, где я (главным образом) изменил аналитическую платформу программы, которая работала по исходному коду Java в тот, который мог также работать против байт-кода Java. Та задача, включенная, генерируя узлы для внутреннего представления AST платформы анализа.

Кроме того,

Я кратко просмотрел документацию для проекта "ASM", который Вы упомянули. Похоже, что это определяет несколько vistior классов. Необходимо смочь использовать их, чтобы сделать то, что Вы хотите также.

Если Вы не знакомы с шаблоном "посетитель", проверяете описание здесь. Кроме того, если Вы еще не считали его, "Банда Четыре" заказывают, хорошее чтение.

2
ответ дан 6 December 2019 в 23:13
поделиться

Вы могли попробовать gcj для преобразования байт-кода в собственный код.

Если Вы хотите преобразовать на языки как Python/отличный/рубин, возможно, рассматривая пишущий на тех языках непосредственно на JVM (я понимаю, что это не точно, что Вы ищете).

Возможно, очистите некоторые примеры от чего-то вроде этого средство просмотра схемы Кода Байта Eclipse.

Наконец, преобразование из одного низкоуровневого языка (байт-код) другому собирается быть довольно хитрым, и правильность будет проблемой.

1
ответ дан 6 December 2019 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: