Descargar

Tecnologías y herramientas para el desarrollo de aplicaciones web en Java

Enviado por Yisel Martínez Diaz


  1. Introducción
  2. Estilos Arquitectónicos
  3. Arquitectura Cliente/Servidor
  4. Arquitectura en tres capas
  5. Tecnologías en la capa de Presentación
  6. Lenguaje de Marcado de Hipertexto Extensible (XHTML)
  7. Tecnologías en la capa de Negocio
  8. Tecnologías en la capa de Acceso a Datos
  9. Lenguaje de Programación
  10. Conclusiones
  11. Referencias Bibliográficas

Title: Technologies and tools for web application development in java.

Introducción

La comunicación hombre-máquina se ha hecho necesaria desde años atrás y es precisamente mediante un lenguaje de programación como se logra esta interacción de un modo satisfactorio. Los programadores necesitan conocer los lenguajes de programación para mediante términos definidos por el lenguaje dar solución a un problema determinado. El lenguaje java es un lenguaje orientado a objetos que actualmente tiene gran uso debido precisamente a la capacidad de sus programas para ser ejecutados en cualquier tipo de máquina. El uso de frameworks permite el desarrollo rápido de aplicaciones y la reutilización de componentes, a la vez que está suministrando al sistema una arquitectura determinada.

Estilos Arquitectónicos

La programación para muchos es considerada un arte, pero en sus inicios se tornaba un poco difícil para la mayoría de las personas, pero con el tiempo se han ido descubriendo y desarrollando formas, guías generales y estilos de programación, con el objetivo de resolver aquellos problemas. A este conjunto de patrones y abstracciones presentes en la programación de hoy, que guían la construcción del software se le conoce como Arquitectura de Software y establece los fundamentos para que todo el personal implicado en el desarrollo del sistema, trabaje en una línea común que permita alcanzar los objetivos propuestos y satisfacer las expectativas del cliente.

Arquitectura Cliente/Servidor

La arquitectura cliente/servidor es un modelo para el desarrollo de sistemas de información en el que las transacciones se dividen en procesos independientes que cooperan entre sí para intercambiar información, servicios o recursos. Se denomina cliente al proceso que inicia el diálogo o solicita los recursos y servidor al proceso que responde a las solicitudes. En este modelo las aplicaciones se dividen de forma que el servidor contiene la parte que debe ser compartida por varios usuarios, y en el cliente permanece solo lo particular de cada usuario.

Características del Cliente:

  • Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la comunicación.

  • Espera y recibe las respuestas del servidor.

  • Por lo general, puede conectarse a varios servidores a la vez.

  • Normalmente interactúa directamente con los usuarios finales mediante una interfaz gráfica de usuario.

Características del Servidor:

  • Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempeñan entonces un papel pasivo en la comunicación.

  • Tras la recepción de una solicitud, la procesan y luego envían la respuesta al cliente.

Arquitectura en tres capas

La utilización de la plataforma Java Enterprise Edition (JEE 5.0) permite una concepción del sistema en n- capas, en específico se usará una arquitectura en tres capas, cuyo objetivo primordial es la separación de la lógica de negocios de la lógica de diseño; un ejemplo básico de esto consiste en separar la capa de datos de la capa de presentación al usuario. La ventaja principal de este estilo es que el desarrollo se puede llevar a cabo en varios niveles y, en caso de que sobrevenga algún cambio, solo se ataca al nivel requerido sin tener que revisar entre código mezclado. Además, permite distribuir el trabajo de creación de una aplicación por niveles; de este modo, cada grupo de trabajo está totalmente abstraído del resto de los niveles.

Capa de presentación: es la que ve el usuario, presenta el sistema al usuario, le comunica la información y captura la información del usuario en un mínimo de proceso (realiza un filtrado previo para comprobar que no hay errores de formato). Esta capa se comunica únicamente con la capa de negocio.

