JVM 通过 class loader 和 class 命名唯一确定类。

双亲委派机制中,父子关系通过组合完成,而不是继承!!!

好处:

Java 9 after

Java9 模块化之后,移除了很多老旧包,重命名了 System ClassLoader 和 ExtensionClassLoader。

新的关系是 system class loader → builtin class loader → platform → bootstrap classloader,builtin 主要做一些模块衔接,双亲委派模型基本没变。

https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-A868D0B9-026F-4D46-B979-901834343F9E

https://www.oracle.com/technetwork/java/javase/9-relnotes-3622618.html

Java9 之后, bootstrap 负责范围更小了,以前使用 null 加载一些类要改为 platform class loader。

Extention class loder 改为从 classpath 加载类, java.ext.dirs 和 ext/ 被废弃。

继承关系图