Conceptos Básicos en Java

Las ediciones de Java más importantes son:
* Java Standard Edition (Java SE) → Para PC
* Java Micro Edition (Java ME) → Para moviles
* Java Entreprise Edition (Java EE) → Version mas completa
* Java Card → Para tarjetas de credito con chip

Los módulos que forman una aplicación empresarial en Java pueden ser de tres tipos:
  • Archivos JAR (Java Archive): Los archivos JAR permiten agrupar distintos archivos .java en uno solo. Es el empleado para empaquetar componentes EJBs.
  • Archivos WAR (Web Application Archive): Los archivos WAR permiten empaquetar en una sola unidad aplicaciones web completas (servlets, páginas JSPs, contenido estático como imágenes y otros recursos Web).
  • Archivos EAR (Enterprise Application Archive): Los archivos EAR son archivos desplegables en servidores de aplicaciones JEE. Contienen archivos WAR y EJBs empaquetados en ficheros JAR.
Por lo que podemos decir que existen tres tipos de aplicaciones Java EE:
  • Aplicaciones Web JAVA.
  • Objetos distribuidos EJBs.
  • Aplicaciones empresariales que engloban a las dos anteriores, aplicaciones web JAVA y objetos distribuidos EJBs
La interfaz de programación de aplicaciones, abreviada como API (del inglés: Application Programming Interface), es el conjunto de subrutinas, funciones y procedimientos (o métodos, en la programación orientada a objetos) que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción.
Las clases en las APIs de Java se organizan en grupos distintos llamados paquetes.
Cada paquete contiene un conjunto de interfaces, clases y excepciones relacionadas con el entorno de trabajo.
 
Vamos a visualizar algunos de los servicios que provee Java EE(Enterprise Edition) y que podemos emplear en cualquier servidor de aplicaciones que siga este estándar.
  • Java Transaction API (JTA): Consta de dos partes y define las interfaces entre el manejador de transacciones y las partes involucradas en un sistema de transacciones distribuido, el manejador de recursos, el servidor de aplicaciones y las aplicaciones transaccionales.
  • Java Persistente API (JPA): Para dotar de persistencia a objetos del lenguaje.
  • Java Message Service (JMS): Sistema de mensajería, permite mensajes punto a punto y sistemas publicado suscrito.
  • Java Naming Direct Interface (JNDI): Sistema de nombrado para localizar recursos o componentes de proveedores.
  • JavaMail: Para manejo de correo electrónico.
  • Java Beans Active Framework (JAF): Manejo de datos en diferentes tipos mime, ligado al uso del correo.
  • Java API for XML Processing (JAXP): Soporte para el manejo de XML.
  • Java EE Connector Arquitectura: Permite el acceso a otro tipo de sistemas de información empresarial por medio del desarrollo de un pluggin, similar a los conectores JDBC.
  • Java Autentícation and Authorization Service (JAAS): Provee servicios de seguridad de autenticación y autorización.
  • Servicios Web (JAX-WS): Para manejo de servicios web.

Introducción a los Servidores de Aplicaciones

Como consecuencia del éxito del lenguaje de programación Java, el término servidor de aplicaciones hace referencia a un servidor de aplicaciones Java EE.
Algunos servidores certificados de JEE son los siguientes:
  • JOnAS: servidor de aplicaciones de código abierto de ObjectWeb
  • JBoss: desarrollado inicialmente por JBoss Inc y adquirido posteriormente por Red Hat. Existe una versión de código abierto soportada por la comunidad y otra empresarial.
  • Sun Java System Application Server Platform Edition 9.0: Es un servidor basado en GlassFish.
  • Oracle WebLogic Application Server 10.0: antes conocido como BEA Systems.
  • Servidor de Aplicaciones SAP NetWeaver, Java EE 5 Edition de SAP
  • JEUS 6, un Servidor de aplicaciones específico de Linux de TmaxSoft
  • Apache Gerónimo 2.0
  • IBM WebSphere Application Server Community Edition 2.0: basado en el servidor Apache Gerónimo
  • Oracle Containers for Java EE 11
  • GlassFish: un servidor de aplicaciones de código abierto de Sun
  • Apache OpenEJB vía Apache Gerónimo


Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces. Un patrón de diseño resulta ser una solución a un problema de diseño.
Los patrones de diseño se pueden dividir en tres grandes categorías basadas en su propósito, que a su vez cada una se divide en patrones de Clases y Objetos:
  • Creacionales: Los patrones creacionales tratan con las formas de crear instancias de objetos. Usan la herencia (extends).
  • Estructurales: Los patrones estructurales describen como las clases y objetos pueden ser combinados para formar grandes estructuras y proporcionar nuevas funcionalidades. Estos objetos insertados pueden ser incluso objetos simples u objetos compuestos.
  • Comportamiento: Los patrones de comportamiento ayudan a definir la comunicación y relación entre los objetos de un sistema. El propósito de este patrón es reducir el acoplamiento entre los objetos.


