我想知道在Java中上述类加载器的责任是否可以合并?(不是由用户/程序员而是由JVM开发人员)引导加载器从jdk/jre/lib/*加载类,扩展加载器从jdk/jre/lib/ext/*加载类,那么将它们合并有什么问题呢?通过这样做,还可以节省一级委派,不是吗?我所知道的唯一区别是引导类加载器是用本地语言实现的,而扩展类加载器是用Java本身实现的。如果必须将它们分开,请告诉我背后的原因。
是的,从技术上讲,JVM可以从引导类加载器加载lib / ext类,但这可能会带来一些轻微的安全影响(由引导类加载器加载的类被赋予额外的特权)和向后兼容性影响(一些高级应用程序假定存在额外的类加载器),但考虑到您需要修改JRE安装,我认为这些问题有点次要。Java 9的模块化运行时图像(JEP 220)功能提议删除扩展机制,但他们建议保留扩展类加载器以实现向后兼容性。目前尚不清楚删除扩展机制是否会对实际应用程序造成太多问题,或者扩展类加载器是否会在随后的版本中保留或删除。