-
class文件
鎖定
該文件打破了C或者C++等語言所遵循的傳統,使用這些傳統語言寫的程序通常首先被編譯,然後被連接成單獨的、專門支持特定硬件平台和操作系統的二進制文件。
- 中文名
- Java class
- 簡 稱
- class文件
- 所屬語言
- java
- 執行過程
- Java虛擬機
class文件基本信息
通常情況下,一個平台上的二進制可執行文件不能在其他平台上工作。而Java class文件是可以運行在任何支持Java虛擬機的硬件平台和操作系統上的二進制文件。
class文件執行過程
2.1 執行過程簡介
當編譯和連接一個C++程序時,所獲得的可執行二進制文件只能在指定的硬件平台和操作系統上運行,因為這個二進制文件包含了對目標處理器的機器語言。而Java編譯器把Java源文件的指令翻譯成字節碼,這種字節碼就是Java虛擬機的“機器語言”。
與普通程序不同的是,Java程序(class文件)並不是本地的可執行程序。當運行Java程序時,首先運行JVM(Java虛擬機),然後再把Java class加載到JVM裏頭運行,負責加載Java class的這部分就叫做Class Loader。
2.2 JVM中的ClassLoader
JVM本身包含了一個ClassLoader稱為Bootstrap ClassLoader,和JVM一樣,BootstrapClassLoader是用本地代碼實現的,它負責加載核心JavaClass(即所有java.*開頭的類)。
另外JVM還會提供兩個ClassLoader,它們都是用Java語言編寫的,由BootstrapClassLoader加載;其中Extension ClassLoader負責加載擴展的Javaclass(例如所有javax.*開頭的類和存放在JRE的ext目錄下的類)ApplicationClassLoader負責加載應用程序自身的類。
當運行一個程序的時候,JVM啓動,運行bootstrapclassloader,該ClassLoader加載java核心API(ExtClassLoader和AppClassLoader也在此時被加載),然後調用ExtClassLoader加載擴展API,最後AppClassLoader加載CLASSPATH目錄下定義的Class,這就是一個程序最基本的加載流程。
2.3 執行ClassLoader例子