Java 程式在編譯之後會產生許多的執行單位(.class
檔),當我們執行主要類別時(有 public static void main(String arga[])方法的
那個類別),才由虛擬機器一一載入所有需要的執行單位,變成一個邏輯上為一
體的 Java應用程式。因此接下來,我們將細部討論這整個流程。
當我們在命令列輸入 java xxx.class 的時候,java.exe 根據
過的邏輯找到了JRE(Java Runtime Environment),接著找到位
jvm.dll(真正的 Java虛擬機器),最後載入這個動態聯結函式庫,
擬機器。
虛擬機器一啟動,會先做一些初始化的動作,比方說抓取系統參數等。一旦
初始化動作完成之後,就會產生第一個類別載入器,即所謂的 Bootstrap
Loader,Bootstrap Loader 是由 C++所撰寫而成(所以前面我們說,以 Java
的觀點來看,邏輯上並不存在Bootstrap Loader 的類別實體,所以在 Java程
式碼裡試圖印出其內容的時候,我們會看到的輸出為 null),這個 Bootstrap
Loader所做的初始工作中,除了也做一些基本的初始化動作之外,最重要的就
是載入定義在 sun.misc 命名空間底下的 Launcher.java 之中的
ExtClassLoader( 因為是 inner class ,所以編譯之後會變成
Launcher$ExtClassLoader.class),並設定其Parent 為 null,代表其父載入器
為 Bootstrap Loader。然後 Bootstrap Loader 再要求載入定義於 sun.misc 命
名空間底下的 Launcher.java 之中的 AppClassLoader(因為是 inner class,
所以編譯之後會變成 Launcher$AppClassLoader.class),並設定其 Parent
為之前產生的 ExtClassLoader 實體。這裡要請大家注意的是,
Launcher$ExtClassLoader.class 與 Launcher$AppClassLoader.class 都是
由 Bootstrap Loader 所載入,所以 Parent 和由哪個類別載入器載入沒有關係。
AppClassLoader 在 Sun 官方文件中常常又被稱做系統載入器(System
Loader),但是在本文中為了避免混淆,所以還是稱作 AppClassLoader。最後
一個步驟,是由 AppClassLoader 負責載入我們在命令列之中所輸入的
xxx.class(注意:實際上 xxx.class 很可能由 ExtClassLoader 或 Bootstrap
Loader載入,請參考底下「委派模型」一節),然後開始一個 Java 應用程式的
生命週期。上述整個流程如下圖所示:
- 大小: 11.4 KB
- 大小: 24.3 KB
分享到:
相关推荐
《Java深度历险》是一本深入探讨Java技术的书籍,旨在帮助读者理解Java的内在机制,包括JVM(Java虚拟机)、JDK(Java开发工具包)和JRE(Java运行环境)之间的关系,以及类加载的过程等核心概念。通过这本书,你...
关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞清楚JRE的ClassLoader是如何加载Class的...推荐看一下王森的《Java深度历险》,对这两个问题进行了深入的探讨。
《Java深度历险》这本书是Java开发者的一本深入学习指南,它涵盖了Java编程语言的核心概念、高级特性以及实际开发中的应用技巧。通过本书,读者可以系统地了解Java的各个方面,从而提升自己的编程技能和问题解决能力...
《Java深度历险》是一本全面探讨Java技术的书籍,主要关注Java虚拟机(JVM)的深入理解和相关概念。本书旨在帮助读者不仅掌握Java编程的基本语法,而且能够理解Java平台的工作原理,从而提升编程技能和解决问题的...
java深度历险.rarjava深度历险.rarjava深度历险.rarjava深度历险.rarjava深度历险.rar
Java深度历险 深入Java 2 SDK 深入类别载入器 Java与MS Office 用Visual Studio.net操控Java虚拟机 package与import机制 Ant 附录A.Java 2 SDK原版码概观
《王森 Java深度历险》是一本专门为Java初学者精心编写的教材,旨在引领读者深入探索Java编程的世界。王森,作为业界知名的IT专家,以其丰富的教学经验和深厚的编程功底,将复杂的Java知识以易懂的方式呈现出来,...
《Java 深度历险》是一本专为Java开发者准备的深度学习书籍,它涵盖了Java编程语言的核心概念、高级特性以及实战应用。通过这本书,读者可以深入理解Java的内部机制,提升编程技能,实现从初级到高级的跨越。下面...
Java深度历险.pdf
《Java深度历险》这本书主要探讨了Java编程语言的深度知识,涵盖了从早期版本到Java 2 SDK的演进历程。Java是由Sun Microsystems开发的一种高级编程语言,最初被称为OAK,后来发展为Java 1.0,并逐步演变为Java 1.1...
《Java深度历险》是Java学习者的一本经典著作,由王森编著,深受广大编程爱好者喜爱。这本书深入浅出地讲解了Java语言的核心概念和技术,是初学者步入Java世界的理想指南。作为一本深度探索Java的书籍,它涵盖了从...
Java深度历险(合集).pdf,深度介绍!
《Java深度历险》是一本面向已有基础的Java程序员的高级读物,旨在帮助读者深入理解Java语言的核心机制和高级特性。这本书涵盖了多个关键知识点,包括但不限于类加载机制、垃圾回收、多线程、并发编程、JVM优化、...
《JAVA深度历险》是由知名Java专家王森撰写的一本深度探索Java编程的著作,PDF格式使得读者可以方便地在电子设备上阅读和学习。这本书是Java开发者提升技能、深化理解的重要参考资料,涵盖了从基础到高级的众多Java...
捉虫历险记 - 常见 C++ Bug 大围剿。
《Java深度历险.pdf》这份文档主要围绕Java技术的一些深入理解和应用展开,涵盖Java的运行环境(JDK和JRE)、Java虚拟机(JVM)、Java程序的运行机制以及Java开发工具的配置等多方面的知识。接下来,我将对文档中...
《Java深度历险》与《深入Java虚拟机》是两本深受Java开发者喜爱的经典书籍,它们涵盖了Java编程语言和Java虚拟机(JVM)的高级主题,旨在帮助读者深入理解Java平台的工作原理。 《Java深度历险》这本书通常会涵盖...