Modelo Vista Controlador (MVC)

En este tipo de arquitectura conocida, el cliente hace Request(solicita) a objetos de la capa de presentación (Pagina del servidor), que luego llama a su código controlador para pedirle funcionalidad, que crea una presentación como Response(respuesta) a esa solicitud.
En los frameworks MVC, las URLs se mapean directamente a clases, estas son denominadas "Controladoras" y son las que procesan los Request entrantes, manejando las entradas del usuario, sus interacciones y ejecutando la lógica apropiada para el proceso. Una clase controladora llama a una vista, la cual genera la salida HTML que se enviará como Response.
El modelo MVC permite diseñar en tres capas de negocio y no poner todo el código en las interfaces de usuario de tu sistema (IU):
Capa de presentación: Con nuestras Interfaces (páginas HTML.) y sus controles visuales (controles de formulario) junto con sus eventos.
Capa de negocio: Lógica del dominio. Aquí irá todo el código que define las reglas de negocio (cálculos, validaciones). Surge de los procesos que hemos encontrado en el análisis.
Capa de acceso a datos: El código que permite acceder a las fuentes de datos. Esencialmente trata sobre 4 operaciones básicas, llamadas CRUD (por Create-Retrieve-Update y Delete), que se realizan sobre cualquier fuente de datos.
El modelo de arquitectura Model-View-Controller (MVC) separa una aplicación en tres componentes principales: el modelo, la vista y el controlador:
Modelos. Los objetos de modelo recuperan y almacenan el estado del modelo en una base de datos. Por ejemplo, un objeto Product podría recuperar información de una base de datos, trabajar con ella y, a continuación, escribir la información actualizada en una tabla Productos de una base de datos.
Vistas. Las vistas son los componentes que muestra la interfaz de usuario de la aplicación. Normalmente, esta interfaz de usuario se crea a partir de los datos de modelo.
Controladores. Los controladores son los componentes que controlan la interacción del usuario, trabajan con el modelo y por último seleccionan una vista para representar la interfaz de usuario.

Comunicación Síncrona y Asíncrona

Síncrona. Quien envía permanece bloqueado esperando a que llegue una respuesta del receptor antes de realizar cualquier otra tarea.

Asíncrona. Quien envía continúa con su ejecución inmediatamente después de enviar el mensaje al receptor.

La mayoría de las aplicaciones Web existentes realizan la comunicación de datos con el servidor de manera síncrona. En una comunicación síncrona, se ejecutan los procesos en el siguiente orden:
  1. El cliente realiza una petición al servidor.
  2. El servidor envía los datos solicitados y el cliente comienza a recibir los datos.
  3. Una vez finalizada la recepción de los datos en la página, el usuario vuelve a tener el control.
Este proceso conduce a que cada vez que se está enviando más información al servidor, el usuario pierde el control sobre la página Web que está visitando, limitándose de esta manera a esperar que la aplicación le devuelva el control.
En una aplicación Web que se comunica asíncronamente con el servidor, los procesos son los siguientes:
  1. El cliente realiza una solicitud al servidor.
  2. El servidor envía los datos solicitados
  3. El cliente comienza a recibir los datos.
El cliente en ningún momento pierde el control de las acciones sobre la página que está visualizando y permite acciones con el usuario durante la devolución de los datos.

La tecnología más importante dentro de las llamadas asíncronas es AJAX.

