23 de abril de 2011

Log4j para Creación de Eventos de Log

El uso de logging o de bitácoras dentro del contexto de desarrollo de aplicaciones constituye insertar sentencias dentro de la aplicación, que proporcionan un tipo de información de salida que es útil para el desarrollador. Un ejemplo de logging son las sentencias de rastreo o de seguimiento que colocamos en la aplicación para asegurarnos de que esta haya pasado por los flujos adecuados. Esto normalmente es realizado usando "System.out.println".

El problema con este tipo de sentencias, es que algunas veces olvidamos quitarlas después de que han servido a su propósito específico, y terminamos con una aplicación que genera cientos o miles de salidas innecesarias a la consola. Otro problema es que todas las llamadas tienen el mismo significado, es decir, no podemos saber exactamente cuál sentencia representa una salida de debug (que seguramente olvidamos quitar), cuál representa una salida de información últil, y cuál representa un error que se ha generado; las tres se ven exactamente igual para nosotros.

En este tutorial aprenderemos cómo usar log4j, un framework especializado para el logging o creación de bitácoras en las aplicaciones Java. También veremos dos formas distintas de configurarlo y las diferencias entre ambas formas.

22 de febrero de 2011

Instalación de un Servidor de Desarrollo - Parte 4: Conexión Apache + Tomcat

En el artículo anterior de la serie de la instalación de un servidor de desarrollo vimos cómo instalar y configurar el Servidor HTTP Apache versión 2.2 y el contenedor de Servlets y JSPs Apache Tomcat versión 7.0.

Ahora veremos cómo configurarlos para que el servidor Apache sirva como punto de entrada de las peticiones que se realicen al Tomcat. De esta forma podremos tener sitios estáticos y sitios dinámicos y no necesitaremos entrar por un puerto especial para unos y por otro para otros. Además posteriormente veremos cómo esto nos puede servir para que Apache sirva todos los recursos estáticos, como imágenes, archivos javascript, archivos css, etc., y que Tomcat sirva los recursos dinámicos.

21 de febrero de 2011

Instalación de un Servidor de Desarrollo - Parte 3 : Instalación de Java, MySQL, Apache, y Tomcat

En el tutorial anterior de la serie (personalización del prompt) explicamos de forma muy breve las ventajas que nos daba tener un servidor de desarrollo para la fase de implementación de nuestros proyectos, además vimos cómo agregar un poco de color a nuestro prompt.

Una parte importante de un servidor de desarrollo son las herramientas con las que este cuente (que dependerán un poco de los tipos de proyectos y políticas de nuestra empresa/trabajo/grupo de desarrollo) y que nos facilitarán este tan arduo pero gratificante trabajo ^_^.

Instalaremos varias aplicaciones para este fin, como un servidor para control de versiones de código fuente, un servidor de integración continua, una aplicación para reportes de incidencias, etc. Además veremos cómo integrar todas estas herramientas con nuestro IDE de cabecera, el NetBeans, para trabajar de una forma integral.

En este tutorial aprenderemos a instalar las versiones más recientes de las herramientas básicas con las que contará nuestro servidor (entre las cuales se encuentra el JDK de java). En este tutorial instalaremos los siguientes servicios:

Y veremos cómo configurarlos para que arranquen junto con nuestro servidor.

20 de febrero de 2011

Instalación de un Servidor de Desarrollo - Parte 2 : Personalizando el Prompt

Hace un par de años hice un tutorial sobre cómo podíamos virtualizar un sistema Linux usando Virtualbox. La idea de aquel tutorial era montar un servidor de desarrollo para llevar el control de las aplicaciones que nos encontrábamos desarrollando. Por asares del destino no pude continuar con aquella serie, pero creo que ya es momento para seguir con aquella serie :D.

Un servidor de desarrollo nos ayuda, como su nombre lo dice, mientras estamos en la fase de desarrollo de nuestra aplicación. Este nos proporciona algunas herramientas que nos facilitarán la vida como programadores. Además también nos proporciona un ambiente "seguro" para probar que nuestra aplicación (principalmente las web) no hagan alguna cosa indebida o no causen problemas en nuestro servidor de producción (¿nunca han matado el servidor al subir un cambio no probado, o borrado por error una base de datos? ^_^!).

El servidor que usaremos ahora será un poco distinto de que habíamos instalado. Seguimos usando un servidor con Debian, pero en vez de usar la versión 5, usamos la versión 6. De la misma forma que la vez anterior, solo instalamos el sistema base, sin ningún paquete adicional (todo lo iremos instalando de forma manual o casi manual).

6 de febrero de 2011

Spring 3 - Parte 4: Ciclo de Vida de los Beans

En los tutoriales anteriores hemos visto cómo trabajar configurar beans, tanto con anotaciones como con archivo de configuración en XML, y cómo cablearlos a las propiedades de otros beans.

