Este documento proporciona una introducción al desarrollo de aplicaciones web con J2EE. Explica las características y capacidades de Java para el desarrollo web, la evolución de JSP y J2EE, y las aportaciones del código abierto. También describe brevemente la arquitectura de J2EE, incluyendo Enterprise Java Beans.
Proyecto crowdfunding para distribuir electricidad sin cables en
Desarrollo Aplicaciones Web J2EE
1. Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
Jaaaaaaaaaaaa
Desarrollo de Aplicaciones Web con J2EE
2. Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
TEMA Nº 1: INTRODUCCIÓN A J2EE
1) EL LENGUAJE JAVA
El lenguaje Java™ fue creado por Sun Microsystems Inc. en un proceso poretapas que arranca en 1990, año
en el que Sun creó un grupo de trabajo, lideradopor James Gosling, para desarrollar un sistema para
controlar electrodomésticos einclusoPDAs o Asistentes Personales (pequeños ordenadores) que, además,
permitiera la conexión a redes de ordenadores. Se pretendía crear un hardware polivalente, con un Sistema
Operativo eficiente (SunOS) y un lenguaje de desarrollo denominado Oak (roble), el precursor de Java. El
proyecto finalizó en
1992 y resultó un completo fracaso debido al excesivo coste del producto, con relación a alternativas
similares, tras lo cual el grupo se disolvió.
Por entonces aparece Mosaic y la World Wide Web. Después de la disolución del grupo de trabajo,
únicamente quedaba del proyecto el lenguaje Oak. Gracias a una acertada decisión de distribuir libremente
el lenguaje por la Red de Redes y alague y la facilidad de acceso a Internet, propiciado por la WWW, el
lenguaje se popularizó y se consiguió que una gran cantidad de programadores lo depurasen y
Termina se de perfilar la forma y usos del mismo. A partir de este momento, el lenguaje se difunde a una
velocidad vertiginosa, añadiéndosele numerosas clases
y funcionalidad para TCP/IP. El nombre del lenguaje tuvo que ser cambiado ya que existía otro llamado Oak.
El nombre “Java” surgió en una de las sesiones de “brainstorming” celebradas por el equipo de desarrollo del
lenguaje. Buscaban un nombre que evocara la esencia de la tecnología (viveza, animación, rapidez,
Interactividad…). Java fue elegido de entre muchísimas propuestas. No es un acrónimo, sino únicamente algo
humeante, caliente y que a muchos programadores les gusta beber en grandes cantidades: una taza de café
(Java enargot Inglés americano2). De esta forma, Son lanzó las primeras versiones de Java a principios de
1995. Desde entonces, Sun ha sabido manejar inteligentemente el éxito obtenido por su
Lenguaje, concediéndose licencias a cualquiera sin ningún problema, fomentando
CARACTERÍSTICAS DEL LENGUAJE
Es intrínsecamente orientado a objetos.
Funciona perfectamente en red.
Aprovecha características de la mayoría de los lenguajes modernos evitando sus inconvenientes
. En particular los del C++.
Tiene una gran funcionalidad gracias a sus librerías (clases).
NO tiene punteros manejables por el programador, aunque los maneja interna y transparentemente.
El manejo de la memoria no es un problema, la estonia el propio lenguaje y no el programador.
Genera aplicaciones con pocos errores posibles.
Incorpora Multi-Threading (para permitir la ejecución de tareas concurrentes dentro de un mismo
programa). Esta característica será tratada con detenimiento en el punto
3. Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
2) CAPACIDADES DE JAVA PARA LA WEB
Java es la base para prácticamente todos los tipos de aplicaciones de red, además del estándar global para
desarrollar y distribuir aplicaciones móviles, juegos, contenido basado en web y software de empresa. Con
más de 9 millones de desarrolladores en todo el mundo, Java le permite desarrollar, implementar y utilizar
de forma eficaz interesantes aplicaciones y servicios.
Desde portátiles hasta centros de datos, desde consolas para juegos hasta súper computadoras, desde
teléfonos móviles hasta Internet, Java está en todas partes.
1,100 millones de escritorios ejecutan Oracle Java 930 millones de descargas de Java RuntimeEnvironment
cada año
3 mil millones de teléfonos móviles ejecutan Java Se entregan 31 veces más al año teléfonos Java que Apple
y Android juntos El 100% de los reproductores de Blu-ray ejecutan Java Se fabrican 1400 millones de tarjetas
Java cada año
Java se incluye en decodificadores, impresoras, juegos, sistemas de navegación en vehículos, cajeros
automáticos, terminales de loterías, dispositivos médicos, estaciones de pago de aparcamientos y mucho
más.
¿Por qué los desarrolladores de software eligen Java?
Java ha sido probado, ajustado, ampliado y probado por toda una comunidad de desarrolladores, arquitectos
de aplicaciones y entusiastas de Java. Java está diseñado para permitir el desarrollo de aplicaciones portátiles
de elevado rendimiento para el más amplio rango de plataformas informáticas posible. Al poner a disposición
de todo el mundo aplicaciones en entornos heterogéneos, las empresas pueden proporcionar más servicios y
mejorar la productividad, las comunicaciones y colaboración del usuario final y reducir drásticamente el
costo de propiedad tanto para aplicaciones de usuario como de empresa. Java se ha convertido en un valor
impagable para los desarrolladores, ya que les permite:
Escribir software en una plataforma y ejecutarla virtualmente en otra
Crear programas que se puedan ejecutar en un explorador y acceder a servicios Web disponibles
Desarrollar aplicaciones de servidor para foros en línea, almacenes, encuestas, procesamiento de
formularios HTML y mucho más
Combinar aplicaciones o servicios que utilizan el lenguaje Java para crear aplicaciones o servicios con
un gran nivel de personalización
Escribir aplicaciones potentes y eficaces para teléfonos móviles, procesadores remotos, productos de
consumo y prácticamente cualquier otro dispositivo electrónico
4. Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
3) EVOLUCIÓN DE JSP
Qué es JSP?
Java Server Pages (JSP, para abreviar) es una tecnología basada en Java que simplifica el desarrollo de
páginas web con contenido dinámico. Con JSP, los diseñadores web pueden incorporar elementos dinámicos
dentro de la página utilizando tanto porciones de código Java incrustadas, como unas cuantas etiquetas. Así,
las páginas JSP tienen el aspecto de una página tradicional HTML, a la que se le ha introducido parte de
código Java junto con unas etiquetas. De esta forma, cuando una página es solicitada por un usuario y
procesada por un servidor HTTP, el código HTML pasará directamente al usuario, mientras que las porciones
de código Java serán ejecutadas en el servidor cuando la solicitud haya sido recibida, para generar el
contenido dinámico de la página. Cuando el usuario acceda al código de la página que le llega sólo verá
HTML, sin poder acceder al código JSP subyacente.
EVOLUCIÓN TECNOLÓGICA
El hecho de que una página contenga contenido dinámico, exige que el servidor web realice algún trabajo de
procesado que en el caso de páginas estáticas no era necesario. La forma de realizar este procesado ha ido
cambiando con el tiempo, y así veremos ahora un pequeño resumen de cómo ha ido evolucionando.
Inicialmente la generación de contenido dinámico se hacía fuera de los servidores. Cuando llegaba una
solicitud, esta era procesada en el servidor, y cuando era necesario se llamaba a un proceso, fuera del
servidor, que generaba el contenido dinámico y lo devolvía al servidor. Los modelos basados en el Común
Gateway Interface (CGI) seguían esta idea. Sus principales problemas eran: necesidad de overhead para la
comunicación entre proceso y servidor, consumo de recursos de sistema por parte del proceso...
Posteriormente se optó por sistemas que introdujeran porciones de código de lenguaje tradicionales
incrustados dentro de la página usando etiquetas, de forma que el estilo de la sintaxis fuera más consistente
y sencillo. Este modelo lo han seguido entre otros: Microsoft Active Server Pages (ASP), Server Side Java
Script (SSJS), Java Server Pages (JSP) y otros.
En JSP el lenguaje que se utilizará para la generación de contenido dinámico es, típicamente, Java, y provee
un conjunto de etiquetas que interactúan con objetos Java en el servidor de forma que no es estrictamente
necesario que aparezca código Java en la página.
BENEFICIOS
JSP ofrece varios beneficios como sistema de generación de contenido dinámico. Al estar basado en Java,
presenta las ventajas que este lenguaje ofrece con respecto a la portabilidad entre plataformas y las
derivadas de la orientación a objetos de este lenguaje.
5. Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
4) J2EE
Qué es Java para Internet (J2EE)
La plataforma J2EE añade a Java la funcionalidad necesaria para convertirse en un lenguaje orientado al
desarrollo de servicios en Internet. Mediante JSP (un lenguaje de programación de páginas web dinámicas
como PHP o ASP) y Servlets (scripts CGI en el servidor como los de Perl) se pueden desarrollar sitios Web bajo
la tecnología Java.
J2SE= JRE + librerías, herramientas y compilador para desarrollo. (Para el programador)
Básicamente J2SE es un conjunto de clases e interfaces para desarrollo de aplicaciones "simples". Me refiero
con simples, por ejemplo a aplicaciones de escritorio con interfaz de usuario Swing o AWT que son un API
para “dibujar" ventanas.
J2EE = J2SE + Librerías para aplicaciones empresariales (JMS,EJB,JAX-WS,etc)
J2EE es un grupo de especificaciones diseñadas por Sun que permiten la creación de aplicaciones
empresariales, esto sería: acceso a base de datos (JDBC), utilización de directorios distribuidos (JNDI), acceso
a métodos remotos (RMI/CORBA), funciones de correo electrónico (JavaMail), aplicaciones Web(JSP y
Servlets)...etc. Aquí es importante notar que J2EE es solo una especificación, esto permite que diversos
productos sean diseñados alrededor de estas especificaciones algunos son Tomcat y Weblogic.
¿En qué consiste el Curso de Java para Internet (J2EE) de CiberAula?
En el curso de Java para Internet on-line se estudia el desarrollo de aplicaciones web bajo la
plataforma J2EE (JavaTM
2 Platform, Enterprise Edition) con servlets, JSP y EJB. Como proyecto
del Curso de Java on-line se realizará una tienda virtual.
¿En qué podré emplear los conocimientos adquiridos en el Curso de Java para Internet (J2EE)?
Con los conocimientos adquiridos en el Curso de Java para Internet (J2EE) on line podrá realizar las
siguientes aplicaciones prácticas
5) APORTACIONES DE CÓDIGO ABIERTO
La historia del software libre y de código abierto como lo conocemos actualmente, se remonta a inicios de
los años 1980, época en la que la mayoría de software era privativo y surgió la necesidad, por parte de
algunos programadores, de crear proyectos que impulsaran la creación de software libre.1 Cabe mencionar
que antes, cuando las primeras computadoras nacieron (y por ende los primeros programas informáticos), el
software tenía un modelo de desarrollo cooperativo, similar al de otras ciencias como la física; esto empezó a
cambiar en los años 1960 y los años 1970, cuando nacieron las primeras compañías que «privatizaron» su
código.2
Es importante señalar que el software libre y de código abierto, no debe ser confundido con el llamado
"freeware"; el software libre y de código abierto suele ser gratuito, lo que puede llevar a confusión.
6. Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
El FOSS (acrónimo en inglés para free and open source software) también puede ser comprado y vendido. La
confusión es aún mayor en países de habla inglesa por la ambigüedad de la palabra free que significa tanto
libertad, como gratuidad.
Esta es una línea del tiempo acerca de cómo el software libre y de código abierto ha existido y evolucionado
desde su concepción.
6) ARQUITECTURA
El presente artículo es una breve introducción a la arquitectura empresarial de Java denominada Java EE o
JEE de forma abreviada. Este artículo sirve como base para futuros artículos que ejemplifican el uso y la
implementación de elementos pertenecientes a esta arquitectura.
La plataforma Java EE (anteriormente conocida como Java 2 Platform, Enterprise Edition o J2EE hasta la
versión 1.4) está definida por una nueva especificación.
Similar a otras especificaciones del Java CommunityProcess, Java EE es también considerada informalmente
como un estándar debido a que los proveedores deben cumplir ciertos requisitos de conformidad para
declarar que sus productos son conformes a Java EE.
Java EE incluye varias especificaciones de API o interfaz de programación de aplicaciones, como son JDBC,
RMI, e-mail, JMS, Servicios Web, XML. etc. y define cómo coordinarlos. Java EE también configura algunas
especificaciones únicas para Java EE para componentes. Estas incluyen Enterprise JavaBeans, servlets,
portlets, JSP y varias tecnologías de servicios web tales como Axis2 o JAX-WS (Apache CXF).
El desarrollador puede crear una aplicación empresarial portable entre plataformas y escalable, a la vez que
integrable con tecnologías anteriores. Otros beneficios añadidos son, por ejemplo, que el servidor de
aplicaciones puede manejar transacciones, la seguridad, escalabilidad, concurrencia y gestión de los
componentes desplegados, significando que los desarrolladores pueden concentrarse más en la lógica de
negocio de los componentes en lugar de en tareas de mantenimiento de bajo nivel.
Enterprise Java Beans (EJB)
Los EJBs (o beans empresariales) son componentes Java EE que implementan la tecnología Enterprise
JavaBeans (EJB). Un EJB se ejecuta en un contenedor de EJB que es un entorno de ejecución dentro un
servidor de aplicaciones. Aunque transparente para la aplicación, el contenedor de EJB provee una serie de
servicios a nivel de sistema entre los que se incluyen las transacciones y la seguridad de los EJBs.
Estos servicios permiten la construcción rápida y el despliegue de EJBs los cuáles forman el núcleo
transaccional de las aplicaciones JEE.
Escritos en lenguaje de programación Java, un EJB es un componente de servidor que encapsula la lógica de
negocio de una aplicación. Entre sus ventajas están:
Simplifican el desarrollo de grandes aplicaciones distribuidas. El contenedor de EJB se encarga de la
seguridad y el manejo de transacciones, dejando al bean solo la lógica de negocio
Como la lógica de negocio está en los beans, el desarrollador puede ocuparse de desarrollar la capa de
presentación sin tener que codificar lógica de negocio o acceso a bases de datos. Como resultado se
producen clientes muy ligeros, especialmente deseables para ejecutarse en pequeños dispositivos como los
smartphones
Los beans pueden ser reutilizados para crear nuevos beans que extiendan su funcionalidad. Al fin y al cabo
son también componentes reutilizables.
¿Cuándo utilizar EJBs?
La aplicación debe ser escalable.
Las transacciones tienen que asegurar la integridad de los datos
La aplicación puede tener varios tipos de clientes incluso en diferentes plataformas
7. Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
Tipos de EJBs
Tipo
Objetivo
De sesión (Session)
Realizan una tarea para un cliente; opcionalmente pueden implementar un servicio Web
Dirigidos por mensajes (Message-Driven)
Actúan como un listener para un tipo particular de mensaje, como los soportados por el Java MessageService
API
Bean de Sesión
Un bean de sesión representa a un cliente simple dentro de un servidor de aplicaciones. Para acceder a una
aplicación desplegada en el servidor, el cliente invoca un método del bean de sesión que se encarga de
ejecutar la lógica de negocio.
Como su nombre sugiere, el bean de sesión es similar a una sesión interactiva. Un bean de sesión no se
comparte; solo puede tener un cliente, de la misma manera que una sesión interactiva solo puede tener un
usuario. Cuando el bean de sesión termina no sigue asociado con el cliente que lo había invocado.
Tipos de Bean de Sesión
Descripción
Con estado (stateful)
Las variables de instancia de la clase del bean guardan sus valores (estado conversacional) manteniéndolo
mientras dure la sesión. Si el cliente termina o elimina el bean, este estado desaparece.
Sin estado (stateless)
No mantiene un estado conversacional con el cliente: los valores de sus variables de instancia solo se
mantienen durante la invocación de un método. Excepto durante la invocación de un método, todas las
instancias de los beans sin estado son equivalentes, permitiendo al contenedor de EJB asignar una instancia a
cualquier cliente. Ofrecen mejor escalabilidad para aplicaciones que soportan un gran número de clientes y
son los únicos que soportan la implementación de servicios Web
Cuando utilizar los Beans de Sesión
En general, se deben utilizar beans de sesión siempre que se den las siguientes circunstancias:
En cualquier momento, solo un cliente tiene acceso a la instancia del bean
El estado del bean no es persistente, existiendo solo por un corto período de tiempo
El bean implementa un servicio Web
Un bean de sesión es apropiado si alguna de las siguientes condiciones son verdaderas:
El estado del bean representa la interacción entre el bean y un cliente específico
El bean necesita mantener información del cliente entre diferentes invocaciones de métodos
El bean media entre el cliente y otros componentes de la aplicación representando una vista simplificada
para el cliente
El bean orquestra el flujo de varios EJBs
Para mejorar el desempeño deberíamos utilizar bean sin sesión si se da alguna de las situaciones siguientes:
El estado del bean no contiene datos para un cliente específico
Con la invocación de un método, el bean realiza una tarea genérica para todos los clientes (por ejemplo el
envío de un correo electrónico de confirmación)
8. Desarrollo de Aplicaciones Web con J2EE
Ing. Pablo Cesar Ttito C.
InfomixUnitek@gmail.com
Definiendo el acceso de los clientes mediante interfaces
Los clientes solo pueden acceder a un bean de sesión solo invocando los métodos definidos en una interfaz.
Las interfaces de negocio definen la vista cliente del bean, quedando ocultos la implementación de los
métodos o los parámetros de despliegue.
Las interfaces bien diseñadas simplifican el desarrollo y mantenimiento de las aplicaciones Java EE. Las
interfaces claras no solo protegen al cliente de las complejidades de las clases que implementan el EJB, sino
que permiten a los beans cambiar internamente sin afectar a los clientes (desacoplan al cliente de la
implementación del EJB).
Cuando se diseña una aplicación Java EE, una de las decisiones más importantes es el tipo de acceso que va a
tener el EJB: local, remoto o servicio Web.