反编译Java代码

反编译Java代码,java,compilation,decompiling,Java,Compilation,Decompiling,我想知道反编译Java代码意味着什么。这是否意味着本机代码被翻译回字节码,然后再翻译成源代码?我还想知道在编译java程序时RAM扮演着什么角色。反编译工具是否在RAM中获取本机代码 这是否意味着本机代码被翻译回字节码,然后再翻译成源代码 通常,反编译意味着将字节码转换回Java代码 JVM会将本机代码反优化为字节码,以避免在内存中保留两个代码副本。然而,JVM从未将其转换回源代码 我还想知道在编译java程序时RAM扮演着什么角色 Java编译器像其他Java程序一样使用RAM。根据所使用的R

我想知道反编译Java代码意味着什么。这是否意味着本机代码被翻译回字节码,然后再翻译成源代码?我还想知道在编译java程序时RAM扮演着什么角色。反编译工具是否在RAM中获取本机代码

这是否意味着本机代码被翻译回字节码,然后再翻译成源代码

通常,反编译意味着将字节码转换回Java代码

JVM会将本机代码反优化为字节码,以避免在内存中保留两个代码副本。然而,JVM从未将其转换回源代码

我还想知道在编译java程序时RAM扮演着什么角色

Java编译器像其他Java程序一样使用RAM。根据所使用的RAM进行编译时,不会发生任何特殊情况

反编译工具是否在RAM中获取本机代码


不。从字节码反编译更简单、更快、更容易。

FWIW-我和一个朋友在ACCU上发表了一篇文章,描述了几年前如何开始使用这类东西-你可能会发现它提供了信息


java编译器(“
javac
”)不会将java源代码编译成二进制代码,而是编译成字节码。字节码是一种中间表示形式(
.class
-files)。编译过程确实需要一些内存,但不会太多。反编译是从字节码到java源代码的反向转换。根据java代码的编译方式,反编译或多或少是精确的(例如,变量名可能会被混淆)。但是,有些信息会永久丢失。例如,字节码没有
boolean
char
byte
short
的类型。它们都表示为
int
。如果你想反向工程一些代码,你应该读很多书。祝你好运。@Turing85记录了所有字段、参数和返回类型的基本类型,如果可以,反编译只能推断局部变量(除非是long.float或double)