Java是编译型语言,我们编写的java文件需要编译成后class文件后才能够被JVM运行,学习ClassLoader
之前我们先简单了解下Java类。
示例TestHelloWorld.java:
package com.anbai.sec.classloader;
/**
* Creator: yz
* Date: 2019/12/17
*/
public class TestHelloWorld {
public String hello() {
return "Hello World~";
}
}
编译TestHelloWorld.java
:javac TestHelloWorld.java
我们可以通过JDK自带的javap
命令反汇编TestHelloWorld.class
文件对应的com.anbai.sec.classloader.TestHelloWorld
类,以及使用Linux自带的hexdump
命令查看TestHelloWorld.class
文件二进制内容:
JVM在执行TestHelloWorld
之前会先解析class二进制内容,JVM执行的其实就是如上javap
命令生成的字节码(ByteCode
)。