Java ProcessBuilder与Runtime.exec()的比较

Java ProcessBuilder与Runtime.exec()的比较,java,runtime.exec,processbuilder,Java,Runtime.exec,Processbuilder,哪一个更好?我所说的更好是指哪一个具有更好的安全性等(而不是易用性)。易用性是这两者之间唯一的真正区别 请注意,易用性有助于避免误用,从而提高安全性 至少在OpenJDK 6上Runtime.exec()是使用ProcessBuilder实现的: public Process exec(String[] cmdarray, String[] envp, File dir) throws IOException { return new ProcessBuilder(cmdarra

哪一个更好?我所说的更好是指哪一个具有更好的安全性等(而不是易用性)。

易用性是这两者之间唯一的真正区别

请注意,易用性有助于避免误用,从而提高安全性

至少在OpenJDK 6上
Runtime.exec()
是使用
ProcessBuilder
实现的:

public Process exec(String[] cmdarray, String[] envp, File dir)
    throws IOException {
    return new ProcessBuilder(cmdarray)
        .environment(envp)
        .directory(dir)
        .start();
}

“具有更好的安全性”是什么意思?除了
运行时.exec
具有重载,该重载将
命令
作为单个
字符串
并对其进行标记,但在
ProcessBuilder
中,单个
字符串
作为vararg
字符串[1]处理
--请参阅