jueves, 14 de febrero de 2013

Instalando MSYSGIT en Windows 7.


Si la idea es comenzar a trabajar con repositorio distribuido GIT de seguro esta esta herramienta nos ayudara.

Pero vamos a la practica que es como poder montar GIT en una maquina Windows, podremos descargar la versión  en http://code.google.com/p/msysgit/downloads/list



mysysgit proporciona la simple interfaz de línea de comando del sistema de versión git en windows.

lo siguiente es el proceso de instalación 

msysgit1


Haga clic en Siguiente para continuar.

A continuación, se le presentará con el EULA. Básicamente dice que, si permite la distribución y los cambios en el programa, usted tiene que distribuir también el código fuente de estos cambios. Nosotros no estaremos modificar o redistribuir el programa, por lo que esta licencia es totalmente gratis.


msysgit2


Haga clic en Siguiente para continuar.

A continuación, se le pedirá una ruta de instalación de destino:

msysgit3

Haga clic en Siguiente para continuar.

msysgit4

Haga clic en Siguiente para continuar.

msysgit5

Haga clic en Siguiente para continuar.

msysgit6

msysgit7

Elije la primera opción aquí. Se trata de Windows Unix compatibilidad, y en realidad sólo importa si usted va a editar archivos de texto. 

Si por alguna razón elige la segunda opción, el editor de texto puede interpretar los archivos como "TODO EN UNO LINE" . 

Si opta por la tercera, nos neckbeards Unix tendrá un montón de ^ M caracteres al final de cada línea.

Este es un detalle realmente histórico. La razón de esta opción existe es porque Windows se ha quedado con el viejo estándar para demarcar los finales de línea

Asegúrese de que la primera opción está seleccionada y pulse Siguiente .

msysgit8

Este articulo forma parte de una guía de trabajo con GIT en maquinas windows, esta guía actualmente se encuentra en construcción.


miércoles, 13 de febrero de 2013

Que es J2EE

Pensando en como abordar la utilización de framework complejos como struts 2, spring o hibernate de una manera practica donde los navegantes puedan obtener el conocimiento necesario me pregunte si el tipo que esta leyendo es de una locación geográfica donde no existe ofertas educativas adecuadas en desarrollo de software,  si fuera el caso estoy seguro que no contaría con la orientación necesaria para poder realizar aunque sea una autoformacion con internet por lo que de seguro no sabría para donde ir o por donde iniciar por la gran cantidad de contenido que encontramos en internet. 

De seguro tendría al tipo intentando entender arrancar con modelo MVC sin haber escuchado de servlet y JSP lo cual de seguro dificultaría la curva de aprendizaje.

¿Por dónde empezamos?

Como todo libros sobre la plataforma Java EE la mayoría de libros comienzan con una introducción bastante detallada sobre lo que es la plataforma Java EE y acto seguido con el uso de algunas tecnologías o framework basado en MVC que utiliza JSP y servlets como base, y nosotros aún no sabemos lo que es un  servlet lo que dificulta nuestra curva de aprendizaje.

Vamos a empezar por lo más básico de lo básico, los servlets, e iremos escalando poco a poco, la experiencia me indica que e tenido programadores conmigo trabajando con framework modernos pero cuando se topan con una arquitectura tradicional jsp + servlet + JDBC caminan por las paredes por que su curva de aprendizaje fue mecánica sin la inducción adecuada, les garantizo que si vamos paso a paso entender el mundo web de java va ser mucho mas sencillo.


Plataforma Java EE

La plataforma Java EE está destinada a desarrollar aplicaciones empresariales distribuidas, con una arquitectura multi-capa, escritas en el lenguaje de programación Java y que se ejecutan en un servidor de aplicaciones como Tomcat, weblogic, jboss..etc.

Es un conjunto de especificaciones que permiten soluciones para el desarrollo, despliegue y gestión de aplicaciones multicapa centradas en servidor.


¿Que es una especificación?

Una especificación no es más que el detalle de cada una de las tecnologías dentro de la plataforma Java EE. Un conjunto de reglas que dictan como debe desarrollarse ese producto de tal forma que se pueda garantizar que una aplicación desarrollada siguiendo las especificaciones de Java EE pueda desplegarse y ejecutarse.

Tecnologías de la plataforma Java EE

Enterprise JavaBeans (EJB).
Java Servlet
JavaServer Page (JSP)
JavaServer Pages Standard Tag Library (JSTL).
JavaServer Faces (JSF)
Java Message Service (JMS).
Java Transaction API (JTA).
JavaMail API y JavaBeans Activation Framework (JAF).
Tecnologías XML (JAXP, JAX-RPC, JAX-WS, JAXB, SAAJ, JAXR)
JPA, JDBC API
Java Naming and Directory Interface (JNDI)
Java Authentication and Authorization Service (JAAS)


