miércoles, 10 de marzo de 2010

Aplicacion web en CD con jetty y derby. Parte 1: Motivación

Esa ocasión mis amig@s javer@s hablaremos de lo que  se puede considerar un ejemplo de la vida real de las herramientas embebidas para aplicaciones java. Específicamente hablaremos de la creación de un CD con una aplicación Web java que se ejecute de manera completamente autónoma (una aplicación de escritorio es algo un poco mas fácil de lograr, sin embargo esta vez sortearemos el reto de utilizar un servidor de paginas web dinámicas para una aplicación web de java en un ambiente monousuario).

En esta primera parte hablaremos únicamente de la motivación y la mención de las herramientas de las que echaremos mano para lograrlo, dejando para una segunda parte (seguramente muy interesante) un ejemplo de la implementación mas detallado para que puedas probarlo por tu cuenta.

La motivación de llevar a cabo este ejercicio es el buscar la posibilidad de reutilizar nuestros sistemas hechos para un contenedor Web, ya sea Tomcat, Glassfish, etc. El mayor problema de portabilidad de estos sistemas es que forzosamente necesitan dicho contenedor instalado en el sistema para poderse ejecutar. Entonces es un  paso un tanto tedioso si lo que queremos es que nuestro sistema lo pueda utilizar un usuario final en la comodidad de su computadora, sin importar si hay conexión a internet o que tenga los servicios de base de datos o servidor web instalados en su sistema local.

Como comentaba anteriormente, la manera más fácil de llevar a cabo esto es utilizar una aplicación de escritorio. En la actualidad, con java, además de swing tenemos herramientas como JavaFX (de las que después hablaremos seguramente) que sumamente nos facilitan la implementación de sistemas de escritorio. Pero la idea es la reutilización, y si ya tenemos un sistema Web que facilita la vida para usuarios que acceden a él por medio de la red, porque no otorgar esta posibilidad a usuarios que lo quieran utilizar de manera local.

Es aquí donde entra Jetty, que como en un post anterior lo mencionamos, es un contenedor para aplicaciones web de Java. Lo singular de ésta aplicación es la facilidad para poder integrar una aplicación web cualquiera, aún utilizando diversos frameworks (yo hasta el momento lo he utilizado con Hibernate, Struts2 y Spring sin ningún problema). Con unas simples configuraciones queda completamente funcionar como aplicación de solo lectura, y así también las aplicaciones que éste contiene.

Después de haber sorteado este problema nos enfrentamos a un nuevo reto, lograr utilizar un manejador de base de datos para nuestra aplicación, sin tener que instalar uno forzosamente. Es aquí donde entra Derby, que como también anteriormente habíamos mencionado, es un manejador de base de datos hecho en Java y que puede trabajar de manera embebida. Inicialmente había elegido HSQL, sin embargo la característica de que sea un manejador que trabaja en memoria, en el momento que lo implementé aparecieron mas contras que pros de su utilización, así que decidí utilizar Derby, sin embargo tu eres libre de utilizar el manejador que mejor te plazca.

Obviamente si nuestra intención es crear un sistema que corra en CD, la base de datos solo tendrá atribuciones de lectura, no podremos escribir en ella. Derby permite ser utilizado como base de datos de solo lectura, incluso por su integración con java, es posible agregar nuestra base de datos a un jar agregadolo simplemente al classpath.

Para concluir esta primera parte del post, quisiera agregar que estas herramientas es posible utilizarlas en conjunto para una aplicación potable. Sin embargo, es necesario aplicar ciertas configuraciones para que funcionen como solo lectura y además requieren un directorio temporal en el sistema local para su disposicion tanto Jetty como Derby (Esto es algo chafa, pero si queremos utilizarlo de la manera fácil es necesario que se usen directorios temporales), y si a esto le agregamos algún lanzador automatico para correr la aplicación en un navegador una vez iniciados los servicios, ¡listo! tenemos nuestra aplicación portable, que fácil ¿no?.

Este post continuará con el ejemplo práctico, dentro de poco. Recuerda, cualquier comentario es bienvenido... cambio y fuera...

pazzzzzzz
Aquí puedes ver la continuación de esta entrada 

lunes, 1 de marzo de 2010

Ordenar nuestra información, pesadilla

Estaba un día viendo mis canciones, y me dije "¡que desm#$%dre tengo!, algún día tengo que ordenar", y el tiempo pasó y no he ordenado aún. Estaba otro día viendo los videos que tengo, unos los guardo en su formato original y otros los convierto a mp4 para verlos en el PSP, y me dije "¡que p#$%che desm#$%dre tengo!, un día de estos tengo que ordenar", y el tiempo ha pasado y pasado y no he ordenado. Un día estaba descargando aplicaciones para la computadora y cuando vi mi directorio de descargas dije "¡que p#$%"e des"#$%"#dre tengo, ya voy a depurar!". Lo mismo me ha pasado con las películas que tengo, con mis documentos, con mis juegos, con mis respaldos de información, en fin, con todo mi material digital que tengo disperso en diferentes medios, la verdad es que tengo un verdadero desm#$%dre.

¿Que hacer?, afortunadamente no me siento solo, se que mas de alguno le ha de suceder lo mismo, e incluso me atrevo a decir que debe ser un fenómeno mundial, y una de dos, o hay un duende informático que se encarga de esparcir nuestra información de manera desorganizada, o - una posibilidad que me parece menos lógica y menos plausible... jeje ;) - los desorganizados somos nosotros.

Según el articulo que leí, y concuerdo con él, un gran problema que tenemos es la tendencia a guardar todo, como si tuviéramos un medio de almacenamiento infinito (sobre todo el disco duro de nuesta pc principal). En el artículo lo llaman  "Infinite U-store-it".  Y lo peor de éste fenómeno es que lo repetimos en todos los dispositivos que nos acompañan: gadgets, celulares, consolas de juegos, laptop, etc.

La solución... mmm... tener un método de ordenamiento para que podamos conjuntar nuestros datos de manera útil y fácil de organizar y depurar. OK, creo que esto es una utopía, como voy a tener todo previsto ... si cuando uno compra un dispositivo nuevo, lo menos que te pones  a hacer es a idear un mecanismo de organización. Entonces en contra parte necesitamos una vacuna, una solución reactiva a este mal, pero difícilmente podemos encontrar una manera sistemática de solucionar el desorden... debe haber algún programita que lo haga... en el articulo que comento mencionan algunos ejemplos.

En realidad esta entrada no es más que para que recordemos un poco este mal que nos aqueja y tal vez hagamos conciencia de..... poooooor fin.... ordenar nuestra información... jeje.. o encontrar una forma de convivir con ello de manera que no sea un gran problema.. jeje.. como realmente lo hacemos.. ;) ... un saludo javeros y no javeros... aquí les dejo el enlace del articulo al que hago alusión, para acceder al artículo haz clic aqui.

pazzz