学习Java字节码和JVM(Learning about Java bytecode and the

2019-07-31 02:45发布

在最近的问题最近问我头脑简单的答案强调我的很多关于Java的JVM误解,以及代码如何被编译和运行。 这已经创造了一个愿望,我把我的理解,以一个较低的水平。 我有像装配低层次的理解不断字节码和JVM如何挫败我没有任何问题。 如何面向对象的代码获取低级别细分是输给了我。 我想知道是否有人对如何了解JVM,字节码和Java的较低水平运作的任何建议。 有没有在那里,让你写的所有实用程序和运行字节码直接作为我相信与一些经验手是理解它成长的最佳方式是什么? 此外并在此话题阅读建议,将不胜感激。

编辑:中学的问题。 所以我有一个有点子问题,答案给了我一个有趣的想法,了解JVM,你会写一个非常简单的语言如brainf的真实性**只在一个可读的语法(k或OOK也许我甚至可以开发它支持OO最终),编译成字节码是什么? 那会是一个很好的学习经验?

Answer 1:

推荐阅读: JVM规范 。

您可能还希望一起玩BCEL -还有其他的库周围操纵字节码,但是这可能是最知名的一个。



Answer 2:

在Apache的BCEL将允许你从字节码分析和手工工艺的.class文件。

javap的将允许你拆开现有的.class文件。 它是敲了快速测试类来了解什么是真的在盖下特别有用。



Answer 3:

我学会了阅读的ASM的教程和摆弄库本身。

恕我直言,ASM比BECL更好。

BCEL已经被成功应用于几个项目,如编译器,优化器,混淆器,代码生成和分析工具。 遗憾的是还没有太大的发展,在过去的几年里继续。 随意助阵或者你可能想看看成ObjectWeb联盟的ASM项目。 - http://jakarta.apache.org/bcel/



Answer 4:

只有一个JVM理解可靠的消息来源

该Java®的虚拟机规范的Java SE 7版

http://docs.oracle.com/javase/specs/jvms/se7/html/index.html



Answer 5:

对于编程Java虚拟机是一本好书这个话题。 (披露:我与作者的工作。)



Answer 6:

对于了解Java / JVM的架构:阅读维基百科,规格和源代码。

对于理解面向对象的代码是如何在低级别完成:尝试模仿像C的低级语言如继承/多态性/封装功能

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



文章来源: Learning about Java bytecode and the JVM