h1

Las herramientas del oficio

09/03/2010

Wizdoc [Icon By Buuf]  Tips & Tricks.

La disciplina es la mejor herramienta de todas.

— Anónimo

Hace ya bastante tiempo publiqué un post relacionado a las herramientas y frameworks que nos pueden servir al desarrollar software en Java. Durante estos tres últimos años, algunos de esos frameworks han pasado a mejor vida o simplemente no han podido despegar del suelo, mientras otros se han consolidado como los estándares de facto en la industria.

Por otro lado, algunos compañeros de trabajo se me han acercado preguntando cuáles son las "herramientas del oficio" que todo Javero debería conocer so pena de quedarse fuera de oportunidades de trabajo, promoción y mejores ingresos. Esto debido a la enorme cantidad de frameworks y herramientas en Java, y a que la mayoría de las instituciones educativas no proporcionan a sus alumnos más que el core del lenguaje. Por ejemplo, muchos desarrolladores egresan de la universidad con certificación en Java Programmer, pero a la hora de participar en un proyecto Java/J2EE de la vida real, se quedan en blanco porque apenas si saben programar servlets o JSPs, mientras su "entorno de desarrollo" es el prehistórico notepad o en el mejor de los casos, un editor de texto "más en forma" como TextPad.

Entonces, para dejar de sufrir, a lo largo del proceso de desarrollo tenemos a nuestra disposición ciertas herramientas "ágiles" que es indispensable conocer para realizar un buen trabajo de desarrollo:

JUnit. Necesario para realizar las pruebas unitarias y de regresión, evitando la común práctica de incluir un main(String args[]) en nuestras clases para verificar su funcionalidad.

Struts. Un framework MVC (Model View Controller) empleado en la capa de presentación, como alternativa a los servlets y JSPs. No es el más fácil ni el más bello de implementar, pero es el estándar de la industria ya que al menos un 65 al 70% de las implementaciones web lo tienen como requisito.

Spring. Originalmente creado como una alternativa a los EJBs, permite gestionar pools de Java beans para mejorar el rendimiento y escalabilidad de una aplicación J2EE. Adicionalmente, se le puede integrar a Struts y Hibernate, lo que permite usar de manera efectiva la mancuerna Presentación-Negocio-Persistencia de una arquitectura multicapas.

Hibernate. Así como Spring, el proyecto Hibernate se fundó como respuesta a las grandes dificultades que presentaron las implementaciones de EJBs, especialmente de los Entity Beans empleados en la capa de persistencia. Usado como una herramienta de mapeo entre la base de datos y objetos en Java, Hibernate es muy efectivo a la hora de interactuar con los registros de bases de datos, incluyendo pools de conexiones y gestión automática de objetos.

Eclipse. En vez de un editor de textos simple, Eclipse nos brinda la oportunidad de contar con un verdadero entorno de desarrollo integrado, con mil y un funcionalidades que pueden hacernos la vida más fácil, incluyendo automatización de tareas, editores específicos de acuerdo al tipo de archivo, embellecimiento de código o revisión automática de los estándares de codificación.

Ant. Para no hacernos pelotas con la clásica línea:

C:>javac -classpath .;examples;libBanners.jar examplesgreetingsHi.java

Podemos utilizar Apache Ant, una herramienta que permite automatizar scripts de compilación. Mediante archivos XML para configurarlo, podemos realizar una gran variedad de tareas incluyendo compilación, empaquetado y depuración de nuestros proyectos, pues Ant es integrable con JUnit.

Log4j. Con anterioridad hemos visto que usar System.out.println() para depurar el código es una práctica bastante primitiva que además, puede resultar peligrosa. Log4j tiene como principal finalidad la de imprimir mensajes en una consola, insertarlos en una tabla de base de datos o guardarlos en archivos de bitácora, sin entrometerse con los ciclos de procesamiento o uso de disco de nuestro sistema.

Subversion. Es el sistema de control de versiones por excelencia: con funcionalidad como ligas simbólicas, branching y la posibilidad de integración con Apache HTTP Server, prácticamente toda la comunidad opensource hace uso de SVN como repositorio del código fuente para los proyectos salidos de ésta.

Hudson. La integración continua demanda ejecutar de manera periódica daily builds, detección de fallas durante las pruebas unitarias o simplemente, verificar que el código en el repositorio de versiones compila correctamente. Hudson permite realizar estas tareas de manera automática, al ser integrable con SVN, Ant y Maven mientras reside en un servlet container como Tomcat, JBoss o Glassfish. También permite obtener estadísticas como número de errores por build, calidad del código – al ser integrable con herramientas como checkstyle – y respaldo de artefactos de compilación.

Maven. Herramienta de gestión y construcción de proyectos parecida a Ant, aunque parte de un concepto diferente. La principal utilidad de Maven es la gestión de dependencias en el código, descargando automáticamente las librerías que necesita nuestro proyecto a partir de repositorios previamente configurados. De esta manera, ya no tenemos que devanarnos los sesos para encontrar y descargar la versión 2.0.8 de Jakarta Oro o "esa versión estable" del Apache Commons para que compile nuestro proyecto. Incluso permite generar dependencias a partir de nuestros propios proyectos, facilitando la integración y uso de estructuras jerárquicas complejas.

Como decimos por estas tierras, ahí ‘ta. Sin estas herramientas, nos encontramos como exploradores sin brújula. Tal vez no sea una lista exhaustiva ni mucho menos definitiva, pero nos da una idea de lo mínimo que necesitamos además del lenguaje mismo para construir aplicaciones de escala empresarial en Java, ahorrándonos sangre, sudor y lágrimas cuando debamos liberar código productivo en el menor tiempo posible.

One comment

  1. Muy interesante, yo siempre he sido partidario de usar eclipse, hace que los tiempos en los que programaba con el emacs o con el vi no sean añorados. (así y todo, le tengo más simpatía a netbeans por alguna extraña razón).

    Un blog muy interesante, acabo de empezar a escribir uno sobre temas similares (quizá sea bastante menos riguroso y más orientado a expresar mi opinión sobre el mundo).

    Anyway, si te aburres, chequealo.

    http://martusfera.wordpress.com/

    suerte!



Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: