Java是编译型语言,我们编写的java文件需要编译成后class文件后才能够被JVM运行,学习ClassLoader之前我们先简单了解下Java类。
    示例TestHelloWorld.java:

    1. package com.anbai.sec.classloader;
    2. /**
    3. * Creator: yz
    4. * Date: 2019/12/17
    5. */
    6. public class TestHelloWorld {
    7. public String hello() {
    8. return "Hello World~";
    9. }
    10. }

    编译TestHelloWorld.javajavac TestHelloWorld.java
    我们可以通过JDK自带的javap命令反汇编TestHelloWorld.class文件对应的com.anbai.sec.classloader.TestHelloWorld类,以及使用Linux自带的hexdump命令查看TestHelloWorld.class文件二进制内容:
    2. Java类 - 图1
    JVM在执行TestHelloWorld之前会先解析class二进制内容,JVM执行的其实就是如上javap命令生成的字节码(ByteCode)。