我可以使用什么程序来反编译类文件?我真的会得到Java代码,还是仅仅是JVM汇编代码?
关于这个网站上的Java性能问题,我经常看到一些人的回答,他们“反编译”了Java类文件,以了解编译器如何优化某些东西。
我可以使用什么程序来反编译类文件?我真的会得到Java代码,还是仅仅是JVM汇编代码?
关于这个网站上的Java性能问题,我经常看到一些人的回答,他们“反编译”了Java类文件,以了解编译器如何优化某些东西。
当前回答
2016年2月更新:
www.javadecompilers.com列出JAD为:
最流行的Java反编译器,但主要仅限于这个时代。用c++写的,非常快。 过时,不受支持,不能正确反编译Java 5及更高版本
因此,您的里程可能随最近的jdk(7,8)而变化。
该网站还列出了其他工具。
正如Salvador Valencia在评论(2017年9月)中指出的那样,javadecompiler提供了一种SaaS,您可以将.class文件上传到云端,然后它会返回反编译的代码。
原答案:2008年10月
JSR 176的最终版本定义了J2SE 5.0 (Java SE 5)的主要特性,已于2004年9月30日发布。 由Pavel Kouznetsov先生编写的著名Java反编译器JAD所支持的最新Java版本是JDK 1.3。 现在大部分可以从互联网上下载的Java反编译器,如“DJ Java反编译器”或“Cavaj Java反编译器”,都是由JAD驱动的:它们不能显示Java 5源代码。
Java反编译器(另一个快速Java反编译器)有:
显式支持反编译和分析Java 5+“.class”文件。 一个漂亮的GUI:
它适用于从JDK 1.1.8到JDK 1.7.0的编译器,以及其他编译器(Jikes, JRockit等)。
它的特点是一个在线现场演示版本,实际上是完全功能!您只需在页面上放置一个jar文件,就可以看到反编译的源代码,而不需要安装任何东西。
其他回答
看看卡瓦伊。
对于OSX,我建议使用jarzilla或JD-GUI
它们都允许你查看罐子、战争等。文件内容并反编译其中的任何类文件。
Jarzilla: https://code.google.com/p/jarzilla/ JD-GUI: http://jd.benow.ca/
查看Java源代码,检查一些反编译器。去找贾德。
如果您想查看字节码,只需使用JDK附带的javap即可。
以下是截至2015年2月的反编译器列表:
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/
这里有一些反编译器…快速搜索会得到:
Procyon:开源(Apache 2),积极开发 Krakatau:开源(GPLv3),并积极开发 CFR:开源(MIT)并积极开发 联合应用开发 DJ Java反编译器 摩卡
还有更多。
它们生成Java代码。Java自带一些功能,可以让您看到JVM字节代码(javap)。