Está en la página 1de 20

Tema 1: Introducción al Desarrollo de

Aplicaciones Empresariales
Índice

n  Aplicaciones empresariales


n  Desarrollo ágil
n  Tecnologías Java estándares para desarrollo ágil
n  Tecnologías Java POJO para desarrollo ágil
n  Desarrollo ágil de servicios Web
n  Alternativas a las tecnologías Java

1-2
Aplicaciones empresariales
n  En la asignatura “Internet y Sistemas
Distribuidos” (ISD) se estudiaron técnicas de diseño y
tecnologías para la construcción de aplicaciones
empresariales
n  Para el desarrollo de la capa modelo
n  Para el desarrollo de la capa de servicios remotos (y la
de acceso)
n  Se proporcionó una introducción al desarrollo de la
interfaz de usuario (IU) de una aplicación Web

1-3
Arquitectura típica de una aplicación local

Capa IU
Aplicación local
(ordenador, Capa Acceso
móvil, tablet) Servicio

Red

Capa de servicios
Servidor
de aplicaciones
Capa modelo

Servicio Web

BD

1-4
Arquitectura típica de una aplicación Web

Servidor
de aplicaciones

Navegador Red Capa IU Web

Capa Modelo

Aplicación Web

BD

1-5
Desarrollo ágil (1)
n  Para reducir costes (horas de desarrollo) y dar un
tiempo rápido de respuesta a las necesidades del
negocio, es vital poder desarrollar aplicaciones
ágilmente
n  En poco tiempo
n  Con buenos principios de ingeniería
n  Los principios de diseño y tecnologías estudiados en
ISD para el desarrollo de la capa modelo y la capa IU
de una aplicación Web son correctos (¡son la base!),
pero por sí solos no permiten desarrollar ágilmente

1-6
Desarrollo ágil (2)
n  Capa modelo
n  Por cada entidad, es necesario desarrollar un DAO desde
cero con la API de JDBC => repetitivo y tedioso
n  Por cada DAO, es necesario construir una factoría =>
repetitivo
n  En la implementación de cada caso de uso, es necesario
codificar la gestión de conexiones y transacciones =>
repetitivo

1-7
Desarrollo ágil (3)
n  Capa IU Web
n  Por cada página, es necesario construir un servlet y una
plantilla JSP
n  En cada página, necesitamos tratar aspectos recurrentes
(repetitivos)
n  Gestión de layout
n  Tratar errores en formularios
n  Internacionalización (i18n)
n  Visualización de listas de datos
n  Seguridad
n  Etc.

1-8
Desarrollo ágil (y 4)
n  Conclusión
n  Necesitamos técnicas de diseño adicionales
n  Necesitamos tecnologías que automaticen los aspectos
recurrentes que surgen en la implementación de una
aplicación empresarial

1-9
Tecnologías Java estándares para desarrollo ágil (1)

n  Forman parte de Java EE (Enterprise Edition)


n  Capa modelo
n  JPA (Java Persistence API)
n  API estándar para mapeadores objeto-relacional
n  Un mapeador objeto-relacional permite gestionar la
persistencia de entidades a una BD relacional sin necesidad de
que el desarrollador tenga que tratar con la API de JDBC
n  Internamente el mapeador se apoya en la API de JDBC
n  Permite buscar, insertar, actualizar o borrar una entidad
automáticamente
n  Permite realizar consultas avanzadas para recuperar el
conjunto de entidades que cumplen un determinado criterio

1 - 10
Tecnologías Java estándares para desarrollo ágil (2)

n  Capa modelo (cont)


n  EJB (Enterprise JavaBeans)
n  Incluye varias abstracciones, en particular, Session Beans
n  Un Session Bean corresponde a un servicio del modelo, con
su interfaz y su clase de implementación
n  El desarrollador implementa los casos de uso (métodos)
n  Sin tener que codificar la gestión de transacciones
n  Declara la transaccionalidad de cada método

n  Capa IU Web


n  JavaServer Faces
n  Tecnología Java estándar para la implementación de interfaces
Web
n  Internamente se apoya en la API de Servlets
n  Es posible usar varios sistemas de plantillas (e.g. JSP)

1 - 11
Tecnologías Java estándares para desarrollo ágil (3)

n  Un servidor de aplicaciones Java EE incluye, entre


otras muchas tecnologías, una implementación de
JPA, EJB y JSF
n  IBM WebSphere Application Server: http://www.ibm.com
n  Oracle WebLogic Server: http://www.oracle.com
n  GlassFish: https://glassfish.java.net
n  WildFly: http://wildfly.org
n  Dado que las APIs son estándares, se minimiza
el impacto en caso de cambio de servidor de
aplicaciones
n  El cambio sólo debería afectar a aspectos de configuración

