反编译 Java 代码

Decompiling Java Code

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

Does it mean that the native code is translated back to byte code and then to source code?

通常,反编译就是将字节码转回Java码。

JVM 确实将本机代码反优化为字节代码,以避免在内存中保留代码的两个副本。但是 JVM 永远不会将其转回源代码。

I was also wondering which role the RAM plays when a java program is compiled.

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

Do decompiling tools get the native code in RAM?

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

FWIW - 我自己和一个朋友在 ACCU 上发表了一篇文章,描述了几年前如何开始这类事情 - 你可能会发现它提供了很多信息。

https://accu.org/index.php/journals/1850