Tecnologías Utilizadas

La elección de tecnologías siempre resulta un factor de vital importancia para el real desarrollo de una aplicación distribuida, dependiendo de la cantidad, cobertura, distribución geográfica y lógica de los equipos.

En nuestro caso, si bien la solución podría haber sido usando sockets y aplicaciones desktop, no resulta ser lo idóneo. Por lo tanto se desarrollo una arquitectura que nos permita crecer en todas las direcciones, por lo que se eligió SOA, La idea es que hay un servidor que provee servicios y un cliente quien los consume, el cliente a su vez puede ser otra aplicación web, por lo tanto reutilizamos los servicios, o creamos un nuevo servicio basándonos en la combinación de varios servicios.

¿Pero estamos limitados a uso web? La verdad es que WebServices resulta ser una revolución en las comunicaciones permitiendo la interoperabilidad de sistema operativo, lenguaje de programación, ya que los mensajes están basados en XML. Por lo tanto podemos tener aplicaciones Desktop que se comuniquen a Web Service.

¿Por qué Persistencia?, los datos son lo más importante en cualquier sistema de información, y un requerimiento dentro de cualquier sistema y un desafío en la programación de ese sistema es la capacidad de manejar datos de forma persistentes y consistentes. Si programamos orientado a objeto y nuestras base de datos son relacionadas, cómo mantenemos la consistencia, la respuesta es usar un mapeo objetual – relacional, que es provisto por JPA.


      1. Bases de Datos: PostgreSQL
      2. Servidor de Aplicaciones: GlassFish
      3. Java Persistence API (JPA): TopLink
      4. Java Server Faces (JSF)
      5. Enterprise Java Beans (EJB 3.0)
      6. CORBA
      7. Servicio WEB

Bases de Datos: PostgreSQL

Una base de datos, como se imaginarán, se utiliza para guardar información (datos) concernientes a un mismo contexto para ser utilizados posteriormente.
En este caso se utilizó PostgreSQL, una poderosa base de datos relacional que tiene años de trayectoria y que tiene a su favor un sinnúmero de características que lo hacen ser el candidato más apto para este proyecto, destacando el ser de distribución Open Source.

Como deben saber, existen más bases de datos (Open Source) pero que no llegan a cumplir mnuchas veces los requisitos de seguridad que requieren sistemas de administración, como también el manejo de grandes cantidades de datos.
En nuestro proyecto, la base de datos está hecha para almacenar los objetos persistentes que son creados por la herramienta de Inventario, y de esta forma guardar de manera indefinida la información sobre los productos que se están manejando.


Servidor de Aplicaciones: GlassFish

Primero que todo, ¿qué es un Servidor de Aplicaciones?
Un Servidor de Aplicaciones es un servidor en una cierta red de computadores que ejecuta ciertas aplicaciones.
Este tipo de servidores son quienes le prestan servicios de aplicación a las computadoras clientes, y son quienes se llevan la mayor parte de la carga en lo que es la lógica de negocios y el acceso a los datos de la aplicación.

Como se puede apreciar, será GlassFish quien se encargará de ser el contenedor de nuestra aplicación WEB, brindando el soporte necesario para interconectar cad a una de las componentes que lo conforman.

Java Persistence API (JPA): TopLink

Corresponde, como su traducción lo indica, a una API de persistencia Java, que lo que hace es unificar la manera en que funcionan las utilidades que proveen un mapeo objeto-relacional hacia las bases de datos. Fue desarrollada para la plataforma J2EE y se incluye en el estándar EJB 3.0
Como nos podemos dar cuenta, el objetivo principal de esta API de persistencia es no perder las ventajas de la orientación a objetos al interactuar con una base de datos, como sí pasaba con EJB 2.0, y permitir usar objetos regulares (conocidos como POJOs - Plain Old Java Objects-).

En el caso de nuestro proyecto, se usó TopLink (en la actualidad llamado EclipseLink), que es un paquete de utilidades para el mapeo objeto-realcional que fue la base de JPA. Entonces, usando TopLink seremos capaces de almacenar nuestros objetos Java en una base de datos para su posterior utilización, consulta, modificación, etc.

Java Server Faces (JSF)

Es un framework para aplicaciones Java basadas en web que simplifica el desarrollo de interfaces de usuario en aplicaciones Java EE. JSF usa más comunmente JavaServer Pages (JSP) como la tecnología que permite hacer el despliegue de las páginas.
Algunas de las características principales son:
  • Un conjunto de APIs para representar componentes de interfaz de usuario, manejar eventos y validar entradas.
  • Un paquete de librerías personalizadas para operar con JSP.
  • Administración de estados.

Entonces, ¿cuál es su aporte en el proyecto?
Para el proyecto, JSF se utilizó para dar la interfaz de usuario necesaria para la interacción entre el cliente, la aplicación y los datos que serán guardados/modificados en la base de datos del inventario.

Enterprise Java Beans (EJB 3.0)

Esta tecnología es la componente del lado del servidor para la plataforma Java, edición Empresarial (Java EE). La tecnología EJB habilita el desarrollo rápido y simplificado de aplicaciones distribuidas, transaccionales, seguras y portables basadas en la tecnología Java.

Como se decía anteriormente esta tecnología incluye la API de persistencia Java que nos permite manejar persistencia y el mapeo objeto/relacional.
Los EJB existen de variados tipos, están los de Sesión, los de Entidad y los Manejados por Mensajes.

En este proyecto se utiliza el EJB de Entidad para lo que se refiere al manejo de persistencia en conjunto con TopLink y una base de datos (en este caso PostgreSQL). De esta forma podemos almacenar los objetos Java, que sin este medio de persistencia desaparecerían luego de ejecutar una aplicación.

También se utilizó el EJB de Sesión, que está presente en el Session Facade de la aplicación. Esto último sirve para poder encapsular la complejidad de las interacciones entre los objetos de negocio participantes en un flujo de trabajo.


CORBA

CORBA (Common Object Request Broker Architecture — arquitectura común de intermediarios en peticiones a objetos) es un middleware., es un estándar que establece una plataforma de desarrollo de sistemas distribuidos facilitando la invocación de métodos remotos bajo un paradigma orientado a objetos.

CORBA fue definido y está controlado por el Object Management Group (OMG) que define las APIs, el protocolo de comunicaciones y los mecanismos necesarios para permitir la interoperabilidad entre diferentes aplicaciones escritas en diferentes lenguajes y ejecutadas en diferentes plataformas, lo que es fundamental en computación distribuida.


Servicio WEB

Un servicio web (en inglés Web service) es un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones.
Distintas aplicaciones de software desarrolladas en lenguajes de programación diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web para intercambiar datos en redes de ordenadores como Internet.

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la arquitectura y reglamentación de los servicios Web. Para mejorar la interoperabilidad entre distintas implementaciones de servicios Web se ha creado el organismo WS-I, encargado de desarrollar diversos perfiles para definir de manera más exhaustiva estos estándares.