代码敲了很久,但是一直没有怎么去研究他的整个的过,最近有时间就研究了一下,总结后就写了JVM系列的博客,以便总结与回顾。
java从编码到执行的过程如下图一所示:
java 文件通过 javac 编译后成 class 文件,class 文件由 classLoader 加载进 JVM ,加载后由字节码解释器解释后交给执行引擎,最后由执行引擎交给操作系统供其调用 。当某个文件执行的非常平凡的时候就会由JIT(即时编译器)编译,下次再执行的时候就不要解释器再一句一句的解释执行,效率会高很多。一般情况下都是混合模式,通过 java -version可以查看,如下图二:
接下来就是就开始进入正题了,ClassFileFormat 到底是什么呢?其实就是class文件的格式,接下来我就作详细的介绍。我写一个简单的java类,如下图三:
public class Demo1 {
int i = 0;
String s = "Hello ByteCode!";
public Demo1(int i, String s) {
this.i = i;
this.s = s;
}
public void m() {}
}
我们再通过插件 BinEd-Binary 插件打开Demo1.class 文件,如下图四所示:
或许直接看16进制的看不明白,没关系,我,二面还可以用 jclasslib 插件打开Demo1.class 文件,如下