Aplicación multi-capa

Hemos dicho que la plataforma Java EE está destinada a desarrollar aplicaciones distribuidas con una arquitectura multi-capa. Esto quiere decir que podemos separar el desarrollo de la aplicación en diferentes capas según su función. Las aplicaciones Java EE suelen ser consideradas aplicaciones de tres capas porque se distribuyen en tres localizaciones, ordenadores clientes, el sistema donde se ejecuta el servidor de aplicaciones, y el sistema donde reside la base de datos.


  • La capa del cliente (Client-tier) que es la capa destinada a mostrar la interfaz gráfica de usuario. Las aplicaciones Java EE pueden ser una aplicación Java Swing normal, o una aplicación Web renderizada en un navegador. Esta capa se ejecuta en el ordenador cliente.
  • La capa de la lógica de negocio (Business-tier) y la capa de la lógica de presentación (Web-tier). Estas capas se ejecutan en el servidor de aplicaciones.
  • La capa de los datos (Data-tier) que es la capa destinada a la gestión de los datos. Esta capa puede separarse a su vez en una o más capas.
Servidor de aplicaciones y contenedores

Como hemos dicho, las aplicaciones empresariales se ejecutan en un servidor de aplicaciones.

Una aplicación empresarial Java EE está formada por un conjunto de módulos donde cada módulo es un conjunto de uno o más componentes que se ejecutan en el mismo contenedor.

Un componente no es más que una unidad de software, puede ser un componente web como una página JSP o un servlet, un componente EJB, etc. Estos componentes se ejecutan dentro de sus correspondiente contenedor dentro del servidor de aplicaciones.

El contenedor no es más que un entorno de ejecución que gestiona los componentes, por eso, los componentes deben de cumplir el contrato que establece el contenedor. Ese contrato no es más que un conjunto de métodos que debe implementar el componente y que permite al contenedor interactuar con él.



Existen dos tipos de contenedores dentro de un servidor de aplicaciones:

  • Contenedor WEB encargado de gestionar los componentes servlets y páginas JSP.
  • Contenedor EJBs encargado de gestionar los componentes EJBs.


Además cada contenedor proporciona una serie de servicios que el componente puede utilizar. El contenedor es el encargado de gestionar el ciclo de vida de los componentes, realizar la reserva de recursos, etc. 

Los módulos que forman una aplicación empresarial pueden ser de tres tipos:

  • Archivos JAR (Java Archive): Los archivos JAR permiten agrupar distintos archivos .java en uno solo. Es el empleado para empaquetar componentes EJBs.
  • Archivos WAR (Web Application Archive): Los archivos WAR permiten empaquetar en una sola unidad aplicaciones web completas (servlets, páginas JSPs, contenido estático como imágenes y otros recursos Web).
  • Archivos EAR (Enterprise Application Archive): Los archivos EAR son archivos desplegables en servidores de aplicaciones JEE. Contienen archivos WAR y EJBs empaquetos en ficheros JAR.

Por lo que podríamos decir que existen tres tipos de aplicaciones Java EE:

  • Aplicaciones Web JAVA.
  • Objetos distribuidos EJBs.
  • Aplicaciones empresariales que engloba a las dos anteriores, aplicaciones web JAVA y objetos distribuidos EJBs.

Algunos de estos servicios de un contenedor son servicios declarativos, esto quiere decir que algunos servicios se declaran en vez de programarse. La declaración se realiza mediante descriptores de despliegue. Cada módulo dispone de un descriptor de despliegue. El descriptor de despliegue no es más que un archivo XML que describe como se deben desplegar esos componentes en el contenedor del servidor de aplicaciones.

El archivo web.xml proporciona la configuración y el despliegue de información para los componentes web que conforman una aplicación.

Este archivo debe residir en el directorio WEB-INF dentro del contexto de la jerarquía de directorios que existen para una aplicación Web.

Como todos los archivos de configuración xml, este contiene un esquema  que describe el contenido del fichero xml y la descripción de las propiedades que va a utilizar. Dentro de este archivo definiremos la configuración de la aplicación web que estemos desarrollando.

Programadores del Mundo Java que cambiaron el desarrollo web