Capa de negocio: es donde residen los programas que se ejecutan, se reciben las peticiones del usuario y se envían las respuestas tras el proceso. Se denomina capa de negocio porque es aquí donde se establecen todas las reglas que deben cumplirse. Esta capa se comunica con la capa de presentación, para recibir las solicitudes y presentar los resultados, y con la capa de datos, para solicitar al gestor de base de datos para almacenar o recuperar datos de él.

Capa de datos: es donde residen los datos y es la encargada de acceder a los mismos. Está formada por uno o más gestores de bases de datos que realizan todo el almacenamiento de datos, reciben solicitudes de almacenamiento o recuperación de información desde la capa de negocio.

Patrón Modelo-Vista-Controlador (MVC)

El patrón MVC separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. La lógica de un interfaz de usuario cambia con más frecuencia que los almacenes de datos y la lógica de negocio. Si se realiza un diseño donde se mezclan los componentes de interfaz y de negocio, entonces la consecuencia será que, cuando se necesite cambiar la interfaz, se tendrá que modificar trabajosamente los componentes de negocio. Mayor trabajo y más riesgo de error. Se trata de realizar un diseño que desacople la vista del modelo, con la finalidad de mejorar la reusabilidad. De esta forma las modificaciones en las vistas impactan en menor medida en la lógica de negocio o de datos. [1]

Tecnologías en la capa de Presentación

Java Server Faces (JSF)

La tecnología Java Server Faces es un marco de desarrollo de los componentes de la interfaz de usuario, válido para todas aquellas aplicaciones web basadas en la tecnología Java.

Richfaces

RichFaces es un marco de código abierto que añade a las aplicaciones capacidad de Ajax en JSF, sin recurrir a Java Script. RichFaces aprovecha el framework Java Server Faces, incluyendo su ciclo de vida, la validación, los medios de conversión y la gestión de los recursos estáticos y dinámicos. Los componentes de RichFaces con soporte Ajax y aspecto altamente personalizable pueden ser fácilmente incorporados a aplicaciones JSF.

Ajax

Es el acrónimo para Asynchronous Java Script + XML y el concepto es: Cargar y renderizar una página, luego mantenerse en esa página mientras scripts y rutinas van al servidor buscando, en background, los datos que son usados para actualizar la página solo re-renderizando la página y mostrando u ocultando porciones de la misma. [2]

AJAX incorpora:

  • Presentación basada en estándares usando XHTML y CSS.

  • Exhibición e interacción dinámicas usando el Document Object Model.

  • Intercambio y manipulación de datos usando XML y XSLT.

  • Recuperación de datos asincrónica usando XML Http Request.

Ajax4Jsf

Es una librería open source que se integra totalmente en la arquitectura de JSF y extiende la funcionalidad de sus etiquetas dotándolas con tecnología Ajax de forma limpia y sin añadir código Java Script. Mediante este framework se puede variar el ciclo de vida de una petición JSF, recargar determinados componentes de la página sin necesidad de recargarla por completo, realizar peticiones al servidor automáticas, control de cualquier evento de usuario, etc. En definitiva Ajax4jsf permite dotar a la aplicación JSF de contenido mucho más profesional con muy poco esfuerzo. [3]

Facelets

Es un framework simplificado de presentación, en donde es posible diseñar de forma libre una página web y luego asociarle los componentes JSF específicos. Aporta mayor libertad al diseñador y mejora los informes de errores que tiene JSF. Permite que JSP (Java Server Pages) y JSF (Java Server Faces) puedan funcionar conjuntamente en una misma aplicación web. Estos no se complementan naturalmente. JSP procesa los elementos de la página de arriba a abajo, mientras que JSF dicta su propio re-rendering (ya que su ciclo de vida está dividido en fases marcadas). Facelets llena este vacío entre JSP y JSF, siendo una tecnología centrada en crear árboles de componentes y estar relacionado con el complejo ciclo de vida JSF.

Las principales ventajas de Facelets son:

  • Construcción de interfaces basadas en plantillas.

  • Rápida creación de componentes por composición.

  • Fácil creación de funciones y librerías de componentes.

  • Facelets provee un proceso de compilación más rápido que JSP.

  • Provee templating, lo cual implica reutilización de código, simplificación de desarrollo y facilidad en el mantenimiento de grandes aplicaciones.

