domingo, 21 de octubre de 2007

Instalación de AppFuse en Eclipse


Como lo prometido es deuda hoy voy a explicar como instalar AppFuse 2.0 para trabajar desde Eclipse.

Además, para nuestro proyecto vamos a utilizar como base de datos MySql.

Así que comenzamos.

1.- Lo primero que vamos a hacer es descargar lo siguiente:

a- Descargar Eclipse. Eclipse tambien nos pide que descarguemos esto. De las versiones de Eclipse que hay me he descargado la siguiente: eclipse-jee-europa-fall-win32.zip

b- Descargar JDK 5+.

c- Descargar MySQL 5.x.

2.- Una vez descargado procedemos a su instalación.

Empezaremos instalando Eclipse.

Primero instalo el jre, del siguiente archivo: jre-6u3-windows-i586-p-s.exe. Solo lo ejecuto y le digo a todo “siguiente >”.

Descomprimo el archivo eclipse-jee-europa-fall-win32.zip en la raiz de mi disco duro, en este caso en C:. Una vez descomprimido entro en la carpeta c:\eclipse y ejecuto el archivo eclipse.exe para comprobar que funciona. Si os sale esta pantalla:




Es que ha ido todo bien. Vuelvo a cerrar el Eclipse.


Ahora instalaremos el JDK. Yo me he bajado este: jdk-6u3-windows-i586-p.exe. Lo ejecuto y le doy a todo a “siguiente > ”. Una vez ha acabado me dice que ya he instalado anteriormente el JRE, si quiero volver a instalarlo. Yo le digo que no.


Ahora instalamos el MySQL. Yo me he descargado el archivo mysql-5.0.45-win32.zip que dentro tiene un setup.exe que ejecuto. Hago la instalación Tipica, que para el desarrollo ya me va bien.

Una vez hecha la instalacion me pregunta si quiero configurarlo y le digo quye si.

Configuración:

  • Elijo Detailed Configuration. Next >

  • Elijo Developer Machine. Next >

  • Elijo Multifunctional Database. Next >

  • Elijo La unidad que me hará de servidor de BD. Next >

  • Elijo Decision Support(DSS)/OLAP. Next >

  • Elijo Enable TCP/IP Networking. El puerto dejo el que está: 3306. Tambien dejo activado el switch “Enable Strict Mode”. Next >

  • Elijo Standard Character Set. Next >

  • Elijo Install as windows Service. Descativo el switch “Launch the MYSQL Server Automatically” ya que si no lo arranca con windows. Next >

  • En esta pantalla me pide el password del usuario Root. Tal como pone en la web de AppFuse, si lo dejamos vacio AppFuse se conectará automaticamente a la base de datos, sino tendremos que configurar la aplicación. Yo lo dejo vacio.

  • Ejecuto y finalizo.


Con esto ya tenemos todo lo que necesitamos para instalar AppFuse.

Como vamos a utilizar Eclipse, vamos a instalar un plug-in de Eclipse que se llama Cany for AppFuse.

Por lo tanto:

  • Abrimos Eclipse.

  • En el Menú elegimos: Help / Software Updates / Find And Install....

  • La siguiente ventana, así y le damos a Next >

  • Le damos a New Remote Site... y en la ventana que sale Escribimos:


  • Le damos a Ok y despues a Finish.

  • Nos saldrá la siguiente ventana:


  • Seleccionamos Candy For AppFuse y le damos a Next >.

  • Se descargará el plug-in y una vez finalizada la descarga nos pedirá si queremos reiniciar Eclipse. Le decimos que sí y cuando se reinicie Eclipse ya tendremos instalado el plug-in.


Crear un nuevo proyecto AppFuse


Voy a explicar como se crea un primer proyecto de AppFuse, pero esta fase aun está en investigación y no creo que sea la mas correcta para que queden conectados Struts + Spring + Hibernate. Eso lo explicaré en otro post.

Para crear un nuevo proyecto AppFuse tenemos que :

Primero, abrir la consola de Eclipse (window / show view / console). Entonces, usando los iconos, mostrar la consola m2.


Nos vamos al menú y creamos un nuevo proyecto (File/new/Other). De los tipos que hay elegimos AppFuse/New AppFuse Proyect.