Si programas con Java seguro que te sonarán cosas como Tomcat, Ant, JUnit, JBoss, Hibernate, Struts y Spring. Pero quizás lo que no conozcas sea a las principales personas que hicieron posible desarrollar esas tecnologías contribuyendo indiscutiblemente a la comunidad Java y cambiando nuestra forma de programar. A continuación hacemos un recorrido a ocho de las personas más importantes de la comunidad Java que deberías conocer, basándonos en la lista creada por mkyong que sigue muy vigente al ser historia viva de la programación.

James Gosling

En primer lugar, es indiscutible que aparezca James Gosling. El inventor de este lenguaje allá por 1994 cuando implementó el compilador original y la maquina virtual trabajando en Sun Microsystem. Sin este hombre el lenguaje Java no existiría. Tras casi treinta años en Sun de 1984 a 2010, abandonó la compañía tras la compra de Oracle para recalar durante unos meses en Google. Tras ello se incorporó a una startup conocida como Liquid Robotics.

Gavin King

Gavin King es el fundador de Hibernate. Es una popular librería que provee una excelente solución para persistir objectos realizando mapeos partiendo de bases de datos relacionales. También es el creador de Seam, además de colaborar fuertemente en el diseño de EJB 3.0 y JPA.

Rod Johnson

Uno de los framework de desarrollo de Java más conocidos es Spring Framework creado por Rod Johnson, CEO de SpringSource. Además ha conseguido aglutinar un importante ecosistema de tecnologías entorno a la compañía incluyendo la incorporación de Groovy o Grails junto a una variedad de productos orientados al desarrollo de aplicaciones Java.

Craig Mcclanahan

No podíamos dejar de hablar de Struts, otro de los grandes framework MVC en los que se basan muchas aplicaciones web Java. El creador de esta tecnología es Craig R. Mcclanahan que también ha contribuido con la definición de Servlet 2.2, 2.3, JSP 1.1, 1.2. Además de ser uno de los arquitectos de Tomcat.

Marc Fleury

El responsable de la primera versión de JBoss se la debemos a Marc Fleury. Jboss es un servidor de aplicaciones J2EE de código abierto bastante popular. La empresa fundada por Marc fue adquirida por Red Hat donde ahora sigue desarrollando más servicios y productos entorno a Java.

Joshua Bloch

Joshua Bloch trabaja actualmente en Google, pero es conocido principalmente por ser el responsable de numerosas característica de Java, como Java Collections Framework, el paquete java.mathjava.math o el mecanismo de assert. Además es uno de los programadores más prolíficos en cuanto a literatura como libros Effective Java, java Puzzlers o Java Concurrency in Practice.

Kent Beck

Probablemente si has trabajado con TDD te sonará el nombre de Kent Beck, el creador de JUnit junto Erich Gamma que se ha convertido en un estándar de facto para el testeo de aplicaciones java. además es uno de los creadores del Extreme Programming y test Driven Development (TDD). Sin duda, la combinación de TDD y JUnit ha cambiando la forma de programar de muchos desarrolladores. Por cierto, ahora trabaja en Facebook.

Jame Duncan Davidson

Otro de los grandes programadores que pasaron por Sun Microsystem es James Duncan. Allí creó Tomcat, uno de los contenedores de aplicaciones más usados en entornos Java, además de una de las herramientas que más nos han facilitado la vida para desplegar aplicaciones y construir procesos como es Ant.

lunes, 11 de febrero de 2013

Instalando TOMCAT 7 en Windows 7 + Integración con Eclipse Helio

Hola la realidad es que la instalación de Tomcat no es un proceso complejo, lo que se vuelve complicado es con windows 7 y dada la cantidad de problemas que tienen los programadores,  me pareció que estaba bueno poder hacer una pequeña guía para evitar complicaciones en el proceso.

En primera instancia deberemos descargar el producto de la pagina oficial de http://tomcat.apache.org/download-70.cgi



En mi caso utilizare la versión core contenida en un zip para la instalación que la realizaremos un tanto manual para evitar problemas que produce windows 7. Por algún motivo en algunas versiones hay problemas en la instalación cuando lo realizamos en la carpeta de archivo de programas por lo que en esta oportunidad vamos a descomprimir el archivo y renombrar el directorio a tomca7 como lo muestra la imagen.


 Lo primero que tenemos que hacer para configurar Apache Tomcat 7 es establecer la variable de entorno JAVA_HOME indicándole el directorio de instalación del SDK. Podemos establece la variable de entorno JAVA_HOME desde la linea de comandos:

set JAVA_HOME=java_install_dir

O podemos editar el script de inicio de Tomcat y establecer allí la variable. Para ello, editamos el archivo catalina.bat situado en tomcat_install_dir\bin y añadimos la misma línea anterior después del primer conjunto de comentarios

 Localizamos el archivo


