Tecnologías y herramientas para el desarrollo de aplicaciones web en Java
- Introducción
- Estilos
Arquitectónicos - Arquitectura
Cliente/Servidor - Arquitectura en tres capas
- Tecnologías en la capa de
Presentación - Lenguaje de Marcado de Hipertexto Extensible
(XHTML) - Tecnologías en la capa de
Negocio - Tecnologías en la capa de Acceso a
Datos - Lenguaje de
Programación - Conclusiones
- 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.
.