Gli exec sono in diverse varianti. Puoi passare un eseguibile+argomenti in unico String o separati in un String[].
Esistono "porting" su Windows dei tools di Linux/Unix.
https://www.google.it/#q=grep+cut+windows
Process ha getInputStream() / getErrorStream() che forniscono un InputStream (non conviene però leggere "a byte" ma incapsularli in InputStreamReader e/o altro di più alto livello).
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet