了解 Java 字节码和 JVM

2022-09-01 03:51:25

在最近提出的一个问题中,我头脑简单的答案突出了我对Java,JVM以及如何编译和运行代码的许多误解。这在我心中产生了一种愿望,希望将我的理解提升到一个较低的水平。我对像汇编这样的低级理解没有问题,字节码和JVM如何让我感到困惑。面向对象的代码如何在低级别上分解对我来说是丢失的。我想知道是否有人对如何了解JVM,字节码和Java的低级功能有任何建议。是否有任何实用程序允许您直接编写和运行字节码,因为我相信实践经验是加深对它的理解的最佳方式?此外,阅读有关此主题的建议将不胜感激。

编辑:次要问题。所以我有一个子问题,答案给了我一个有趣的想法来学习jvm,编写一个非常简单的语言,如brainf**k或Ook,只用一个可读的语法(也许我甚至可以开发它来支持oo最终)编译成字节码的合理性是什么?这会是一次很好的学习经历吗?


答案 1

建议阅读:JVM规范

您可能还想使用BCEL - 还有其他用于操作字节码的库,但这可能是最着名的库。


答案 2

Apache BCEL将允许您从字节码分析和手工制作.class文件。

javap将允许您反汇编现有的.class文件。它对于快速测试类以了解幕后真正发生的事情特别有用。


推荐