Lenguaje de Marcado de Hipertexto Extensible (XHTML)

Es una versión más estricta y limpia de HTML, que nace con el objetivo de remplazar a HTML ante su limitación de uso con las cada vez más abundantes herramientas basadas en XML. XHTML extiende HTML 4.0 combinando la sintaxis de HTML, diseñado para mostrar datos, con la de XML, diseñado para describir los datos. [4]

Extensible Markup Language (XML)

No es solo un lenguaje, es una forma de especificar lenguajes, de ahí el término de extensible. Es un leguaje de etiquetas no predefinidas previamente, es decir, el programador es el que las crea en cada caso. El XML ahorra tiempos de desarrollo y proporciona ventajas, dotando a webs y a aplicaciones de una forma realmente potente de guardar la información. Se ha convertido en un formato universal para el intercambio de información estructurada entre diferentes plataformas. En la actualidad permite la compatibilidad entre sistemas para compartir la información.

Java Script

Es un lenguaje de programación interpretado, es decir, no requiere de compilación ya que el lenguaje funciona del lado del cliente, los navegadores son los encargados de interpretar estos códigos. Tiene la ventaja de ser incorporado en cualquier página web, puede ser ejecutado sin la necesidad de instalar otro programa para ser visualizado. Tiene como principal característica ser un lenguaje independiente de la plataforma.

Tecnologías en la capa de Negocio

Servidor de Aplicaciones

JBoss es un servidor de aplicaciones para Java. Es muy reconocido por ser de los primeros servidores de aplicación empresarial gratuito y open source. Al estar basado en Java, puede ser utilizado en cualquier sistema operativo que lo soporte, ofreciendo una plataforma de alto rendimiento para aplicaciones java, aplicaciones Web y Portales.

Enterprise Java Beans (EJB)

Es una plataforma para construir aplicaciones de negocio portables, escalables, y reutilizables utilizando el lenguaje de programación java. Permite a los desarrolladores enfocarse en la lógica del negocio sin tener que emplear tiempo en la conformación del código de la infraestructura. Desde el punto de vista del desarrollador es un pedazo de código java que se ejecuta en un entorno especializado denominado contenedor EJB que proporciona un conjunto de servicios. El servicio de persistencia es proporcionado por un framework especializado denominado proveedor de persistencia.

