首页  

JVM模块化系统     所属分类 jvm 浏览量 816
JDK9中引入的Java模块化系统(Java Platform Module System,JPMS)
模块化的关键目标 可配置的封装隔离机制

Java虚拟机对类加载架构的调整 

JAR文件在类路径的访问规则
所有类路径下的JAR文件及其他资源文件,
都被视为自动打包在一个匿名模块(Unnamed Module)里,
这个匿名模块几乎是没有任何隔离的,
它可以看到和使用类路径上所有的包、JDK系统模块中所有的导出包,
以及模块路径上所有模块中导出的包


模块在模块路径的访问规则
模块路径下的具名模块(Named Module)只能访问到它依赖定义中列明依赖的模块和包,
匿名模块里所有的内容对具名模块来说都是不可见的,即具名模块看不见传统JAR包的内容。

JAR文件在模块路径的访问规则
如果把一个传统的、不包含模块定义的JAR文件放置到模块路径中,
它就会变成一个自动模块(Automatic Module)
尽管不包含module-info.class,但自动模块将默认依赖于整个模块路径中的所有模块,
因此可以访问到所有模块导出的包,自动模块也默认导出自己所有的包。


JDK9以后,扩展类加载器(Extension Class Loader)被平台类加载器(Platform ClassLoader)取代。

当平台及应用程序类加载器收到类加载请求,在委派给父加载器加载前,
要先判断该类是否能够归属到某一个系统模块中,如果可以找到这样的归属关系,
就要优先委派给负责那个模块的加载器完成加载,也许这可以算是对双亲委派的第四次破坏。

上一篇     下一篇
JVM类加载过程

JVM类加载器

修佛必读《心经》《金刚经》《楞严经》

Mac快速锁屏

JVM虚拟机执行引擎

JVM里的方法调用分派