Prueba de aplicaciones con VMware y Eclipse
Una de las tareas más tediosas y en las que se pierde más tiempo dentro del proceso de desarrollo de software es la prueba de aplicaciones multiplataforma. Si bien Java simplifica bastante el proceso ya que es un lenguaje multiplataforma, sobre todo en las aplicaciones de escritorio, existen aplicaciones en las que hay que usar funcionalidades que no son multiplataforma como pueden ser el uso de JNI, ejecución de programas o scripts externos, etc.
Hasta hace bien poco la única opción era tener varios ordenadores con distintos sistemas operativos conectados en red (o peor incluso, un sólo ordenador con multiarranque), e ir trasladando la aplicación entre estos ordenadores para ir probándola en todos los sitemas operativos (y todas las versiones) para las que se iba a dar soporte. Esto además del coste que supone tener diversos ordenadores hay que tener en cuenta la cantidad de tiempo que se perdía para mantener toda esta infraestructura de pruebas.
La versión gratuita de VMware es una de las opciones que existen para solucionar una buena parte de estos problemas, ya que nos permite tener en un mismo ordenador todos los sistemas operativos que queramos. Además nos permite mantener copias "limpias" de los sistemas operativos que nos permiten comenzar con el sistema operativo vacío simplemente copiando y borrando máquinas virtuales. El único inconveniente es la copia de ficheros entre todos estos sistemas operativos, pero una solución que suele ser válida para casi todas las soluciones es montar un servidor de FTP o un servidor Web para compartir los archivos entre las distintas máquinas virtuales.
Este sistema ha facilitado mucho la prueba de aplicaciones, pero obliga a instalar un depurador en cada una de las máquinas virtuales, o en su defecto a mostrar muchos mensajes de depuración que permitan localizar los fallos. Para facilitar aún más las cosas podemos usar la opción de "Remote Debugging" del Eclipse.
En mi caso tengo un ordenador en el que tengo instalado el Eclipse y que uso como entorno de desarrollo. En este mismo ordenador he generado varias máquinas virtuales (Windows y Ubuntu entre otras) en las que tengo configurada la red de forma adecuada para poder descargarme la aplicación desde un servidor web apache que tengo instalado. Para depurar de forma remota una aplicación con el Eclipse basta con arrancar las máquinas virtuales, descargar las aplicaciones y arrancarlas añadiendo en la línea de ejecución de las aplicaciones las siguientes opciones:
Necesitamos tener acceso por red a las máquinas virtuales para poder conectarnos desde el eclipse a estas aplicaciones y poder depurarlas. Esto no suele ser problema ya que VMware dispone de diversos modos de red que suelen adaptarse a cualquier entorno.
Una vez arrancadas las aplicaciones en las máquinas virtuales, basta con tener un proyecto abierto con las fuentes de la aplicación y hacer un "Debug ... Remote Java Application", para conectarnos y depurar de forma remota las aplicaciones. Hay que tener cuidado de indicar correctamente el host y el puerto en el que se están ejecutando las aplicaciones. Una vez iniciada la depuración veremos como podemos establecer breakpoints y suspender la ejecución de nuestras aplicaciones.
Con este sistema es muy sencillo depurar aplicaciones en diversos sistemas operativos con una infraestructura mínima (con un sólo ordenador puede ser más que suficiente). Con este sistema casi toda la dificultad radica en la configuración de la red para poder conectar nuestras máquinas virtuales con el sistema anfitrión y así distribuir de forma sencilla los archivos en los que está compuesta nuestra aplicación, normalmente con un servidor web suele ser suficiente para que las máquinas virtuales puedan descargar archivos.
Hasta hace bien poco la única opción era tener varios ordenadores con distintos sistemas operativos conectados en red (o peor incluso, un sólo ordenador con multiarranque), e ir trasladando la aplicación entre estos ordenadores para ir probándola en todos los sitemas operativos (y todas las versiones) para las que se iba a dar soporte. Esto además del coste que supone tener diversos ordenadores hay que tener en cuenta la cantidad de tiempo que se perdía para mantener toda esta infraestructura de pruebas.
La versión gratuita de VMware es una de las opciones que existen para solucionar una buena parte de estos problemas, ya que nos permite tener en un mismo ordenador todos los sistemas operativos que queramos. Además nos permite mantener copias "limpias" de los sistemas operativos que nos permiten comenzar con el sistema operativo vacío simplemente copiando y borrando máquinas virtuales. El único inconveniente es la copia de ficheros entre todos estos sistemas operativos, pero una solución que suele ser válida para casi todas las soluciones es montar un servidor de FTP o un servidor Web para compartir los archivos entre las distintas máquinas virtuales.
Este sistema ha facilitado mucho la prueba de aplicaciones, pero obliga a instalar un depurador en cada una de las máquinas virtuales, o en su defecto a mostrar muchos mensajes de depuración que permitan localizar los fallos. Para facilitar aún más las cosas podemos usar la opción de "Remote Debugging" del Eclipse.
En mi caso tengo un ordenador en el que tengo instalado el Eclipse y que uso como entorno de desarrollo. En este mismo ordenador he generado varias máquinas virtuales (Windows y Ubuntu entre otras) en las que tengo configurada la red de forma adecuada para poder descargarme la aplicación desde un servidor web apache que tengo instalado. Para depurar de forma remota una aplicación con el Eclipse basta con arrancar las máquinas virtuales, descargar las aplicaciones y arrancarlas añadiendo en la línea de ejecución de las aplicaciones las siguientes opciones:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044El puerto que ponemos (en este caso 1044) se puede modificar por otro, siempre y cuando pongamos este mismo puerto en la configuración del Eclipse. Es interesante saber el significado del resto de las opciones, pero en la mayor parte de los casos los valores por defecto serán suficientes.
Necesitamos tener acceso por red a las máquinas virtuales para poder conectarnos desde el eclipse a estas aplicaciones y poder depurarlas. Esto no suele ser problema ya que VMware dispone de diversos modos de red que suelen adaptarse a cualquier entorno.
Una vez arrancadas las aplicaciones en las máquinas virtuales, basta con tener un proyecto abierto con las fuentes de la aplicación y hacer un "Debug ... Remote Java Application", para conectarnos y depurar de forma remota las aplicaciones. Hay que tener cuidado de indicar correctamente el host y el puerto en el que se están ejecutando las aplicaciones. Una vez iniciada la depuración veremos como podemos establecer breakpoints y suspender la ejecución de nuestras aplicaciones.
Con este sistema es muy sencillo depurar aplicaciones en diversos sistemas operativos con una infraestructura mínima (con un sólo ordenador puede ser más que suficiente). Con este sistema casi toda la dificultad radica en la configuración de la red para poder conectar nuestras máquinas virtuales con el sistema anfitrión y así distribuir de forma sencilla los archivos en los que está compuesta nuestra aplicación, normalmente con un servidor web suele ser suficiente para que las máquinas virtuales puedan descargar archivos.