editamos el archivo en mi caso con el notepad ++ y colocamos el path del jdk 1.6 con la ruta de mi equipo ustedes deberán ingresar el directorio donde lo tienen instalado.



El siguiente paso es especificar el puerto del servidor. En Tomcat, el puerto por defecto es el puerto 8080 como en la mayoría de los servidores web, en mi caso tengo IIS, APACHE instalado en la maquina escuchando por puerto similares para evitar conflictos, por ello ustedes deberan asignar el puerto que tengan disponible. Editaremos el archivo server.xml situado en tomcat_install_dir\conf.

primero localizamos el archivo




editamos el archivo y modificamos el puerto por donde escuchara peticiones http.


El siguiente paso es definir la variable de entorno del tomcat que debe hacer referencia al directorio de instalación que definimos para tomcat.




agregaremos una nueva entrada


como pueden ver definimos la variable indicando el path del directorio de instalación de tomcat.


damos aceptar y finalizamos el proceso.


Ahora podemos iniciar el servidor utilizando el archivo startup.bat situado en tomcat_install_dir\bin.


en la ejecución podremos ver la información que genera tomcat al iniciar el servicio donde nos indica los puertos por donde esta escuchando.



Abrimos el navegador y accedemos a la URL localhost:8090/ y se nos mostrará la página de bienvenidas de Tomcat 7 en la que se nos felicita por haber instalado todo correctamente.



Para apagar el servidor utilizaremos el archivo shutdown.bat situado en el mismo directorio bin de instalación del tomcat.

A pero me olvide un peque detalle antes de arrancar el servidor es necesario definir las credenciales que nos posibilitaran ingresar a la herramienta manager del servidor para poder realizar gestiones manuales directamente sobre el servidor.

para ello editaremos el archivo  tomcat_install_dir\conf\tomcat-user.xml y colocaremos la credencial de administración.


ahora esta de mas mencionar que para realizar cambios sobre archivos de configuración el servidor debería estar en stop de caso contrario no tomaría los cambios.

ahora solo deberíamos iniciar el servicio e ingresar al administrador de tomcat.



Nos solicitara autentificacion para lo que deberemos ingresar nuestra credencial.



con esto estamos dentro de la herramienta.


Espero con esta guía haber logrado evitar horas de google para este objetivo, pero la realidad es que esto no tendría mucho sentido si no lo integramos por lo menos a nuestro entorno de trabajo eclipse.

ingresamos a eclipse - windows - preference


luego ingresamos a la opción de server - runtime enviromments donde agregaremos nuestro servidor


seleccionamos tomcat 7

damos siguiente donde definimos nombre para nuestro servidor


damos finalizar y tendremos cargado nuestro servidor


ahora solo debemos exponer nuestro servidor al entorno de trabajo para lo que debemos dejar visible la vista de server.


ahora generaremos un server nuevo en la pestaña de servers.
 deberemos seleccionar tomcat 7



con esto ya tendremos nuestro servidor disponible para poder trabajar



ahora solo falta crear nuestro proyecto web de prueba con un clásico hola mundo  para verificar el funcionamiento de J2EE sobre Tomcat 7 en windows 7 con un JDK 1.6.

Primero creamos nuestro proyecto web


lo llamaremos test_tomcat7


damos siguiente


marcaremos la casilla para que pueda crear el descriptor web.xml


Luego editaremos el archivo web.xml para que indique como pagina inicial una pagina index.jsp


Ahora vamos a crear la pagina index.jsp



A la cual editaremos y agregaremos un mensaje muy popular como hola mundo sobre tomcat 7.


Ahora lo que realizaremos sera la ejecución sobre tomcat7.



Resultado final


Logramos descargar Tomcat 7, configuramos, enlazarlo a helio y correr una pequeño ejemplo sobre el mismo.

Estamos en condiciones de poder abordar los próximos Artículos


  • Jugando con struts 2 + Hibernate
  • Conociendo Spring 
  • Git un sistema de control de versiones distribuidos vs SVN un sistema de control de versiones centralizado.
  • Integración con Nexus
  • Integrando a mi proceso de desarrollo los controles de Sonar.


Nota: si tiene corriendo tomcat de manera manual al momento de una ejecución les indicara el eclipse que ya hay una instancia escuchando por lo que no puede.  Bajen el que esta corriendo o configuren en eclipse que genere una instancia al momento de trabajar con el servidor.

Desde ya me encuentro a disposición de ayuda que puedan necesitar en la ejecución de esta guía  el material es probado antes de subir a la web por lo que repasar cada paso en caso de haber un error.