Procesos en Java, operaciones básicas

Vamos a hacer un pequeño ejercicio muy básico para ver como se comportan los procesos en Java. El objetivo es tener un proceso que inicialize otros procesos. Lo vamos a hacer de manera gráfica y así quedará bastante mas claro e intuitivo.

En este caso vamos a usar Netbeans 8.1 con JDK 1.8 sobre Windows 10

Creamos un nuevo proyecto

Buscamos los ejemplos en la carpeta samples/java el que se llama ClientEditor

Se define el nombre y guardamos

Este es el ejemplo ClientEditor cargado en nuestro IDE

Hacemos un Build Project para que se compile el archivo jar que vamos a necesitar mas adelante

También debemos ejecutar run la aplicación desde el IDE para comprobar que no haya problemas

Esta ventana es el resultado de la ejecución

Debemos tener localizado el archivo ClientEditor.jar que estará dentro de la carpeta dist

Ahora vamos a crear otra aplicación muy simple con un botón para que cada vez que se pulse el botón se ejecute la aplicación que acabamos de compilar.

Definimos nombre y guardamos. No va a ser necesario definir el main para la prueba que vamos a hacer.

Creamos un JFrame Form

Añadimos un botón. Se puede arrastrar y soltar sobre nuestro frame.

Editamos el texto. Una manera es con botón derecho del ratón Edit Text

Podemos editar mas opciones en el panel de propiedades del botón, como por ejemplo el tamaño.

Ahora usando el menu flotante que aparece con el botón derecho del ratón, vamos a asiganr un evento del ratón cuando se haga click.

Vemos como el IDE nos crea un método vacío, listo para que lo definamos

Podemos definir dentro del método directamente la lógica de funcionamiento, pero es mejor definir un método nuevo con la funcionalidad que se va a ejecutar. En este caso crearNuevoEditor(). Desde el método JButton1MouseClicked() lo ejecutamos, y así queda ordenado en el caso que queramos ampliar la funcionalidad con mas método que hagan otras cosas.

En el método crearNuevoEditor() usamos la clase process para llevar a cabo un Runtime.getRuntime().exec y así ejecutar el jar que teníamos creado inicialmente como un proceso independiente

Ejecutamos nuestro frame, el IDE nos avisa que no hay main, se lo asignamos y continuamos.

Este es el resultado de hacer click sobre el botón tres veces.

Comprobamos la lista de procesos en el sistema con tasklist en la linea de comandos

Podemos identificar los PID de los procesos en cuestion. Tenemos el de netbeans identificado por su nombre, y después cuatro procesos java, uno del lanzador y tres de los lanzados.

Si lo deseamos podemos terminar con un proceso con el comando taskkill /PID numDeProces

Este es el resultado después de matar un proceso

También podemos cerrar un proceso desde el administrador de tareas de Windows

Ya solo nos queda uno. Que también se puede cerrar como si fuera una ventana gracias al interfáz gráfico que hemos obtenido con swing.

Saludos!