Entorno de programación Java Web

Introducción
El proceso de configurar un entorno de programación para java se puede abordar de muchas maneras. Quizá la más cómoda sea utilizar netbeans y dejar que haga todo el instalador.
Por razones de eficiencia y posiblemente de costumbre se utiliza eclipse como IDE y tomcat como servidor de aplicaciones. Por defecto netbeans instala glassfish.
En esta entrega vamos a abordar una instalación base de: JDK (java), eclipse, tomcat y maven sobre una máquina con OpenSuse 11.2 La versión de java será la 6 (32bits), eclipse será Helios, tomcat 6. Me han parecido versiones lo bastante "populares" y actuales. Utilizar una máquina con un linux es porque al usuario de windows le costará poco transponer las intrucciones a su entorno.
Instalo el jdk de Oracle/Sun en vez del Openjdk disponible desde yast porque da problemas con el administrador de glassfish y aunque no vamos a abordar esa instalación puede que sea interesante hacerlo en un futuro.
Asumo que todo el mundo sabe descargarse archivos, descomprimir en carpetas, etc...


Instalación
Nos descargamos el JDK, le cambiamos los permisos marcándolo como ejecutable y lo descomprimimos. Yo en particular me he bajado el archivo :jdk-6u29-linux-i586.bin
Una vez descomprimido vamos a la carpeta bin y ejecutamos "java -version". En mi caso la salida obtenida es:
andres@localhost:~/desarrollo/jdk1.6.0_29/bin> ./java -version
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode, sharing)
andres@localhost:~/desarrollo/jdk1.6.0_29/bin>

Procedemos de igual manera con el eclipse. Vamos a las páginas de http://www.eclipse.org/ y desde allí nos descargamos la versión apropiada a nuestro sistema operativo, una vez lo tenemos el archivo tar.gz lo descomprimimos con nuestra utilidad favorita.
Yo en concreto voy a descomprimir todo en una carpeta llamada "desarrollo" dentro de la "home" del usuario. Una vez descomprimido lanzamos el eclipse y le indicamos la ruta del workspace, en mi caso "/home/andres/desarrollo/workspace".
Llega el momento de descargar el Tomcat6. En http://tomcat.apache.org/download-60.cgi tenemos lo que buscamos. Yo en concreto me voy a bajar dentro de las distribuciones binarias el core la versión empaquetada como zip. La descomprimo en la carpeta desarollo... y probamos a ver si todo va bien....en la bin del tomcat buscamos el archivo startup.sh ( si estuviesemo en windows el archivo sería startup.bat).Debemos marcar todos los scripts, archivos ".sh" como ejecutables.

andres@localhost:~/desarrollo/apache-tomcat-6.0.35/bin> startup.sh
Using CATALINA_BASE: /home/andres/desarrollo/apache-tomcat-6.0.35
Using CATALINA_HOME: /home/andres/desarrollo/apache-tomcat-6.0.35
Using CATALINA_TMPDIR: /home/andres/desarrollo/apache-tomcat-6.0.35/temp
Using JRE_HOME: /usr/lib/jvm/jre
Using CLASSPATH: /home/andres/desarrollo/apache-tomcat-6.0.35/bin/bootstrap.jar

Uhmmm. Estamos utilizando una JRE que no es la que queremos, luego modificaremos esto.
Abrimos una ventana de navegador y apuntamos a http://localhost:8080/ debería aparecer una pantalla de bienvenida a nuestro tomcat. Luego personalizaremos esto.
Tenemos el jdk, el eclipse, el tomcat y nos falta maven, que descargamos desde las páginas del proyecto http://maven.apache.org/ en su versión 3.0.3. que descomprimimos en la carpeta desarrollo.
Una vez que hemos descomprimido vamos a la carpeta bin y allí ejecutamos :"mvn -version" para comprobar que todo ha ido correctamente.

andres@localhost:~/desarrollo/apache-maven-3.0.3/bin> mvn -version
Apache Maven 3.0.3 (r1075438; 2011-02-28 18:31:09+0100)
Maven home: /home/andres/desarrollo/apache-maven-3.0.3
Java version: 1.6.0_20, vendor: Sun Microsystems Inc.  

Java home: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0/jre
Default locale: es_ES, platform encoding: UTF-8
OS name: "linux", version: "2.6.31.14-0.8-default", arch: "i386", family: "unix"
andres@localhost:~/desarrollo/apache-maven-3.0.3/bin>



