.java文件->.class文件->机器语言。编译器编译成.class文件之后,保存到硬盘中,JRE的类加载器从硬盘中读取.class文件,载入到系统分配给JVM的内存区域-运行数据区,然后执行引擎解释或编译类文件,转换成特定CPU的机器码。
类加载器是一种层级结构关系:
-
Bootstrap class loader:
当运行java虚拟机时,这个类加载器被创建,它加载一些基本的java API,包括Object这个类。类加载器不是用java语言写的,而是用C/C++写的。
-
Extension class loader:
这个加载器加载出了基本API之外的一些拓展类,包括一些与安全性能相关的类。
-
System Class Loader:
它加载应用程序中的类,也就是在classpath中配置的类。
-
User-Defined Class Loader:
这是开发人员通过拓展ClassLoader类定义的自定义加载器,加载程序员定义的一些类。