Hola:
con Runtime.getRuntime().exec("ejecutable") puedes arrancar otro ejecutable. Esta llamada te devuelve un Process. Al Process puedes pedirle los InputStream y OutputStream, que son los pipes que necesitas.
Aquí tienes un ejemplo con
Runtime en el que se leen InputStream y OutputStream del Process.
Se bueno.