ProcessBuilder vs Runtime.exec()
Asked Answered
C

1

14

Which one is better? By better I mean which one has better security, etc. (not ease of use).

Corpora answered 4/5, 2011 at 16:41 Comment(1)
What do you mean with 'has better security'?Adali
C
32

Ease of use is the only real difference between those two.

Note that ease of use can lead to security by helping to avoid mis-use.

At least on OpenJDK 6 Runtime.exec() is implemented using ProcessBuilder:

public Process exec(String[] cmdarray, String[] envp, File dir)
    throws IOException {
    return new ProcessBuilder(cmdarray)
        .environment(envp)
        .directory(dir)
        .start();
}
Changeover answered 4/5, 2011 at 16:43 Comment(1)
Except that Runtime.exec has overloads that take command as a single String and tokenize it, but in ProcessBuilder a single String is handled as a vararg String[1] -- see #6856528Asel

© 2022 - 2024 — McMap. All rights reserved.