Sin embargo Spring nos proporciona mecanismos para controlar la creación de beans y ejecutar ciertas acciones en las distintas etapas del ciclo de vida de nuestros beans.

En este tutorial aprenderemos cómo controlar cuándo deben ser creadas las instancias de los beans y a crearlos a través de un método estático de factoría, además de recibir notificaciones cuando un bean es creado y antes de que sea destruido.

2 de enero de 2011

Spring 3 - Parte 3: Inyección de Colecciones

En el tutorial anterior vimos cómo hacer la configuración de Spring para poder hacer el cableado o wiring de propiedades simples, ya fuera un valor constante o una referencia a un objeto.

Esto es muy útil cuando esperamos solo una referencia o un valor, ¿pero qué ocurre en el caso en el que necesitemos hacer la inyección de varios objetos? Java proporciona un conjunto de clases que nos permiten manejar conjuntos de objetos. Estas clases son conocidas como colecciones.

En este tutorial aprenderemos cómo realizar la inyección de dependencias en 3 tipos de colecciones ("List", "Set", y "Map") y, adicionalmente, aprenderemos a inyectar propiedades ("properties") y arreglos ("arrays"). Además veremos cómo insertar valores nulos en las propiedades de nuestros beans.

23 de diciembre de 2010

Spring 3 - Parte 2: Contenedores de IoC e Inyección de Dependencias

Como vimos en el primer tutorial de la serie, el core de Spring se basa en el concepto de Inversión de Control (IoC por sus siglas en inglés), más específicamente en la Inyección de Dependencias (DI). Este es un proceso en el cual los objetos definen sus dependencias (o sea, los otros objetos con los que trabajan) solo a través de los argumentos de su constructor, argumentos a un método de factory, o métodos setter que son invocados después de que el objeto se ha construido. En este caso en vez de ser el mismo objeto quien se encargue de instanciar, o localizar, las dependencias con las que trabaja (usando directamente su constructor o un localizador de servicios), es el contenedor el que inyecta estas dependencias cuando crea al bean. Este proceso, como podemos observar, es el inverso al que normalmente se hace, y de ahí el nombre de Inversión de Control (es el framework el que hace el trabajo, no el programador ^_^).

En este tutorial veremos como configurar Spring de 4 formas distintas para que realice este proceso de Inyección de Dependencias de forma automática

26 de octubre de 2010

Java Tutoriales en Facebook

No sé si algunos de ustedes los habrán notado, pero desde hace unos días se creó un sitio de facebook para la página de Java Tutoriales. De hecho pueden ver la insignia de facebook en el panel de la derecha ^_^.

Este sitio fue creado para que podamos compartir información de diversos tipos y estar en contacto con la comunidad de una forma más cercana. Así que no sean tímidos, entren y regístrense (dando clic en el botón "Me gusta").

Podremos intercambiar información, hacer preguntas, comentarios, concursos ( del cual por cierto ya tuvimos uno y hasta ganadora hubo ^_^), y todo lo que se les ocurra.

Así que regístrense para que podamos estar en contacto =D.

Saludos.

10 de octubre de 2010

Sun Certified Java Programmer 6, CX-310-065 - Parte 1: Declaraciones y Controles de Acceso

Este es el primer post dedicado a la certificación SCJP 6 (CX-310-065). Definiremos algunos conceptos básicos del lenguaje Java así como sus reglas más básicas de funcionamiento.

¿Por qué es importante esto? Bueno esto es de vital importancia ya que en todo lenguaje de programación, y tecnología en general, es importante para entender sus funciones avanzadas, comenzar entendiendo las partes básicas, así como definir los términos que se usan, para que todos entendamos de lo que estamos hablando.

Pues comencemos con el primer tema con un repaso de los conceptos básicos que debemos tener presentes, a modo de recordatorio.


4 de octubre de 2010

Sun Certified Java Programmer 6, CX-310-065

¿Qué es una certificación?


Una certificación es el proceso mediante el cual una tercera persona o institución, asegura por escrito que un producto, proceso, servicio, o en este caso conocimiento cumple con los requisitos especificados. Es un elemento insustituible para generar una mayor confianza entre las relaciones cliente-proveedor, o en este caso empleado-empleador.

Obtener una certificación Java proporciona una demostración clara de las habilidades técnicas, dedicación profesional y motivación que los desarrolladores tienen para mejorar día con día.

La certificación Java de Sun/Oracle es reconocida mundialmente, la industria respeta los programas de certificación en la tecnología Java. Se enfoca en los roles principales en desarrollo de aplicaciones de software y arquitectura empresarial. Las certificaciones son el punto central del proceso de aprendizaje, ya que proporciona una validación de los conjuntos de habilidades para un rol específico en un trabajo.