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.