在java中,据说所有的类都由类加载器加载。
所以首先,引导类加载器会加载所有 rt.jar 类。
所以我仍然很困惑,因为 Classloader 也是一个类,所以谁来加载这个 BootStrapClassloader。
请解释。
在java中,据说所有的类都由类加载器加载。
所以首先,引导类加载器会加载所有 rt.jar 类。
所以我仍然很困惑,因为 Classloader 也是一个类,所以谁来加载这个 BootStrapClassloader。
请解释。
答:当 JVM 启动时,会运行一段特殊的机器代码来加载系统类加载器。该机器代码称为Bootstrap / Primordial (或有时 - Null)类加载器。
它根本不是一个 Java 类,就像所有其他类加载器一样。引导类加载器是启动整个类加载过程的平台特定机器指令。
所有的类加载器,除了引导类加载器,都是作为 Java 类实现的。必须加载第一个 Java 类加载器才能启动该过程。加载第一个纯 Java 类加载器是引导类加载器的工作。
引导类加载器还负责加载支持基本 Java 运行时环境 (JRE) 所需的所有代码,包括 java.util 和 java.lang 包中的类。
Bootstrap 类加载器,作为一个类加载器,实际上是 JVM 核心的一部分,它是用本机代码编写的。
类加载器可以是对象,它们也需要一个表示。事实上,这也允许创建用户定义的类加载器。
英语中有句成语,“他自力更生”。靴带是靴子顶部的小把手,当然,这是不可能的。
http://en.wikipedia.org/wiki/Booting
这篇文章解释了引导计算机的过程,它是 bootstrapping 的简称。
每种类型的每个程序都会发生某种情况,某种加载程序会将一些字节复制到内存中的某个位置,并在这些字节中的预定义位置开始执行。
对于 Java,引导加载程序可能是也可能不是 Java 类。(可能有人知道。)但它是某种程序,它将最初的几个类加载到内存中并导致 JVM 开始执行那些加载的 Java 代码。也许它会加载 JVM 代码本身。也许它只是确保一些先前的代码加载了 JVM。也许,它甚至要求 JVM 已经加载并运行。
它只是过程的一部分。
JDK安装路径:jdk\jre\lib\rt.jar
该位置称为引导类路径。引导类加载器负责从引导类路径加载类。
Bootstrap 类加载器默认在 JVM 中可用。它是用 C 和 C++ 等本地语言实现的。