De forma general, se puede realizar una gran división, estableciendo así dos grandes tipos de aplicaciones:
Estas aplicaciones se caracterizan por tener contacto directo con un usuario real, por lo que tienen que presentar por pantalla algún modo de interactuar con él. Existe diversa varidad de interfaces posibles para el usuario:
En JEE es común el desarrollo de interfaces web, por diversos motivos de mantenimiento y deploy.
Los servicios son funcionalidad expuesta por un sistema, pero no pensadas para ser utilizadas directamente por una persona. Por ejemplo, un servicio podría ser un facturador que corre de noche en forma automática, sin intervención de un usuario.
Por otro lado, una aplicación con interfaz de usuario podría usar una aplicación de servicios para obtener ciertos datos, o realizar operaciones.
En este curso crearemos una aplicación de servicios.
Las aplicaciones JEE suelen seguir una arquitectura de 3 capas (también conocida como Modelo 2).
La arquitectura se basa entonces en 3 capas principales:
Esta capa resuelve la presentación de datos al usuario. Esta capa se encarga entonces de "dibujar" las pantallas de la aplicación al usuario, y tomar los eventos que el cliente genere (por ejemplo, el hacer click en un botón).
Existen numerosas tecnologías para esta capa (JSP, Struts, JSF, Flex, Velocity, Wicket, GWT, etc, etc), cada una con sus ventajas y desventajas.
En este curso crearemos un servicio sin presentación, por lo que esta capa no será utilizada para el curso.
Esta capa resuelve la lógica de la aplicación. Contiene los algoritmos, validaciones y coordinación necesaria para resolver la problemática.
Los elementos fundamentales de esta capa son los objetos de dominio. Estos objetos representan los objetos principales del negocio. Son simples objetos que sólo contienen los datos que representan (por ejemplo, un Cliente, una Factura, una Direccion, un Producto).
La lógica para manipularlos se encuentra en los llamados objetos de negocio (Service Object, o también a veces Business Object). Estos objetos contienen la lógica del negocio, y manipulan a los objetos de dominio. A su vez, estos son los objetos que exponen métodos que se transforman en el contrato de la capa de lógica de negocio.
Los Service Object constan de una interfaz (dónde se expone la lógica del negocio) y una clase que la implementa.
Esta capa resuelve el acceso a datos, abstrayendo a su capa superior de la complejidad del acceso e interacción con los diferentes orígenes de datos.
Esta capa se encarga de proveer un API simple de usar, orientado al negocio, sin exponer complejidades propias de un repositorio de datos.
En esta capa se resuelven:
Estos objetos se construyen a partir del patrón Data Access Object (DAO). Los DAO constan de una interfaz (dónde se expone la lógica de acceso a datos) y una clase que la implementa.
En el curso estos objetos serán implementados con clases denominadas "Repository".
En este capítulo veremos la arquitectura de software general de las aplicaciones, la cual será usada para el proyecto del curso.