I would thing that if you want to do this with java the best way would be to create a
Process using the
ProcessBuilder class. If you need to interact with the program after it starts you should then use a StreamReader and StreamWriter to interact with each of the objects returned by getErrorStream(), getInputStream() and getOutputStream() from your Process.