Programación B
Programación Orientada a Objetos
Ingeniería en Informática
Universidad FASTA
Ing. Luis Buffoni
Lic. Claudio Gea
Java: Desarrollo de Rich Internet Applications (RIAs)
RIA – Rich Internet Application
Características
“Aplicación web-based tan interactiva y responsive
como una aplicación desktop tradicional”
Aprovechamiento de lo mejor de dos mundos:
• Riqueza de la Experiencia de Usuario (UX) de aplicaciones desktop:
Drag/Drop, Copy/Paste, redimensionar columnas, ordenar datos...
• Amigabilidad de las UI web
• Flexibilidad de presentación de las páginas web
• Basado en arquitectura Cliente / Servidor:
o Requerimientos de hardware mínimos del lado Cliente
o Facilidad de deployment y de accesibilidad
Universidad FASTA – Programación B 2
Arquitectura Cliente / Servidor
Universidad FASTA – Programación B 3
Arquitectura Cliente / Servidor
Componentes
• Cliente
o Maneja la interacción del usuario con la Interfaz de Usuario (UI)
o Realiza las peticiones de datos al servidor y controla cómo se presentan los datos
o El cliente es siempre el que inicia el diálogo haciendo una petición al servidor
• Servidor
o Ofrece servicios para manejar y procesar y dar respuesta a peticiones de los
Clientes
o Realiza acciones en el servidor: actualiza BD, ejecuta procesos…
o Determina y da formato a los datos a ser retornados al Cliente
• Red / Protocolos
o Conjunto de clientes y servidores unidos, de una manera física o no física, en el
que existen protocolos de transmisión de información claramente establecidos
o Protocolos: HTTP, FTP, SSH, DNS, SMTP, etc.
Universidad FASTA – Programación B 4
Arquitectura Cliente / Servidor
Ventajas
Features Description
Encapsulation of services The server is a specialist: when given a message requesting a service, it determines how
to get the job done. Servers can be upgraded without affecting clients as long as the
published message interface used by both is unchanged.
Integrity The code and data for a server are centrally maintained, which results in cheaper
maintenance and the protection of shared data integrity. At the same time, clients
remain personal and independent
Location transparency The server is a process that can reside on the same machine as a client or on a different
machine across a network. Client/server software usually hides the location of a server
from clients by redirecting service requests. A program can be a client, a server, or both
Message-based exchanges clients and servers are loosely-coupled processes that can exchange service requests
and replies using messages
Platform independence the ideal client/server software is independent of hardware or operating system
platforms, allowing you to mix client and server platforms. Clients and servers can be
deployed on different hardware using different operating systems, optimizing the type of
work each performs.
Separation of Client/Server client/server systems can be scaled horizontally or vertically. Horizontal scaling means
Functionality adding or removing client workstations with only a slight performance impact. Vertical
scaling means migrating to a larger and faster server machine or adding server
machines.
Universidad FASTA – Programación B 5
RIA con Vaadin
Características
Arquitectura Cliente/Servidor
– Thin Client: No hay lógica en el Cliente
• No hay eventos semánticos: el Cliente no dice “borrar este
usuario”
• Sólo informa “fue presionado el botón 83”: evento low level
– Sólo el Servidor conoce lo que ese click significa
semánticamente
– La lógica de la aplicación se encuentra únicamente del
lado del Servidor
Universidad FASTA – Programación B 6
RIA con Vaadin
Características
Web framework maduro para el desarrollo de RIAs
– Aplicaciones tan responsive e interactivas como una
aplicación Desktop
– Mínima recargas de páginas, intercambio de partes de
una página vía AJAX
– Desarrollar GUIs web-based es tan cómodo y rápido
como desarrollar aplicaciones Desktop
Un único lenguaje de programación: Java.
– No es necesario tener conocimiento de tecnologías web
como JavaScript o HTML en el front-end
Universidad FASTA – Programación B 7
Arquitectura Vaadin
Componentes y su distribución
Corre en el browser
Mantiene la lógica de la
Desarrollador sólo programa
Escrito en JavaScript UI y el estado de cada lógica UI y backend
Renderiza UI, recibe cliente.
Cualquier cosa antes de
interacción del
Corre la lógica de la esta capa le es transparente
usuario y envía al aplicación
Se despreocupa del uso de
servidor eventos low-
Cada componente del tecnologías web (HTML,
level lado del servidor JavaScript) y de la
La lógica de la (Button, TextField, comunicación C/S (HTTP,
aplicación no está Table, etc.) tiene una AJAX, JSON serialization,
distribuida entre el contraparte en el lado sessions)
cliente y el servidor cliente (“widget”)
Sólo utiliza la API Java de
Universidad FASTA – Programación B los componentes 8
Arquitectura Vaadin
Modelo dirigido por Eventos
Universidad FASTA – Programación B 9
Vaadin
Fortalezas
Desarrollo rápido de aplicaciones web como si fueran
aplicaciones desktop
Curva de aprendizaje plana: sólo Java
Paradigma conocido de programación de la UI dirigida por
eventos
Los problemas específicos de la programación web son
transparentes para los desarrolladores
Completo y sofisticado conjunto de componentes con
mecanismos de enlace de datos
Buena documentación, comunidad de desarrolladores
muy activa
Universidad FASTA – Programación B 10
Vaadin
Debilidades
Escalabilidad
Server reducido a proveer datos
Menor requerimiento de memoria
y de procesamiento en Server
Puede escalar muy bien con alto
tráfico
El estado y lógica de la UI se
mantienen en el Server para
cada Cliente
Al aumentar el número de
clientes, aumenta la memoria
para mantener estado de cada UI
Alto tráfico / Servidor muy
ocupado
Universidad FASTA – Programación B 11
Vaadin
Debilidades
GUIs bastante básicas
SEO (Search Engine Optimization)
– Como Vaadin carga contenido de forma asíncrona a
través de JavaScript en una sola URL, el SEO es
complicado
– Existen trucos y bibliotecas para que su contenido esté
disponible para los buscadores, pero definitivamente
requieren esfuerzos adicionales y el resultado puede no
ser tan flexible
– Si SEO es un requisito fundamental, Vaadin (o SPA en
general) no son la mejor opción.
Universidad FASTA – Programación B 12
Maven + Spring + Vaadin
Una trilogía interesante
Maven
– Herramienta para construir y administrar cualquier proyecto
basado en Java
– Facilita el proceso de construcción a través de un modelo uniforme
• POM – Project Object Model
– Permite migración/actualización transparente a nuevas
funcionalidades
– Proporciona pautas de “mejores prácticas” para la construcción y
desarrollo de proyectos
Universidad FASTA – Programación B 13
Maven + Spring + Vaadin
Una trilogía interesante
Spring
– Framework de código abierto para desarrollo de aplicaciones
Java
– Contenedor de Inversión de Control
Instancia, inicializa y conecta objetos de la aplicación
Gestiona el tiempo de vida de los objetos
Los objetos creados y gestionados por el Contenedor se
denominan beans
– Inyección de Dependencias
Patrón de diseño orientado a objetos en el que se suministran
objetos a una clase en lugar de ser la propia clase la que crea
dichos objetos
Universidad FASTA – Programación B 14
Spring
Ventajas
Inversión de Control
No se crean los objetos con new, si no que las dependencias se declaran
en un fichero de configuración o mediante anotaciones
La anotación @Autowired inyecta dependencias logrando un bajo acoplamiento
entre los componentes
POJO - Plain Old Java Objects
Instancia de una clase simple, que no extiende ni implementa nada en
especial y que no dependen de un framework en especial.
Surge en oposición al modelo planteado por los estándares EJB, en los que
los Enterprise JavaBeans (EJB) debían implementar interfaces especiales.
Inyección de Dependencias + POJO + JUnit
Facilidad de testing
Universidad FASTA – Programación B 15