You are on page 1of 33

Tema 1: Introduccin a las

Tecnologas Java
ndice
Caractersticas de las aplicaciones empresariales
Tecnologas Java
Alternativas a las tecnologas Java
XML
Material de clase
Caractersticas de las aplicaciones empresariales (1)
Acceso a bases de datos (BBDD)
Normalmente con BBDD relacionales
Transaccionales
Propiedades ACID (Atomicity-Consistency-Isolation-Durability)
Escalables
Deberan poder soportar ms carga de trabajo sin necesidad de
modificar el software (slo aadir ms mquinas)
Disponibilidad
Idealmente no deben dejar de prestar servicio
Seguras
No todos los usuarios pueden acceder a la misma funcionalidad
Integracin
Es preciso integrar aplicaciones construidas con distintas
tecnologas
Caractersticas de las aplicaciones empresariales (2)
Tipo de interfaz
De entorno de ventanas (clientes de escritorio)
Normalmente slo tiene sentido en intranets
Web
En Internet y en intranets
Suele ser la opcin preferida, dado que no es preciso instalar
nada en las mquinas cliente (basta que tengan un navegador)
=> facilitad de instalacin y mantenimiento
La interfaz no es tan interactiva como la de las aplicaciones de
escritorio
Caractersticas de las aplicaciones empresariales (y 3)
Separacin clara entre las capas interfaz grfica y modelo
Capa modelo
Conjunto de clases que implementan la lgica de negocio de los
casos de uso de la aplicacin, normalmente utilizando una BD
Independiente de la interfaz grfica
Ejemplo => aplicacin bancaria
Capa modelo: conjunto de clases que implementan los casos de uso
(e.g. crear cuentas, destruirlas, encontrarlas por distintos criterios, etc.)
contra la BD
Ventajas potenciales de la separacin
Cada capa puede ser desarrollada por una persona con un perfil
distinto
Es posible reusar la capa modelo en distintas interfaces grficas
Arquitecturas multi-capa
Siguientes transparencias
Una aplicacin con clientes de escritorio
Arquitectura en dos capas (1)
Intranet
Int.
grfica
Modelo
Capa 1 Capa 2
Int.
grfica
Modelo
Int.
grfica
Modelo
Base de
datos
Una aplicacin con clientes de escritorio
Arquitectura en dos capas (y 2)
Problema
Cambios en la implementacin de la capa modelo =>
recompilacin de toda la aplicacin y reinstalacin en
mquinas cliente
Cambios de librera de acceso a la BD
Cambios en la lgica del modelo
Solucin
Modelo en servidor intermedio
Un cambio en la implementacin del modelo slo afecta al
servidor
Clientes de escritorio
Slo disponen de la interfaz grfica
Acceden al servidor que implementa el modelo
Una aplicacin con clientes de escritorio
Arquitectura en tres capas (1)
Intranet
Capa 2 Capa 3 Capa 1
Int.
grfica
Int.
grfica
Int.
grfica
Modelo
Serv. modelo
Base de
datos
Una aplicacin con clientes de escritorio
Arquitectura en tres capas (y 2)
Problema
Cambios en la implementacin de la interfaz grfica =>
recompilacin de la aplicacin cliente y reinstalacin en
mquinas cliente
Por este motivo, cuando es posible, es preferible
decantarse por una interfaz Web
Una aplicacin Web
Arquitectura en tres capas (1)
Internet/
Itranet
Capa 2 Capa 3
Navegador
Int.
Web
Modelo
Navegador
Capa 1
Navegador
Base de
datos
Serv. ap. Web
Una aplicacin Web
Arquitectura en tres capas (y 2)
Las aplicaciones Web se instalan en servidores de
aplicaciones
Cambios en la interfaz grfica o en la capa modelo, slo
requieren reinstalar la aplicacin en el servidor de aplicaciones
Los servidores de aplicaciones suelen tener soporte para
escalabilidad y disponibilidad
Se pueden replicar en varias mquinas (pool de mquinas)
Se emplea un balanceador de carga
Recibe todas las peticiones HTTP
Enva cada peticin HTTP a uno de los servidores de aplicaciones
Escalabilidad
Para atender ms peticiones => hay que aadir ms mquinas al pool
Disponibilidad
Si una mquina se cae, todava quedan otras instancias del servidor de
aplicaciones en el pool
Una aplicacin Web
Arquitectura en cuatro capas (1)
Internet/
Intranet
Capa 2 Capa 3 Capa 4
Int.
Web
Modelo
Navegador
Navegador
Capa 1
Base de
datos
Serv. ap. Web
Serv. modelo
Navegador
Una aplicacin Web
Arquitectura en cuatro capas (y 2)
Esta arquitectura es muy til cuando la interfaz grfica y la capa
modelo estn construidas con tecnologas diferentes
Ejemplo
Existe una capa modelo desarrollada en COBOL
La capa modelo es grande, funciona correctamente, lleva muchos
aos funcionando y mantenindose
Se desea construir una aplicacin Web para poder invocar casos de
uso de la capa modelo desde un navegador
Se elige una tecnologa moderna para implementar la interfaz Web
fcilmente (e.g. Java)
No es viable volver a construir la capa modelo en la misma
tecnologa que la usada en la interfaz Web (tiempo, coste, razones
tecnolgicas, etc.)
Solucin: invocar los casos de uso de la capa modelo remotamente
(e.g. sockets) desde la interfaz grfica
Tecnologas estndares Java
Sun, con la ayuda de otros fabricantes (IBM, Oracle, etc.), estandariza
un conjunto de APIs para el desarrollo de aplicaciones Java
La mayor parte de las abstracciones de las APIs corresponden a interfaces y
clases abstractas
Existen mltiples implementaciones de distintos fabricantes, incluso
muchas Open Source
Una aplicacin construida con estas APIs no depende de una implementacin
particular
Java SE (Java Platform, Standard Edition)
API bsica + herramientas bsicas (mquina virtual, compilador, etc.)
Anteriormente conocida como J2SE
http://java.sun.com/javase
Java ME (Java Platform, Micro Edition)
API anloga a Java SE para mviles y otros dispositivos (PDAs, TV set-top
boxes, etc.)
Anteriormente conocida como J2ME
http://java.sun.com/javame
Java EE (Java Platform, Enterprise Edition)
Se apoya en Java SE y dispone de APIs para la construccin de aplicaciones
empresariales (inclusive aplicaciones Web)
Anteriormente conocida como J2EE
http://java.sun.com/javaee
Acceso a BBDD en Java SE
mbito: capa modelo
API: JDBC (Java DataBase Connectivity)
Posibilita el acceso a bases de datos relacionales
El programador puede lanzar consultas (lectura,
actualizacin, insercin y borrado), agrupar consultas
en transacciones, etc.
Estudiaremos sus principios bsicos en el apartado
3.1
Tecnologas capa modelo en Java EE
EJB (Enterprise Java Beans)
JPA (Java Persistence API)
API estndar para un mapeador objeto-relacional Java
Mapeo automtico de clases persistentes (llamadas
entidades) a una BD relacional
Ejemplo: aplicacin bancaria que maneje cuentas y operaciones
bancarias
Existen dos clases persistentes: Account y AccountOperation
Las instancias se mapean automticamente a filas de las tablas
correspondientes (una tabla por cada entidad)
Las implementaciones de JPA internamente utilizan JDBC
El uso de JDBC es transparente al desarrollador
Session Beans
Permiten implementar los casos de uso
Pueden tener interfaz local y/o remota
Permiten especificar declarativamente las polticas de
transacciones y seguridad
Es posible utilizar JPA al margen del resto de EJB
Tecnologas interfaz Web en Java EE
API bsica: Servlets
APIs que funcionan por encima de la API de servlets:
JSP (JavaServer Pages)
JSTL (JSP Standard Tag Library)
JSF (JavaServer Faces)
BD
Aplicacin
Web (int. grf.
+ modelo )
Servidor de
Aplicaciones
Navegador
JDBC
Servlets
JSP JSTL JSF
Implementaciones de Java EE
Existen un gran nmero de fabricantes que venden
servidores de aplicaciones certificados Java EE
Lista completa en
http://java.sun.com/javaee/overview/compatibility.jsp
Algunos ejemplos
BEA WebLogic Server: http://www.bea.com
IBM WebSphere Application Server: http://www.ibm.com
Oracle Application Server: http://www.oracle.com
Implementaciones de Java EE (y 2)
Implementaciones Open Source
Jetty: http://www.mortbay.org/jetty
Servidor de aplicaciones Web con soporte slo para Servlets y JSP
Tomcat: http://tomcat.apache.org
Servidor de aplicaciones Web con soporte slo para Servlets y JSP
JBoss Application Server: http://www.jboss.com
Servidor de aplicaciones con soporte completo para Java EE
GlassFish: https://glassfish.dev.java.net
Servidor de aplicaciones con soporte completo para Java EE
Geronimo: http://geronimo.apache.org
Servidor de aplicaciones con soporte completo para Java EE
Portabilidad
Si una aplicacin usa slo las APIs estndares => es posible
instalarla en cualquier servidor de aplicaciones Java EE
No se depende de un fabricante!
Tecnologas Java POJO (1)
Durante los ltimos aos, algunas de las APIs de
Java EE han sido muy criticadas
Especialmente las APIs de ms alto nivel, y en particular,
EJB (capa modelo) y JSF (interfaz Web)
Difciles de usar
No siempre representan las mejores ideas sobre cmo
hacer las cosas
Las APIs estndares no siempre tienen todo lo que el
desarrollador necesita
Las mejoras tardan en llegar al desarrollador final
Las nuevas versiones de las APIs tardan en estandarizarse
Y despus hay que esperar a que haya implementaciones
robustas
Tecnologas Java POJO (2)
Durante los ltimos aos han surgido una gran cantidad de
frameworks que siguen el enfoque POJO
POJO = Plain Old Java Object
El trmino POJO surgi para hacer referencia a clases Java que
no tienen que cumplir unas restricciones tan complejas como las
que forzaba EJB 1.x y 2.x
Ejemplo: un entity bean (clase persistente) en EJB 1.x/2.x
Es preciso escribir dos interfaces y una clase de implementacin
La clase de implementacin no implementa las dos interfaces, sino
que tiene que proporcionar unos mtodos con una firma parecida
a los mtodos de esas dos interfaces
EJB 3 evolucion hacia el enfoque POJO, aunque quizs demasiado
tarde
Tecnologas Java POJO (y 3)
Idealmente, una clase POJO no tiene que implementar/usar
interfaces/anotaciones especficas al framework
En realidad, se dice que un framework sigue el enfoque POJO
cuando promueve un enfoque sencillo de desarrollo
En los frameworks ms conformes al paradigma POJO, es habitual
usar convenciones de nombrado y/o anotaciones, e implementar
interfaces especficas en pocas ocasiones
Frameworks POJO Open Source para capa modelo
Hibernate e iBatis
http://www.hibernate.org
http://ibatis.apache.org
Mapeadores objeto-relacional
Internamente utilizan JDBC
Nosotros utilizaremos Hibernate
Implementa JPA, pero tambin dispone de su API propia (que permite
tratar aspectos que no cubre JPA)
Spring
http://www.springframework.org
Soporte para capa modelo e interfaz Web
Simplifica el uso de muchas de las APIs de Java EE
Dispone de alternativas a algunas de las APIs de Java EE
Internamente se apoyan en APIs de Java EE de ms bajo nivel
Nosotros utilizaremos el soporte de Spring para implementar casos
de uso
Alternativa al uso de los Session Bean de EJB
Frameworks POJO para interfaz Web (1)
Orientados a accin
Enfoque: procesar cada peticin HTTP individualmente
Struts
http://struts.apache.org
Spring
Orientados a componentes
Enfoque: modelar cada pgina Web como un componente
que puede reaccionar a diversos eventos
Tapestry
http://tapestry.apache.org
Wicket
http://wicket.apache.org
Seam
http://seamframework.org
Frameworks POJO para interfaz Web (y 2)
Slo requieren un servidor de aplicaciones Web Java
EE ligero (slo soporte de Servlets y JSP)
Nosotros usaremos Tapestry 5.x
Internamente slo se apoya en la API de Servlets
Nuestro entorno de desarrollo (1)
Servidor de aplicaciones
Navegador
BD
Servlets
Cualquier SO con soporte para Java
(e.g. Windows, Linux, Mac, Solaris, etc.)
Tapestry
JDBC
Hibernate Spring
Interfaz
Web
Capa
modelo
Aplicacin Web
Nuestro entorno de desarrollo (2)
Como servidor de aplicaciones utilizaremos
Jetty para desarrollo
Tomcat para produccin
Es posible utilizar cualquier otro servidor de aplicaciones
Java
Como BD utilizaremos
MySQL (http://mysql.com)
Es posible utilizar cualquier otra BD soportada por Hibernate
Nuestro entorno de desarrollo (y 3)
Adems, usaremos
Maven
http://maven.apache.org
Para automatizar la construccin del software (inclusive la
ejecucin de pruebas de integracin de la capa modelo)
Subversion
http://subversion.tigris.org
Repositorio de control de versiones
Eclipse
http://www.eclipse.org
Es posible utilizar otro IDE
Ubuntu en el laboratorio
Es posible utilizar cualquier otro sistema operativo con soporte
para Java
Alternativas a las tecnologas Java (1)
.NET
http://www.microsoft.com/net
Define un Common Language Runtime (CLR) y un IL (Intermediate
Language) al que todos los lenguajes conformes a .NET compilan
Idea similar a la mquina virtual de Java y a los bytecodes generados
por el compilador de Java, respectivamente
Lenguajes
Visual C# .NET, Visual Basic .NET, etc.
Tecnologas
ADO.NET: para capa modelo
ASP.NET: para interfaz Web
Alternativas a las tecnologas Java (y 2)
LAMP
http://www.onlamp.com
Linux + Apache + MySQL + Perl/PHP/Python
Ruby on Rails
http://www.rubyonrails.org
Framework Web para el lenguaje Ruby (http://www.ruby-
lang.org)
XML (1)
Qu es XML?
XML (eXtensible Markup Language)
Lenguaje de tags (similar en sintaxis a HTML)
Estandarizado por el W3C (http://www.w3.org)
Es extensible:
XML no impone un conjunto de tags, sino slo unas pocas normas sobre
cmo usarlos
Permite expresar informacin estructurada y fcilmente parseable
Ejemplo: informacin metereolgica
<?xml version=1.0>
<forecasts>
<city name="COR">
<forecast type="sunny" day="1" month="10" year="2008"/>
<forecast type="foggy" day="2" month="10" year="2008"/>
</city>
<city name="LUG">
<forecast type="rainy" day="1" month="10" year="2008"/>
<forecast type="rainy" day="2" month="10" year="2008"/>
</city>
...
</forecasts>
XML (y 2)
Campos de aplicacin que explotaremos
Los dos principales
Integracin de aplicaciones heterogneas
Ejemplo: en la prctica de la asignatura, la aplicacin Web .NET
acceder a datos de la aplicacin Web Java mediante XML sobre HTTP
Configuracin de aplicaciones
La mayor parte de la configuracin de los frameworks y herramientas
que usaremos est en formato XML
Todas las tecnologas modernas disponen de APIs para el
tratamiento de XML
En la asignatura ADOO se estudian APIs XML-Java, con nfasis
especial en la integracin de aplicaciones
Aplicacin Web Java Aplicacin Web .NET
Peticin HTTP
Respuesta HTTP
con los datos en XML
Material de clase
Pgina Web de la asignatura
http://www.tic.udc.es/is-java
Sitio Web de apoyo a la parte I de la asignatura (tecnologas
Java)
Transparencias y cdigo con los ejemplos
DVD de IS y ADOO
Contiene todo el software (para Linux, Windows y Mac)
para realizar las prcticas de las asignaturas
Integracin de Sistemas (Tecnologas Java)
Anlisis y Diseo Orientado a Objetos

You might also like