我想从我自己的java应用程序中执行一个jar。 (无法将该jar导入库并将应用程序作为我自己的“启动器”的实例启动)。要从我自己的java应用程序执行jar ...我正在使用下一行:
String [] cmd = new String [] {"java","-jar","myjar.jar"};
Process process = Runtime.getRuntime().exec(cmd, null, null);
这完美有效。我没有抱怨这个。
我的问题是:这与在命令行中使用“java -jar myjar.jar”执行该jar具有相同的性能吗?还是更糟糕?如果更糟......有任何建议,我可以用相同的表现吗?
答案 0 :(得分:3)
性能基本相同,因为两种情况都发生了基本相同的事情。例如,在UNIX / Linux平台上:
可能存在次要性能差异。例如,父母处理孩子的标准输入/输出/错误流的方式可能不同。但通常你会忘记这种事情。
[正如@Amadan所说,使用类加载器在当前JVM中启动Java应用程序效率要高得多......因为它避免了JVM启动的开销,JIT编译公共代码等等。但主要的缺点是(除了简单性)是“父”应用程序没有有效的方法来控制在同一JVM中运行的“子”应用程序。如果孩子陷入困境或者资源管理通常很邋with,那么父母也会受到影响。]
答案 1 :(得分:1)
这是相同。
执行进程正在执行进程,无论命令处理器是执行进程还是执行应用程序。
答案 2 :(得分:1)
无论如何都是一样的。使用新的api ProcessBuilder,它有更好的方法来指定参数..