Тестируем декомпиляторы java.

78
Находится в разделах:

Декомпиля́тор — это программа, транслирующая исполняемый модуль (полученный на выходе компилятора) в относительно эквивалентный исходный код на языке программирования высокого уровня.

 

Задача: с помощью Google отыскать несколько самых популярных java декомпиляторов и провести сравнительную характеристику возвращаемого исходного кода.

 

Решение:

Этап первый - Ищем декомпиляторы.

Из первой 10ки выдачи Google выбираем 4 декомпилятора, это:

http://www.reversed-java.com/fernflower/ - онлайн декомпилятор, свободное использование.

http://dj.navexpress.com/index.htm  - есть демо-версия на 10 запусков, дальше за программу просят UAH 164.08

http://java.decompiler.free.fr/ - свободное использование, доступен в виде как отдельного приложения так и плагина к Eclipse.

http://cavaj-java-decompiler.en.softonic.com/ - свободное использование.


Этап второй - Какой код декомпилировать?

Необходим код, который бы содержал как можно больше разных языковых конструкций, например, вот такой:

Этап третий - Декомпиляция.

fernflower:

DJ Java Decompiler:

http://java.decompiler.free.fr/:

cavaj:

Этап четвертый - Анализ полученных результатов.

Как видим, не один из декомпиляторов не смог на 100% восстановить исходных код - и это не удивительно, ведь, например, в байт коде, не сохраняются имена переменных, плюс другие особенности, однако ближе всего к действительности оказались два декомпилятора: fernflower и http://java.decompiler.free.fr/.
А так как http://java.decompiler.free.fr/ поставляется еще как плагин к Eclipse - то это однозначно наш выбор.


Конец
Михаил Васильевич Ломоносов склоняется к тому, что ленивый человек в беспечном покое сходен с неподвижною болотною водою, которая кроме смраду и презренных гадин ничего не производит.

max аватар

Отличный обзор.

Обзор прекрасный - есть результат: своего рода рекомендация в выборе инструмента. PS: ещё есть инструмент - IDA (интерактивный дизассемблер, поддерживает и Java). При необходимости приходится и им пользоваться...

vfedorov, спасибо.

Отправить комментарий

CAPTCHA
Чтобы оставить комментарий, введите пожалуйста код, изображенный на картинке
Image CAPTCHA
Введите символы, изображенные на картинке