Procesos en Java, operaciones básicas
15 Oct 2016Vamos 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!