Le damos un nombre y despues a Next en la siguiente pantalla:


Después informamos lo que nos pide de la siguiente manera:



En Group es como se va a llamar nuestra libreria de paquetes.


Y le damos a finalizar. Descarga todo lo que le hace falta y realiza la instalación. Acaba creando un nuevo proyecto en nuestro package explorer.



jueves, 11 de octubre de 2007

Spring I. Teoría

De los cuatro temas principales que quiero comentar: AppFuse, Struts 2.0., Hibernate, y Spring 2.0., empezaré por este último.

Para mí, es el más difícil de entender de los cuatro, ya que es una filosofía de programación muy diferente a lo que había visto hasta ahora. Ahora bien, una vez empiezas a utilizarlo te das cuenta que es muy sencillo y a la vez muy cómodo, que te permite solucionar problemas complejos de una forma muy sencilla.

También encuentro a faltar alguna guía que lo explique sencillito y por eso empiezo por este, para ver si solucionamos algo.

Voy a intentar explicarlo de la manera más sencilla posible, tal como me hubiera gustado que me lo explicaran a mí y limitado a mis conocimientos. Seguro que Spring hace mas cosas que esto que explico aquí, pero de momento es lo que conozco y para lo que lo utilizo.

Introducción

Para mí, Spring es una filosofía de programación. Lo que intenta es desligar las capas de nuestra aplicación para que cuando tengamos que cambiar alguna de las tres capas (presentación, negocio y datos) no tengamos que tocar el código fuente de las otras dos.

¿Qué “arregla” Spring?

Normalmente, cuando realizamos una aplicación java, si necesitamos un nuevo objeto de nuestra aplicación, lo que hacemos es hacer un new de este y ya está.

Esto hace que el código de las tres capas de nuestra aplicación quede fuertemente ligado ya que, por ejemplo, si en la capa de negocio necesitamos acceder a la base de datos, crearemos un objeto del Objeto de acceso a Datos (Dao) que corresponda a la entidad a la que queremos acceder.

Por ejemplo, Si ese Dao accede a una base de datos Oracle, el día que sustituyamos Oracle por un fichero de texto plano, tendremos que crear un nuevo objeto Dao y además tendremos que todas las clases de negocio que hagan un new del Dao para acceder a Oracle.

Como ejemplo no es muy bueno, pero que le vamos a hacer…. No doy para más.

Spring soluciona esto. Spring evita que hagas new en tus programas. Tu declaras la variable en tu código fuente y él, inyecta (bonito palabro…) en tu variable el objeto que le hayas dicho tu mediante un fichero de configuración.

Con esto evitamos que tengas que modificar tu clase de negocio, y solo tendrías que crear una clase nueva de acceso a datos e inyectarla en tu clase de negocio.

Esto te permite que, si tu capa de negocio funciona, NO LA TOQUES!!! Virgencita que me quede como estoy….

Si cambias tu DAO y tu aplicación deja de funcionar sabes que es del DAO ya que no has tocado el código de tu parte de negocio.

¿Cómo lo hace?

Bien, la manera de solucionarlo es bastante sencilla, una vez sabes como funciona.

Principalmente se hacen cuatro cosas:

1.- Creas un interface que tendrás los métodos que necesitas de tu clase.

2.- Creas una clase que implementa tu interface.

3.- En tu clase, donde necesitas hacer un new de tu objeto, no declaras dicho objeto, sino declaras la interface que hemos creado antes. SOLO declaras la variable objeto, no le haces un new, NO creas el objeto.

4.- Y ahora viene lo bueno, en un archivo de configuración le dices:

“En mi aplicación, donde he declarado la interface tal, me inyectas el Objeto pascual (el del punto 2)”

Conclusión

Como podéis ver la palabra inyección se usa mucho. Básicamente es eso lo que hace Spring. Inyectar a nuestras variables, Objetos que le decimos con un archivo de configuración.

Con esto conseguimos que nuestra aplicación funcione de una manera u otra, tome los datos de un sitio u otro, o se use la interficie A o B modificando únicamente los archivos de configuración.

Ahora tacaría un ejemplo práctico, pero ya me estoy enrollando mucho y es mejor que dejemos madurar la idea y en pocos días postearé un caso práctico.

