ModRun: 无需Jigsaw的Java模块化

16-11-27 banq
         

ModRun是一个Java类加载器,能够在运行时直接从Maven仓库加载和运行类,并解决相关依赖。可加载多个应用到同一个JVM中,同时保持这些类完全隔离;能同时可加载同一目录的多个版本到JVM,甚至可在同一个应用中使用同样目录下多个版本类,同时保持这些加载不同版本完全隔离,彻底终结了依赖冲突。

如果一个应用依赖模块A和模块B,而A和B依赖于模块C,但是依赖于C的不同版本,ModRun会为模块A加载C的一个版本,也会为模块B加载C的另外一个版本。

下面展示如何创建一个Repository对象,加载一个模块和从中读取一个类:

Repository repository = new Repository("test-repo");

Module module   = repository.createModule("com.nanosai", "ModRunDepA", "1.0.0");

Class  theClass = module.getClass("com.nanosai.a.ComponentA");

Object theObject = theClass.newInstance();
Method method    = theClass.getMethod("doIt");
String result    = (String) method.invoke(theObject, new Object[0]);

System.out.println(result);
<p>

nanosai/modrun: A Java classloader which can load