JDK 体系结构 : 下图所有的内容都是 JDK 体系中的组成元素 ;
Java Language : 最上层是 Java 语言 ;
Tools & Tool APIs : 指令工具集 , 手动编译 Java 源码时会用到 , 如 java 执行字节码程序 , javac 编译字节码程序 , javadoc 生成 Java 文档 ;
JRE : 橙色部分以下的都是 JRE 运行环境 ;
Java Virtual Machine : Java 运行最重要的基础是 Java 虚拟机 , 也就是下图最底层的 " Java Virtual Machine " , 这是 Java 代码一次编译 , 到处运行的基础 , Java 程序实际上是运行在虚拟机上的 ;
Java 源码运行原理 :
编写一个 HelloWorld.java ,
public class HelloWorld{
public static void main(String[] args) {
System.out.println("Hello World");
}
}
使用 Javac 命令编译上述源码 ,
javac HelloWorld.java
得到 HelloWorld.class 字节码文件 ,
使用 java 命令执行上述字节码文件 , 将字节码文件装载到 Java 虚拟机 中 ,
java HelloWorld
Java 虚拟机是使用 软件 模拟 完整硬件系统功能 , 这是一个完全隔离环境的完整的计算机系统 ,
在不同的操作系统中 , Java 虚拟机的底层实现是不同的 ;
使用 java 命令 , 将 HelloWorld.class 字节码装载到 Java 虚拟机之后 ,
java HelloWorld.class
先通过 " 类装载子系统 " 加载字节码文件 , 使用类加载器将 class 文件装载到 Java 虚拟机 内存中 ;
Java 虚拟机内存 模型 就是 运行时数据区 , 这部分内存可划分为以下
个区域 :
堆区 和 方法区 ( 元空间 ) 是所有线程 共享的区域 ;
栈 ( 线程栈 ) , 本地方法栈 , 程序计数器 是 线程私有的区域 ;