jueves, 25 de abril de 2013

API para el manejo de archivos de propiedades (Properties)


Una de las funciones más utilizadas en Java (y otros lenguajes de programación) es la de poder guardar parámetros de configuración (o propiedades, como deseen llamarlo) en archivos de texto plano. En Java, estos archivos reciben el nombre de "Property File" o "Archivo de propiedades", y se encargan de almacenar información como pares "clave - valor". Por ejemplo:

//clave=valor
Default.IPServidor=127.0.0.1
Default.PuertoServidor=8081
Default.UsuarioBaseDeDatos=hr
//…etc.

En Internet se pueden encontrar muchos tutoriales para poder aprender y comenzar a utilizarlos, la verdad, no es nada del otro mundo. Sin embargo, algo que es también conocido y resulta muy repetitivo es el hecho de que el desarrollador debe encargarse de toda la lógica para poder: ubicar el archivo de propiedades, validar su existencia, cargar el archivo en memoria, validar la existencia de los parámetros en el archivo, y todo el manejo y propagación de excepciones que esto conlleva.

Es ahí donde entra el pequeño API que encontré en una de esas tardes en que la necesidad golpea tu mente y piensas “alguien más también tuvo este problema y de seguro lo resolvió” (uno de los principios de un buen desarrollador es aprender a copiar y pegar, siempre tratar de no reinventar la rueda).

El API se llama “OWNER” y lo que permite básicamente es abstraer toda esa lógica nombrada anteriormente, y orientarse a desarrollar una interfaz simple de Java, que con ayuda de unas cuantas anotaciones queda lista para poder ser un objeto configurado al que le podemos solicitar las propiedades que deseemos las veces que queramos. Únicamente lo que debemos hacer es:

  1. Crear una interfaz Java que me represente los métodos de obtención de valores. Un método por cada propiedad. 
  2. Configurar la o las rutas de los archivos de propiedades desde los cuales se encargará de tomar los datos. 
  3. Configurar para cada método la “clave” o propiedad cuyo valor se encargará de ofrecer. Y de ser necesario, un valor por defecto, en caso de que no encuentre el valor en ninguno de los archivos cuyas rutas han sido configuradas. 

A continuación les dejo la dirección de la página oficial del API en mención que ya he comenzado a probar y me ha dado buenos resultados. Espero en una futura entrada poder hacer un pequeño tutorial acerca de la utilización de este API. (Pese a que en su página se muestra de una manera bastante clara y sencilla su utilización).


Vale recalcar que la descarga del sitio oficial, son archivos fuentes. Tomé la libertad de tomar estos fuentes y crear un JAR para poder facilitar la transportación de estas clases y la librería de OWNER como tal. Esto simplificará la tarea de utilizar este API en cualquier proyecto (únicamente agregando el JAR en el destino necesario).

El link al JAR es el siguiente.

Si les ha parecido interesante la entrada, tienen comentarios, u opiniones acerca de este API o alguno relacionado, siéntanse en la libertad de comentar. La meta es aprender.

martes, 23 de abril de 2013

Bibliografía infaltable para iniciar en Java


Como podrán ver se me ocurrió que una buena idea para un primer post (funcional, porque el de bienvenida no aporta mucho que digamos...) sería el de publicar un buen material base para iniciar en este mundo conocido como Java.

No se me ocurrió uno mejor que el que aquí les presento. Hace un par de años llegó a mis manos y desde el principio me pareció excelente, no solo por el alto nivel didáctico que posee sino por la calidad del contenido. (Es uno de los libros recomendados para la Certificación de Programador en Java J2SE). El libro es de la editorial O'Reilly, que ya es ampliamente conocida por la gran aceptación de sus trabajos en el mundo de IT.

¿A qué me refiero por "contenido didáctico"? Pues a lo que se imaginan: a juegos, imágenes, globitos de pensamientos, sopas de letras, dibujitos explicativos, etc. Si, lo sé, resulta difícil de creer que un documento del calibre que se requiere para una certificación sea así de "informal", pero eso es un punto en lo que se destaca O'Reilly. Incluso habrá personas que se sientan tratadas como estudiantes de primaria mientras lo leen, pero les confieso que con toda la experiencia que tengo en Java, desde el primer capítulo comencé a aprender cosas nuevas, conceptos e ideas que tal vez no se necesiten para programar aplicaciones medianas en Java, pero que llegan a ser la diferencia entre conocer el resultado de nuestro programa y, conocer qué es lo que esta pasando y no estamos viendo durante la ejecución de nuestro programa. Recordemos que los principiantes saben “cómo” y los profesionales saben “cuándo”, pero los maestros saben “porqué”.

La única desventaja característica especial es que está en inglés; aún no encuentro una versión en español, y sinceramente no creo que exista, por lo menos hablando del libro completo, pero espero que el público que lea esta entrada se encuentre en buenas relaciones con el inglés, para los que no, les aconsejaría de la manera más sincera que vayan haciendo las paces con el idioma mencionado. En el mundo de TI y la programación todo avanza tan rápido que la información que va apareciendo en páginas en idioma español ya está desactualizada en el momento de su publicación, lamentablemente no nos podemos dar el lujo de esperar a que la información esté en nuestro idioma natal para poder acceder a ella. En el último de los casos, recuerden que de todas maneras, siempre contaremos con nuestro amigo Traductor de Google.

El link al archivo, es el siguiente.

El inicio


Desde hace mucho tiempo tengo ganas de comenzar un blog pero muchas dudas acechan y siguen acechando... Los temas a discutir, la calidad de mi escritura, el compromiso que estoy adquiriendo, todos éstos puntos dan vueltas en mi cabeza y han hecho que tarde en decidirme si comenzar o no el blog. Al final, creo que las ganas de querer compartir información por sencilla o superflua que me pudiere parecer le ganaron a la indecisión.

Soy ingeniero en sistemas computacionales, y tengo unos cuantos años de experiencia en el desarrollo de aplicaciones Java, lenguaje que dicho sea de paso, me agrada no sólo por su naturaleza de libertad sino por todo el ecosistema que ha logrado llegar a representar en los últimos años. Es un lenguaje que abarca desde aplicaciones de escritorio hasta aplicaciones del lado del servidor, pasando por aplicaciones para móviles (BlackBerry, Android), etc. Como todo lenguaje de programación, posee sus ventajas y desventajas, pero es innegable la cuota de mercado que ha llegado a abarcar.

Últimamente desempeño mis tareas en el área de arquitectura e innovación de la empresa en donde trabajo, brindándome la oportunidad de poder ejecutar proyectos en donde básicamente el aprendizaje nunca termina, si lo ven como yo, me pagan por aprender. Cada día encuentro uno que otro tópico interesante sobre el cual compartir, alguna experiencia que me recuerda que existen ciertos puntos que por su importancia, deben siempre tenerse en cuenta. No digo que la línea del blog vaya a ser siempre Java, sin embargo lo más probable es que la mayoría de entradas vayan orientadas hacia ese lenguaje.

Mi objetivo será siempre el de compartir información que me ha sido útil, y que muchas veces, por las barreras del idioma no se pueden entender o simplemente parecen intimidantes. Lo único que espero es que todo lo publicado aquí sea de ayuda para quien la necesite. Y si se trata de aprender de experiencias de otros, pues los comentarios de los lectores siempre serán bienvenidos.