Какую программу я могу использовать для декомпиляции файла класса? Получу ли я на самом деле Java-код или это просто код сборки JVM?
На вопросы производительности Java на этом сайте я часто вижу ответы людей, которые «декомпилировали» файл классов Java, чтобы увидеть, как компилятор оптимизирует определенные вещи.
java
decompiler
койка
источник
источник
Ответы:
Обновление февраля 2016:
www.javadecompilers.com перечисляет JAD как:
Таким образом, ваш пробег может варьироваться в зависимости от недавнего JDK (7, 8).
На этом же сайте перечислены другие инструменты.
А javadecompiler, как отметил Сальвадор Валенсия в комментариях (сентябрь 2017 г.), предлагает SaaS, где вы загружаете
.class
файл в облако, и он возвращает вам декомпилированный код.Оригинальный ответ: октябрь 2008
Декомпилятор Java (еще один декомпилятор Fast Java) имеет:
Он работает с компиляторами от JDK 1.1.8 до JDK 1.7.0 и другими ( Jikes , JRockit и т. Д.).
Он показывает онлайн демо-версию, которая на самом деле полностью функциональна! Вы можете просто поместить файл jar на страницу и увидеть декомпилированный исходный код, ничего не устанавливая.
источник
Есть несколько декомпиляторов ... Быстрый поиск дает:
И многое другое
Они производят код Java. Java поставляется с чем-то, что позволяет вам видеть байт-код JVM ( javap ).
источник
Чтобы увидеть исходный код Java, проверьте декомпилятор. Иди ищи джад .
Если вы хотите увидеть байт-коды, просто используйте javap, который поставляется с JDK.
источник
Я попробовал несколько, и Процион, казалось, работал лучше для меня. Он находится в активной разработке и поддерживает многие функции последних версий Java.
Это другие, которые я пробовал:
-skip
флаг командной строки, чтобы он не останавливался на ошибках. Активно развивается и, что интересно, написано на Python.источник
IGNORE_EXCEPTIONS
что теперь эта вещь была изменена на флаг командной строки-skip
.Я использую JAD Decompiler .
Для этого есть плагин Eclipse , jadeclipse . Это довольно мило.
источник
Procyon включает в себя декомпилятор. Это FOSS.
источник
Сажа - это опция для более нового Java-кода. По крайней мере, у него есть преимущество, которое все еще поддерживается недавно ...
Кроме того, Java Decompiler - это декомпилятор с автономным графическим интерфейсом и интеграцией Eclipse.
И наконец, Jdec не был упомянут, хотя он не так полирован, как другие варианты.
источник
JD-GUI действительно хорош. Вы можете просто открыть файл JAR и просмотреть код, как будто вы работаете над IDE. Хорошая вещь.
источник
Вот список декомпиляторов по состоянию на февраль 2015 года:
Procyon , с открытым исходным кодом, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler
CFR , бесплатно, исходный код недоступен, http://www.benf.org/other/cfr/
JD , бесплатно только для некоммерческого использования, http://jd.benow.ca/
Fernflower , с открытым исходным кодом, https://github.com/fesh0r/fernflower ,
JAD - дано здесь только по историческим причинам. Бесплатный, без исходного кода, http://varaneckas.com/jad/ Устаревший, неподдерживаемый и неправильно декомпилирующий Java 5 и более поздние версии.
Вы можете протестировать вышеупомянутые декомпиляторы онлайн, установка не требуется и сделать свой собственный выбор.
Java-декомпиляторы в облаке: http://www.javadecompilers.com/
источник
Есть несколько программ, которые вы можете использовать. Вы получите реальный код Java, но иногда код будет запутан, поэтому методы будут именоваться одной буквой или цифрой или случайным сочетанием букв и цифр.
DJ декомпилятор мокко
источник
Большинство декомпиляторов для Java основаны на JAD . Это отличный инструмент, но, к сожалению, он давно не обновлялся и плохо обрабатывает классы Java 1.5+. Я не видел никаких инструментов, которые будут правильно обрабатывать 1,5+ классов.
источник
Взгляните на каважа .
источник
jad
внизу.Все ссылки JAD, перечисленные до сих пор, кажутся неработающими, поэтому я нашел этот сайт. Прекрасно работает (для Linux, по крайней мере)! На Ubuntu 11.10 мне пришлось по какой-то причине загрузить статический файл.
http://www.varaneckas.com/jad
источник
JAD - это тот, который работает и прост.
Также, если вы просто хотите увидеть методы, используйте javap.
источник
Если вы хотите увидеть, как Java-компилятор делает определенные вещи, вам не нужна декомпиляция, вам нужна дизассемблирование. Декомпиляция включает в себя преобразование байт-кода в исходный код Java, что означает, что большая часть низкоуровневой информации теряется, и, если вы задаетесь вопросом об оптимизации компилятора, это, вероятно, именно та информация, которая вас интересует.
В любом случае, я написал дизассемблер Java с открытым исходным кодом . В отличие от Javap, это работает даже на высокопатогенных классах, поэтому вы можете видеть, что инструменты запутывания делают с вашими классами. Это может также сделать декомпиляцию, хотя я не рекомендовал бы это.
источник
JAD не работает для меня (выпуск Ubuntu 11.10), поэтому я продвинулся вперед и остановился на JODO . По крайней мере, он имеет исходный код Open Java и смог правильно декомпилировать мой .class .
Я рекомендую сначала проверить «ветки / общие» ветки. Стволы не стабильны.
источник
На платформе IntelliJ IDEA вы можете использовать Java Decompiler IntelliJ Plugin . Это позволяет вам отображать все источники Java во время процесса отладки, даже если у вас их нет все. Он основан на известных инструментах JD-GUI .
источник
С AndroChef Java Decompiler вы можете декомпилировать apk, dex, jar и java class-файлы. Это просто и легко. AndroChef JD основан на FernFlower . Вы можете оценить это в 10 бесплатных использованиях.
источник
Для OSX я рекомендую: jarzilla или JD-GUI
Они оба позволяют просматривать банку, войну и т. Д. содержимое файла и декомпилирует любые файлы классов внутри них.
Jarzilla: https://code.google.com/p/jarzilla/
JD-GUI: http://jd.benow.ca/
источник