Estos dos métodos hacen casi la misma acción: Devolver una clase de tipo Process para poder seguir el proceso lanzado.
La diferencia entre ProcessBuilder.start() y Runtime.exec() es la forma en cómo hacen dicha acción:
ProcessBuilder.start()
- Ejecuta la acción definida en la creación de la clase ProcessBuilder y no recibe ningún tipo de parámetro.
- El constructor de esta clase tiene dos formas de trabajar:
- Una forma en la que recibe una lista de cadenas (List<String>).
- Otra forma en la que recibe un número indeterminado de cadenas.
- Estos parámetros son el nombre del programa a ejecutar y sus argumentos.
- El constructor de esta clase tiene dos formas de trabajar:
Runtime
- Clase que gestiona el proceso de ejecución de la aplicación java.
- El método estático Runtime.getRuntime() nos da mucha más versatilidad de ProcessBuilder:
- Creamos el objeto con Runtime.getRuntime()
- Una vez creado el objeto podemos llamar a una de las 6 versiones del método exec para lanzar un programa externo y devolver un objeto de tipo Process que nos servirá para gestionar ese proceso.
- Como la clase runtime no se ha creado usando las especificaciones de un programa concreto, podemos usar exec para ejecutar tantos procesos diferentes como queramos.
- El método exec permite:
- Especificar un programa a ejecutar junto con sus argumentos
- La posibilidad de incluir variables de entorno y el directorio de trabajo de la aplicación a ejecutar.
Más info
Difference between ProcessBuilder and Runtime.exec()
¿Como Usar El Método ProcessBuilder De Java?