AJAX. Acrónimo de Asynchronous JavaScript And XML (JavaScript asíncrono y XML). Ajax no es una tecnología, es el conjunto de muchas tecnologías (XHTML, CSS, DOM, XML, XSLT, XMLHttpRequest, JavaScript, Jquery). Dichas tecnologías se ejecutan en el navegador de los usuarios y mantiene comunicación asíncrona con el servidor en segundo plano. De esta forma es posible realizar cambios sobre la misma página sin necesidad de recargarla. En aplicaciones AJAX se pueden enviar peticiones al servidor web para obtener solamente la información necesaria y así ahorrar ancho de banda. Su desventaja sería que el cargar la página inicial, el proceso es más lento, debido a que primero tiene que cargar todo el código JavaScript y XML que hará la implementación. Las acciones de la tecnología Ajax se ejecutan en el cliente, es decir, en el navegador del usuario, y mantiene comunicación asíncrona con el servidor en segundo plano. Las tecnologías que forman AJAX son:
  • XHTML y CSS, para crear una presentación basada en estándares.
  • DOM, para la interacción y manipulación dinámica de la presentación.
  • XML, XSLT y JSON, para el intercambio y la manipulación de información.
  • XMLHttpRequest, para el intercambio asíncrono de información.
  • JavaScript, para unir todas las demás tecnologías.

Capas de arquitectura JEE

En la arquitectura JEE se contemplan cuatro capas, en función del tipo de servicio y contenedores:
  • Capa de cliente: También conocida como capa de presentación o de aplicación. Nos encontramos con componentes Java (applets o aplicaciones) y componentes que son parte del diseño web y su lógica en el cliente (HTML, JavaScript, css, etc.).
  • Capa Web. Intermediario entre el cliente y otras capas. Sus componentes principales son los servlets y las páginas JSP. Aunque componentes de capa cliente (applets o aplicaciones) pueden acceder directamente a la capa EJB, lo normal es que Los servlets/JSPs pueden llamar a los EJB.
  • Capa Enterprise JavaBeans: Permite a múltiples aplicaciones tener acceso de forma concurrente a datos y lógica de negocio. Los EJB se encuentran en un servidor EJB, que no es más que un servidor de objetos distribuidos. Un EJB puede conectarse a cualquier capa, aunque su misión esencial es conectarse con los sistemas de información empresarial (un gestor de base de datos, ERP, etc.)
  • Capa de sistemas de información empresarial.

Empaquetado de aplicaciones JEE

Existen tres tipos de empaquetados dentro de las aplicaciones JEE:

*Archivos JAR (Java Archive)

Características:
  • Permiten empaquetar diferentes archivos de java en uno solo.
  • Siguen el formato ZIP
  • Fueron incorporados en la versión 1.1 del JDK
  • Contienen clases Java y recursos que utilizan dichas clases
  • Es el empleado para empaquetar componentes EJBs respetando su estructura de directorios.

*Archivos WAR (Web Application Archive)

Características:
  • Permiten empaquetar en una sola unidad aplicaciones web java completas
  • Pueden empaquetar los siguientes elementos:
    • Java Server Pages (JSP)
    • Servlets
    • Contenido estático como css, HTML o imágenes
    • Otros recursos web

*Archivos EAR (Enterprise Application Archive)

Características:
  • Archivos desplegables en servidores de aplicaciones J2EE.
  • Contienen los siguientes elementos:
    • Archivos War
    • EJBs empaquetados dentro de ficheros jar
Una aplicación JEE se empaqueta en un archivo .ear que no es nada mas que un jar normal y corriente.
Debe contener obligatoriamente una carpeta META-INF y un fichero application.xml donde estará toda la meta-información, como su propio nombre indica.
Módulos web: ficheros .war que contienen la capa web
Módulos EJB: que contiene ficheros .jar.
Módulos de adaptadores de recursos
En la práctica, casi todo se reduce a un módulo war y pocos elementos más.
La estructura de un módulo web (empaquetado .war) es la siguiente:
/Raiz
/Raiz/WEB-INF
/Raiz/WEB-INF
/Raiz/WEB-INF/lib
/Raiz/WEB-INF/classes
/Raiz/WEB-INF/tags
El directorio Raíz contiene todos los archivos estáticos (HTML, gráficos, jsp, y los recursos estáticos de cualquier web)
El directorio WEB-INF debe contener un archivo web.xml que es la información que contendrá la meta-información de el archivo war.
El directorio WEB-INF/lib contiene las librerías de código .jar
El directorio WEB-INF/classes contendrá las clases compiladas
El directorio WEB-INF/lib contendrá las etiquetas personalizadas