Ya tengo en una carpeta lo "básico" para empezar a trabajar como desarrollador java.
 
andres@localhost:~/desarrollo> ls
apache-maven-3.0.3 apache-tomcat-6.0.35 eclipse jdk1.6.0_29 workspace
andres@localhost:~/desarrollo> cd jdk1.6.0_29/ 

Con ls obtengo el listado de la carpeta desarrollo en la cual tengo las herramientas descargadas e instaladas y la carpeta "workspace", creada al lanzar el eclipse. Yo prefiero tener la mayor parte de las "herramientas" juntas. Pero el lector es libre de tener cada cosa en un sitio.

Configuración


Empezaremos por ajustar el tomcat. En la carpeta "conf" ,sorprendentemente, tenemos los principales archivos de configuración. Si no lo hemos hecho ya, es el momento de parar el tomcat lanzando "bin/shutdown.sh".
Primero creamos una cuenta de "manager" en el archivo "tomcat-users.xml" editamos para tener algo similar a esto :
<tomcat-users>
<role rolename="manager"/>
<user username="tomcat" password="tomcat" roles="manager"/>
</tomcat-users>


Evidentemente el username y el password son personalizables...siempre y cuando uno se acuerde de ellos.
Segundo vamos a cambiar el puerto por defecto de escucha. Si recuerdas el navegador apuntaba a localhost:8080. Lo vamos a cambiar al 7777 en el "server.xml".
Editándolo debería quedar algo como esto:


<Connector port="7777" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />


Guardamos los cambios y vamos a probar la nueva configuración, lanzando de nuevo el tomcat. Esta vez apuntamos el navegador a http://localhost:7777/ y nos debería volver a aparecer la pantalla de bienvenida al tomcat.
A la derecha de la pantalla en el apartado "Administration" hay un enlace a "Tomcat Manager", al hacer click en él nos pide un usuario y contraseña, ingresando los que hayamos definido en el "tomcat-users.xml" debería permitirnos avanzar al "manager".
Vamos a cambiar la variable de entorno "JAVA_HOME" para que tome el jdk que nos hemos bajado nosotros. En la mayor parte de las ocasiones esto será innecesario, pero si algo falla es bueno saber donde "tocar".
Para eso vamos a definir dicha variable de entorno en nuestro usuario editando el archivo oculto ".bashrc". En mi caso he añadido la linea:


export JAVA_HOME=/home/andres/desarrollo/jdk1.6.0_29


Destacar que he puesto /home/andres/desarrollo.... por que esa es la ruta en la que tengo el jdk. Una vez reiniciado el sistema para que cargue los valores de las variables de entorno, el nuevo "JAVA_HOME", al ejecutar "mvn -version" la salida es:

andres@localhost:~/desarrollo/apache-maven-3.0.3/bin> mvn -version
Apache Maven 3.0.3 (r1075438; 2011-02-28 18:31:09+0100)
Maven home: /home/andres/desarrollo/apache-maven-3.0.3
Java version: 1.6.0_29, vendor: Sun Microsystems Inc.
Java home: /home/andres/desarrollo/jdk1.6.0_29/jre
Default locale: es_ES, platform encoding: UTF-8
OS name: "linux", version: "2.6.31.14-0.8-default", arch: "i386", family: "unix"
andres@localhost:~/desarrollo/apache-maven-3.0.3/bin>


Que como podemos observar apunta a nuestro JDK.
Ahora vamos a instalar en el eclipse los plugins para que se integre con maven. Para ello lanzamos el eclipse y en el menú Help seleccionamos Eclipse MarketPlace. Esto antes se hacía desde la gestión de plugins, con install new software. El MarketPlace nos facilita todavía más el trabajo.
En la parte superior aparece un cuadro de búsqueda, ponemos "Maven"y hacemos click en "Go" y seleccionamos "Maven Integration for Eclipse WTP" haciendo click en el botón Install. Eclipse resolverá dependencias, calculará requisitos, descargará lo necesario, preparará la ensalada e instalará el plugin. Después de unos cuantos acuerdos de licencia a aceptar y similares deberemos reiniciar nuestro eclipse para que los cambios surtan efecto.
Llegado este punto podemos abrir nuestro eclipse y comprobar que tenemos "menú de maven".
File-> New-> Other-> Maven-> Maven Module, Proyect.