miércoles, 10 de octubre de 2007

Ámbito de la Aplicación

Hoy Empezaré a describir un poco el ámbito de la aplicación.

Se decidió montar un sistema basado en el modelo de diseño mas extendido actualmente en Internet: el MVC (Model-View-Controller).

Como explican en la wikipedia, el MVC es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos.

Por tanto, partiendo de dicho patrón de arquitectura se ha optado por las siguientes tecnologías:

o Para los datos, Hibernate.

o Para la lógica de control, Spring 2.0.

o Para la interfaz de usuario, Struts 2.0.

Todo esto habría que montarlo y conectarlo entre si para que funcionase. Ya os podéis imaginar como debe ser montar todo esto… Pero existe algo mejor.

Hay un proyecto Open Source que ha creado una aplicación base donde se conecta todo esto además de tener un interfaz creado: AppFuse.

Como dicen en su Web (y después de traducirlo):

“AppFuse es un proyecto Open Source y una aplicación que utiliza las herramientas Open Source construidas en la plataforma Java, para ayudar al desarrollo de aplicaciones Web de manera rápida y eficiente. Originalmente se creó para eliminar el tiempo inicial de desarrollo de una nueva aplicación para los clientes. En definitiva, AppFuse es el esqueleto de un proyecto parecido al que te crea el wizard de tu aplicación de desarrollo cuando le dices que te cree un nuevo proyecto Web.”

Como veis, se ahorra mucho tiempo en lo que sería la instalación de la plataforma tecnológica y su diseño. Ya viene todo hecho.

En este proyecto yo ya me lo encontré hecho, así que no se como se instala AppFuse. Prometo investigarlo y publicar una entrada con todo el proceso de instalación.

Por cierto, para el desarrollo voy a utilizar Eclipse como IDE. Es la herramienta con la que estoy trabajando y cada día me gusta más.

martes, 9 de octubre de 2007

Presentación del Blog

Bueno,

Empiezo mi andadura por la blogosfera con este blog, mi primer blog.

¿Que me motiva a escribir uno?

Resulta que hace unos meses yo trabajaba de informático en una gran empresa española realizando programas cobol para el sector bancario.

Como podéis suponer, no es que estuviera en la cresta de la ola en cuanto a vanguardismo tecnológico que digamos. Ya hacia un par de años que había solicitado el cambio, pero claro, como en todas las profesiones, si estás en un puesto y no lo haces mal para que te van a mover, no vaya a ser que se líe.

Pero hace tres meses me surgió la posibilidad de cambiar de entorno y surgió un proyecto en entorno Web donde poder aprender. Es un proyecto donde hay que definirlo todo, hasta la plataforma tecnológica, que me esta permitiendo ver todo el proceso.

Por suerte hay una persona en el equipo que domina todas estas tecnologías y se puede aprender mucho de él.

Como he dicho, llevo 3 meses en el proyecto y la verdad es que es muy duro al principio ya que la curva de aprendizaje es muy alta.

Por eso este blog. Quiero explicar mi experiencia como aprendiz y que le pueda servir a alguien para iniciarse en este mundillo.

¿De qué va el blog?

El blog va de mis experiencias en el desarrollo de una aplicación Web. Quiero reflejar lo que aprendo día a día.

Pero, ¿Cuál será su contenido?

La aplicación Web que estamos desarrollando está basada en los siguientes FrameWorks:

- Struts 2.0

- Spring

- Hibernate

- JUnit

- AppFuse

- Eclipse

- Jsp

- Html

- etc.…

Así que recogeré todo lo que aprenda de teoría sobre estos entornos de desarrollo, así como la práctica, los errores que me surjan y como solucionarlos, patrones de diseño que podamos utilizar así como otras características.

Iré mezclando temas, así que unas veces hablaré de la parte teórica y otras puede que hable de lo que me pasa día a día. No va a ser algo lineal, pero para eso están las etiquetas en los blogs. Si se necesita seguir un temario si que estará en orden, mas o menos. Lo digo sobretodo por la parte teórica.

Nada más. Espero que os sirva de algo y perdonad los errores que pueda comentar. Y recordad, soy un principiante en esto del desarrollo Web.