1 - 12
Tecnologías Java estándares para desarrollo ágil (y 4)

Servidor de aplicaciones Java EE

Aplicación Web

Capa IU Capa
Navegador BD
Web modelo

JSF EJB JPA

Servlets JDBC

Cualquier SO con soporte para Java


(e.g. Windows, Linux, Solaris, Mac, etc.)

1 - 13
Tecnologías Java POJO para desarrollo ágil (1)

n  Las primeras versiones de EJB (1.x y 2.x) y JSF (1.x) fueron
muy criticadas debido a su falta de agilidad de desarrollo, y en
el caso de EJB, incluso por su ineficiencia
n  Además, las APIs estándares no siempre representan “las
mejores ideas” sobre cómo hacer las cosas ni tienen todo lo que
el desarrollador necesita “justo ahora”
n  Esto dio pie a la comunidad Java, especialmente, a la
comunidad Open Source, a desarrollar frameworks alternativos
n  A estos frameworks se les suele etiquetar con la palabra POJO
(Plain Old Java Object)
n  Se dice que un framework sigue el enfoque POJO cuando
promueve un enfoque sencillo de desarrollo
n  Los frameworks POJO han influido fuertemente en las nuevas
versiones de EJB y JSF

1 - 14
Tecnologías Java POJO para desarrollo ágil (2)

n  Capa modelo


n  Mapeadores objeto-relacional
n  Hibernate (http://www.hibernate.org) y mybatis (http://
www.mybatis.org)
n  Internamente utilizan JDBC
n  Nosotros utilizaremos Hibernate
n  Implementa JPA, pero también dispone de su API propia (que
permite tratar aspectos que no cubre JPA)
n  Spring Framework
n  http://projects.spring.io/spring-framework
n  Alternativa al uso de los Session Beans de EJB
n  Permite implementar los servicios de la capa modelo sin tener
que tratar con la gestión de transacciones
n  El desarrollador declara la transaccionalidad de cada método
n  Evita la necesidad de definir factorías
n  Integración con JUnit

1 - 15
Tecnologías Java POJO para desarrollo ágil (3)

n  Capa IU Web


n  Spring MVC (parte de Spring Framework)
n  Struts
n  http://struts.apache.org
n  Tapestry
n  http://tapestry.apache.org
n  Es el framework Web que usaremos
n  Wicket
n  http://wicket.apache.org
n  Internamente se apoyan en la API de Servlets

1 - 16
Tecnologías Java POJO para desarrollo ágil (4)

Servidor de aplicaciones

Aplicación Web

Capa IU Capa
Navegador BD
Web modelo BD

Tapestry Spring Hibernate

Servlets JDBC

Cualquier SO con soporte para Java


(e.g. Windows, Linux, Mac, Solaris, etc.)

1 - 17
Tecnologías Java POJO para desarrollo ágil (y 5)

n  Es posible usar los frameworks POJO tanto en un


servidor de aplicaciones “ligero” como en uno que
implemente todas las APIs de Java EE
n  Un servidor de aplicaciones “ligero” es uno que únicamente
proporciona la API de Servlets, y quizás también JSP
n  Ejemplos:
n  Apache Tomcat: http://tomcat.apache.org
n  Jetty: http://www.eclipse.org/jetty
n  En consecuencia, el código tampoco está atado a un
servidor de aplicaciones específico

1 - 18
Desarrollo ágil de servicios Web
n  Cuando la capa modelo debe ser accedida
remotamente desde la capa IU (e.g. aplicación local,
capa modelo usada desde distintas aplicaciones,
etc.), podemos desarrollar servicios Web ágilmente
con
n  JAX-WS (SOAP)
n  Se estudió en ISD
n  JAX-RS (REST)
n  Se estudia en “Integración de Aplicaciones”
n  Ambos estándares forman parte de Java EE y existen
diversas implementaciones para poder usarlos en servidores
de aplicaciones ligeros

1 - 19
Alternativas a las tecnologías Java

n  .NET
n  http://www.microsoft.com/net
n  LAMP
n  http://www.onlamp.com
n  Ruby on Rails
n  http://rubyonrails.org
n  Framework Web para el lenguaje Ruby (http://www.ruby-
lang.org)
n  Gran énfasis en agilidad
n  Relaja la división en capas
n  Convenciones de nombrado
n  Generación de código prototipo/plantilla (“scaffolding”)
n  Ha tenido impacto en el diseño de muchos frameworks Java
POJO modernos
n  Node.js
n  http://nodejs.org
1 - 20

También podría gustarte