Prueba de entorno
Vamos a atacar a mvn. Desde su directorio bin ejecutamos "mvn archetype:generate"... Esto va a tardar un buen ratillo, dependiendo de nuestra conexión. Como comentábamos en otra entrada mvn gestiona dependencia y para ello mantiene una especie de caché de los artefactos disponibles.
Una vez que ha acabado de bajarse todo nos permite elegir entre más de 400 esqueletos de proyectos. 

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : struts2
Choose archetype:
1: remote -> org.apache.struts:struts2-archetype-blank (-)
2: remote -> org.apache.struts:struts2-archetype-convention (-)
3: remote -> org.apache.struts:struts2-archetype-dbportlet (-)
4: remote -> org.apache.struts:struts2-archetype-plugin (-)
5: remote -> org.apache.struts:struts2-archetype-portlet (-)
6: remote -> org.apache.struts:struts2-archetype-starter (-)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): :



Selecciono el 6, sigo seleccionando versiones simplemente introduciendo un número de entre las ofertas que me proporciona:

Choose org.apache.struts:struts2-archetype-starter version:
1: 2.0.11.2
2: 2.2.1
3: 2.2.1.1
Choose a number: 3:

Y maven automáticamente se baja lo necesario... Ahora me pide un groupId.... etc.. al final me pide confirmación de los valores...

Downloaded: http://repo1.maven.org/maven2/org/apache/struts/struts2-archetype-starter/2.2.1.1/struts2-archetype-starter-2.2.1.1.pom (2 KB at 3.5 KB/sec)

Define value for property 'groupId': : soyguapo

Define value for property 'artifactId': : notanguapo

Define value for property 'version': 1.0-SNAPSHOT: : 1.0

Define value for property 'package': soyguapo: : si.soy.guapo

Confirm properties configuration:

groupId: soyguapo

artifactId: notanguapo

version: 1.0

package: si.soy.guapo

Y: : Y

[INFO] ----------------------------------------------------------------------------

[INFO] Using following parameters for creating project from Old (1.x) Archetype: struts2-archetype-starter:2.2.1.1

[INFO] ----------------------------------------------------------------------------

[INFO] Parameter: groupId, Value: soyguapo

[INFO] Parameter: packageName, Value: si.soy.guapo

[INFO] Parameter: package, Value: si.soy.guapo

[INFO] Parameter: artifactId, Value: notanguapo

[INFO] Parameter: basedir, Value: /home/andres/desarrollo/apache-maven-3.0.3/bin

[INFO] Parameter: version, Value: 1.0

[INFO] project created from Old (1.x) Archetype in dir: /home/andres/desarrollo/apache-maven-3.0.3/bin/notanguapo

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 4:19.356s

[INFO] Finished at: Fri Dec 09 22:55:30 CET 2011

[INFO] Final Memory: 6M/16M

[INFO] ------------------------------------------------------------------------

andres@localhost:~/desarrollo/apache-maven-3.0.3/bin>


Ya está nuestro proyecto base con struts2. Hemos creado un proyecto que se llama el "ArtifactId": "notanguapo" que podemos moverlo a la carpeta "desarrollo\workspace". Podemos abrir dicha carpeta y veremos que contiene un "esqueleto de proyecto con struts2"
Vamos a importarlo con el eclipse, para lo cual lanzamos dicho IDE.
File -> Import -> Maven -> Existing Maven Proyects.
Seleccionamos el path donde está el proyecto creado: "notanguapo". En el momento que lo hagamos empieza a trabajar maven, analizando el pom.xml (del pom.xml hablaremos en profundidad en próximas entregas) y una vez realizado todo el proceso podemos hacer click en finalizar. Empezando el proceso de importación del proyecto. Una vez que acabe dicho proceso ya deberíamos tener un proyecto base de struts2 en nuestro navegador de proyectos del eclipse.
En este punto habrá que dejarle un buen rato hasta que resuelva y se baje todas las bibliotecas necesarias, que están definidas en el pom.xml.
Si todo ha ido bien nos hemos podido saltar el infierno de crear un proyecto desde 0, de crear la estructura de paquetes, recursos, configuración inicial del web.xml, en este caso del struts.xml, etc todo está en su sitio, con la sintaxis apropiada, con los jar necesarios, etc...

Comentarios