Instrumentation class was extended 具有允许重新定义任何模块的方法。它允许您添加额外的模块读取、导出、打开、服务使用和提供:
void redefineModule(Module module,
Set<Module> extraReads,
Map<String,Set<Module>> extraExports,
Map<String,Set<Module>> extraOpens,
Set<Class<?>> extraUses,
Map<Class<?>,List<Class<?>>> extraProvides);
此外,ClassFileTransformer API 已扩展为在转换时注册 Java Module:
default byte[] transform(Module module,
ClassLoader loader,
String className,
Class<?> classBeingRedefined,
ProtectionDomain protectionDomain,
byte[] classfileBuffer)
throws IllegalClassFormatException;
此模块与检测 API 相结合,可以进行任何必要的调整。
目前,Java 代理仍然加载在类路径上,没有应用任何模块化;然而,这可能会改变,因为 Java 9 还不是最终版本。