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

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

有帮助吗?

解决方案

建议阅读: JVM规范

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

其他提示

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

javap 将允许您拆解现有的.class文件。这对于敲击快速测试类来理解幕后真正发生的事情特别有用。

我通过阅读 ASM教程,并与图书馆本身混淆。

恕我直言,ASM优于BECL。

  

BCEL已被使用   成功地在几个项目中   作为编译器,优化器,   混淆器,代码生成器和   分析工具。 不幸的是那里   没有太大的发展   过去几年。随意地   帮忙或你可能想拥有一个   查看ASM项目   ObjectWeb的    - http://jakarta.apache.org/bcel/

只有一个可靠的JVM理解源

Java®虚拟机规范Java SE 7版

http://docs.oracle.com/javase/规格/ JVM中/ SE7 / HTML / index.html中

Java虚拟机编程是本主题的好书。 (披露:我与作者合作。)

了解Java / JVM的架构:阅读Wikipedia,规范和源代码。

为了理解面向对象的代码是如何在低级别上完成的:尝试使用像C这样的低级语言来模拟继承/多态/封装等功能。

在C语言中,你可以通过例如函数指针和嵌套结构的组合来实现上述目的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top