Plain Old Java Object (POJO"s)

Son las siglas utilizadas por programadores java para enfatizar el uso de clases simples y que no dependen de un framework en especial.

Tecnologías en la capa de Acceso a Datos

Java Persistence API (JPA)

El Java Persistence API fue desarrollado por el grupo de expertos de EJB 3.0, aunque su uso no se limita a los componentes software EJB. También puede utilizarse directamente en aplicaciones web y aplicaciones clientes; incluso fuera de la plataforma Java EE.

En su definición, se han combinado ideas y conceptos de los principales frameworks de persistencia como Hibernate, Toplink y JDO y de las versiones anteriores de EJB. Todos estos cuentan actualmente con una implementación JPA.

Framework Hibernate

Hibernate es una capa de persistencia objeto/relacional y un generador de sentencias SQL. Permite diseñar objetos persistentes que podrán incluir polimorfismo, relaciones, colecciones, y un gran número de tipos de datos. De una manera muy rápida y optimizada se puede generar bases de datos en cualquiera de los entornos soportados: Oracle, DB2, MySql, etc. Y lo más importante de todo, es open source, lo que supone, entre otras cosas, que no se tiene que pagar nada por adquirirlo.

Hibernate ofrece también un lenguaje de consulta de datos llamado HQL (Hibernate Query Language). Puede ser usado para desarrollar y distribuir aplicaciones de forma gratuita. Es utilizado en las aplicaciones Java EE.

JBoss Seam

JBoss Seam es una nueva y poderosa aplicación para la construcción de la próxima generación de aplicaciones Web 2.0 de la unificación y la integración de tecnologías, como Java Script asíncrono y XML (AJAX), Java Server Faces (JSF), Enterprise Java Beans (EJB3), Java Portlets y Business Process Management (BPM).

Es un framework que integra y unifica los distintos estándares de la plataforma Java EE, pudiendo trabajar con todos ellos siguiendo el mismo modelo de programación. Ha sido diseñado intentado simplificar al máximo el desarrollo de aplicaciones, basando el diseño en POJOs con anotaciones. Estos componentes se usan desde la capa de persistencia hasta la de presentación, poniendo todas las capas en comunicación directa. El núcleo principal de Seam está formado por las especificaciones EJB3 y JSF.

Lenguaje de Programación

Java, es un lenguaje orientado a objetos desarrollado por Sun Microsystems. La programación en Java, permite el desarrollo de aplicaciones bajo el esquema de Cliente Servidor, como de aplicaciones distribuidas, lo que lo hace capaz de conectar dos o más computadoras u ordenadores, ejecutando tareas simultáneamente, y de esta forma logra distribuir el trabajo a realizar. [5]

Es distribuido, multiplataforma, compilado, seguro y posee una arquitectura neutral. Proporciona un conjunto de clases potente y flexible. Elimina muchas de las características de C y C++, lo que lo hace más manejable desde el punto de vista del programador.

Herramientas

Eclipse Ganymede

Es un entorno integrado (IDE) para desarrollo de aplicaciones con java. Está soportado por IBM, es un proyecto open source, multiplataforma para desarrollar lo que el proyecto llama "Aplicaciones de Cliente Enriquecido". Se está convirtiendo en el estándar de facto de los entornos de desarrollo para Java. Y es que Eclipse no es tan solo un IDE, se trata de un marco de trabajo modular ampliable mediante complementos (plugins). De hecho, existen complementos que permite usar Eclipse para programar en PHP, Perl, Python, C/C++, etc.

PostgreSQL Server 8.3.

Es un potente gestor de código abierto, ofrece servicios de control de concurrencia multi-versión, soportando casi toda la sintaxis SQL (incluyendo subconsultas, transacciones, tipos y funciones definidas por el usuario), contando también con un amplio conjunto de enlaces con lenguajes de programación (incluyendo C, C++, Java, Perl y Python). Es extensible, brinda gran estabilidad y confiabilidad y es multiplataforma. Tiene soporte para lenguajes procedurales internos, incluyendo un lenguaje nativo denominado PL/PGSQL. Este lenguaje es comparable al lenguaje procedural del sistema de gestión de base de datos relacional Oracle, PL/SQL. Una de sus ventajas es la excelente documentación que existe, además de contar con una comunidad de usuarios y desarrolladores a los que acudir en caso de tener problemas.

Conclusiones

La selección de las herramientas y tecnologías para el desarrollo de un software debe estar dada por el conocimiento que tenga el programador de las mismas. Antes de generar líneas de código haga un estudio detallado y seleccione las más factibles y las que más fácil le sean para utilizar. Eso sí lo más fácil siempre no es lo mejor, no le tema a la adquisición de conocimiento y a los nuevos retos.

Referencias Bibliográficas

1. Patrón "Modelo-Vista-Controlador"

http://www.proactiva-calidad.com/java/patrones/mvc.html

2. Ajax: Un nuevo acercamiento a las aplicaciones web. Maestros del Web

http://www.maestrosdelweb.com/editorial/ajax/

3. Introducción a Ajax4jsf [En línea] Juan Alonso Ramos http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=Ajax4Jsf

4. Guía Breve de XHTML

http://www.w3c.es/Divulgacion/guiasbreves/XHTML

5. Programación Java

http://www.lenguajes-de-programacion.com/programacion-java

 

 

Autor:

Ing. Yisel Martínez Díaz.

Institución: Universidad de Granma. Ministerio de Educación Superior. Bayamo. Granma. Cuba.

 

.