Tecnologías en J2EE
La tecnología Enterprise JavaBeans (EJB) usa un modelo de componente para simplificar el desarrollo de aplicaciones de middleware (capas) con soporte automático de servicios como transacciones, seguridad y conectividad de base de datos.
*JavaMail es una API que proporciona una serie de clases abstractas que modelan un sistema de correo.
*Java Message Service (JMS) es una API que permite el desarrollo de aplicaciones portables y basadas en mensajes para la plataforma Java.
*JavaServer Faces (JSF) proporciona un modelo de programación que ayuda a crear aplicaciones Web.
*JavaServer Pages (JSP) permite que desarrolladores Web desarrollen rápidamente y mantengan fácilmente páginas Web dinámicas.
*Standard Tag Library for JavaServer Pages (JSTL) es un conjunto de etiquetas personalizadas que habilitan varias funciones comunes de Web sites en un formato estandarizado.
*Los Java Servlets amplían y mejoran el alcance de los servidores Web al proporcionar un método basado en componentes e independiente de plataforma para crear aplicaciones basadas en la Web sin las limitaciones de rendimiento de los programas CGI.
*La API Java Transaction (JTA) es una API de alto nivel, independiente de implementación y de protocolo que permite que aplicaciones y servidores de aplicaciones accedan a transacciones Java Transaction Service(JTS) especifica la implementación de un gestor de transacciones que soporta JTA e implementa la correlación entre Java y la especificación OMG.
Los componentes de software son unidades binarias de producción, adquisición y despliegue independientes, que al interactuar, forman un sistema en funcionamiento.
Un componente puede tener varias interfaces, una por cada punto de acceso: uso, administración y configuración.
Los componentes más utilizados podemos diferenciarlos entre los siguientes
  • Enterprise JavaBeans y el modelo de componentes de Java EE
  • La estructura de componentes de .NET
Un contenedor es un proceso donde se ejecutan los componentes.
Cuando un desarrollador crea un modelo de arquitectura basado en la plataforma JEE, debe especificar los siguientes elementos en el contenedor:
  • Los componentes de la aplicación
    • Servlets
    • JSPs (Java Server Pages)
    • EJBs (Enterprise Java Beans)
  • Los descriptores de despliegue
    • Ficheros XML que describen los componentes de la aplicación

Envío de información request y response HTTP

Una aplicación web es una aplicación que trabaja en un servidor y sobre la que un usuario accede desde un cliente general, como por ejemplo un navegador en un PC, un teléfono móvil o una PDA.
La comunicación en la Web gira en torno al protocolo http y sus características son las siguientes:
  • Protocolo de nivel de aplicación
  • Funciona sobre TCP
  • Usa el puerto 80 por defecto
  • Modelo petición/respuesta (request/response)
  • No tiene estado
  • Al igual que SMTP, es un protocolo ASCII, que usa MIME para transferir información no ASCII.
  • Tipos de peticiones: GET, POST, PUT, DELETE, TRACE, OPTIONS, HEAD

El formato estándar para peticiones http con el método get es la siguiente:

URL?dato1=valor1&dato2=valor2 ... &datoN=valorN
Debemos tener en cuenta los siguientes parámetros al enviar caracteres en el valor de un parámetro:
  • Caracteres ASCII alfanuméricos y signos. (punto), - (guión), * (asterisco) y _ (subrayado) son literales.
  • Debemos sustituir los espacios en blanco por el símbolo +.
  • Resto de caracteres son admitidos
Si un valor aparece repetido más de una vez en la cadena del envío, el parámetro correspondiente es recibido como un vector de valores. dato[0], dato[1], dato[2]

No hay comentarios:

Publicar un comentario