[vc_row][vc_column][vc_column_text]
En el siguiente artículo presentamos la parte 4 del artículo Nueve Nuevas Funcionalidades de JDK 9, en el cual se revisara la información relacionada a la actualización del API Process (JEP 102).
Actualización del API Process (JEP 102)
JDK 9 contiene mejoras para las clases Process y ProcessBuilder e introduce una nueva interface ProcessHandle. La clase ProcessBuilder ahora incluye el método startsPipeline(). Tal como lo sugiere el nombre, este método construye una secuencia de procesos al estilo UNIX utilizando una lista de ProcessBuilder. Cada que un proceso es agregado, la salida estándar se conecta como una entrada estándar del siguiente proceso.
A continuación un ejemplo para enlazar la salida del método UNIX ls con el comando wc –l a fin de obtener el número de archivos en el directorio tmp:
1 2 3 4 5 6 7 8 9 | ProcessBuilder ls = new ProcessBuilder() .command(“ls”) .directory(Paths.get(“/tmp”).toFile()); ProcessBuilder wc = new ProcessBuilder() .command(“wc”,”-l”) .redirectOutput(Redirect.INHERIT); List<Process> lsPipeWc = ProcessBuilder.startPipeline(asList(ls,wc)); |
La interface ProcessHandle identifica y provee control sobre los procesos nativos. Esta proporciona métodos para devolver la información sobre los procesos, como el ID del proceso, así como si el proceso tiene otros procesos hijos. También, se tiene un método static que devuelve un Optional<ProcessHandle> para un determinado ID de proceso.
La sub interface ProcessHandle.Info proporciona información de un rango determinado de procesos, tal como la línea de comando utilizado para iniciar un proceso, cuando el proceso se inició y la identidad del usuario que inicio el proceso.
La clase Process tiene siete nuevos métodos que proporcionan acceso a más información acerca de los procesos nativos. Algunos de ellos se súper posicionan con aquellos disponibles a través de ProcessHandle:
- children() y descendants(): Lista los procesos hijos o descendientes en forma respectiva
- getPid(): Retorna el ID del proceso actual
- info(): Proporciona información instantánea de la instancia de ProcessHandle.Info
- onExit(): Es un CompletableFuture que puede ser utilizado para optimizar las tareas cuando se termina el proceso
- supportsNormalTermination(): Determina si destroy() termina el proceso en forma normal
- toHandle(): Retorna el ProcessHandle del actual proceso.
Conclusión:
Como se puede observar, JDK 9 incluye varias nuevas y poderosas funcionalidades dirigidas hacía los desarrolladores. Al revisar la lista, usted puede considerar migrar a la nueva versión en cuanto usted pueda hacerlo.
En el siguiente enlace puede descargar el artículo completo de Nueve Nuevas Funcionalidades de JDK 9.[/vc_column_text][/vc_column][/vc_row]