Html5, Rest, JSON, Angular JS y Java EE 7 - Aplicaciones Web Modernas y Escalables

40
Aplicaciones Web Modernas y Escalables 29 NOVIEMBRE 2014, PUCMM , SANTIAGO DE LOS CABALLEROS, R. D. @eudriscabrera @eudriscabrera EUDRIS CABRERA RODRÍGUEZ BARCAMP RD 2014 HTML5, REST, JSON, ANGULARJS Y JAVA EE 7

description

Mi presentación en el BarCamp RD 2014, celebrado el 29 de noviembre del 2014, Campus Pontificia Universidad Católica Madre y Maestra, Santiago de los Caballeros, República Dominicana.

Transcript of Html5, Rest, JSON, Angular JS y Java EE 7 - Aplicaciones Web Modernas y Escalables

Page 1: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Aplicaciones Web Modernas y Escalables

29 NOVIEMBRE 2014, PUCMM , SANTIAGO DE LOS CABALLEROS, R. D.

@eudriscabrera @eudriscabrera

EUDRIS CABRERA RODRÍGUEZBARCAMP RD 2014

HTML5, REST, JSON, ANGULARJS Y JAVA EE 7

Page 2: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

● Ingeniero Telemático | Consultor Desarrollador Informático en PAFI / Ministerio de Hacienda.

● Más de 7 años de experiencias en desarrollo de sistemas bajo Java SE y Java EE.

● Entusiasta de la tecnología y el software libre.● Miembro del equipo de desarrollo de Astive Toolkit http://astivetoolkit.org

Comunidades

● Github: @ecabrerar Google Groups: @letsrockjava

Sobre Eudris Cabrera Rodríguez

Page 3: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Agenda

● Definición de aplicaciones web modernas.

● Opciones disponibles en el mundo de Java.

● Como construir aplicaciones web modernas usando Java EE 7

○ Aspectos importantes de Java EE 7

○ AngularJS

○ Opciones para despliegue en la nube

○ Limitaciones y desafíos de Java EE 7

● Ejemplo Integración Java EE 7 con AngularJS

● Caso de Estudio: Miles2Run (http://www.miles2run.org)

Page 4: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Definición de Aplicaciones Web Modernas

● Expone servicios REST en formato JSON.

● Usa HTML 5.

● Aplicación web de una sola página (SPA).

● Sin estado (Stateless) para que pueda escalar horizontalmente.

● Usa OAuth.

● Adopta persistencia poliglota.

● Usa diseño web adaptable (Responsive Web Design).

● Orientada a la nube.

● Es social.

Page 5: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Ejemplo de persistencia poliglota

Cortesía de http://martinfowler.com/bliki/PolyglotPersistence.html

Page 6: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Opciones disponibles en el mundo de Java

● Java EE 7

● Spring Framework

● Google Web Toolkit

● Play Framework

● Spark Micro Web Framework

Page 7: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Como construir aplicaciones web modernas usando Java EE 7

● Los API de Java EE ofrecen un buen punto

de inicio para el desarrollo de este tipo de

aplicaciones.

● Los APIs CDI, JAX-RS, JPA son el corazón

de cualquier aplicación web moderna.

Page 8: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Como construir aplicaciones web modernas usando Java EE 7

REST API

Business Tier

RDBMS or

NoSQL

CDI JAX-RS JPA

Web SPA

Angular / HTML 5

Push Notifications

Page 9: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Aspectos importantes de Java EE 7

● Construido sobre la base de Java EE6.

● Desarrollo basado en estándares.

● Portabilidad a través de los servidores de aplicaciones

● Soporte para HTML5.

● Despliegue ligero

Page 10: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Plataforma Java EE 7

Page 11: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Un vistazo a algunos API de Java EE

Page 12: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

CDI 1.1 ---‐ Contexts and Dependency Injection

● Permite utilizar inyección de dependencia en el entorno Java EE sin

necesidad de utilizar librerías de terceros.

● El contenedor CDI gestiona el ciclo de vida de los componentes.

● CDI trae inyección de dependencias, contexto, alcances e interceptores.

Page 13: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

CDI 1.1:¿Qué hay de nuevo en Java EE 7?

Uno de los cambios más significativos de CD 1.1/Java EE 7, es que CDI está activada de forma predeterminada.

Ahora también proporciona un control más preciso sobre la exploración de componente mediante el atributo 'bean-discovery-mode', con sus tres posibles valores annotated, all y none.

Si no se especifica nada y no hay beans.xml, asume el modo 'annotated' de forma predeterminada.

Page 14: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

JPA (Java Persistence API)● Framework para manejar los datos de una base de datos relacional a un

mapeo de objeto (ORM).

● JPA proporciona un API para realizar operaciones de crear, consultar, actualizar y borrar en entidades.

● Una entidad es un POJO, cuyo estado es mapeado a una tabla de base de datos relacional.

● JPA también proporciona un lenguaje de consulta para hacer consultas en entidades almacenados en bases de datos relacionales.

Page 15: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

JPA(Java Persistence API)

Page 16: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Los elementos nuevos JPA 2.1:

● Soporte procedimientos almacenados

● Tipo de conversión

● Criteria Update / Delete

● Creación runtime named Queries

JPA 2.1--¿Qué hay de nuevo en Java EE 7?

Page 17: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Clase Entidad - JPA

Page 18: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Bean Validation

● Define un modelo de metadatos y una interfaz para la validación de JavaBeans.

● Validación basada en anotaciones

● Permite sobreescribir y extender estos metadatos por medio del uso de descriptores de validación en formato XML.

Page 19: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Ejemplo de Bean Validation

Page 20: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

¿Qué hay de nuevo en Java EE 7?

Bean Validation 1.1 estuvo enfocado en los siguientes temas:

● Validación a nivel de método (validación de parámetros o valores de

retorno)

● Inyección de dependencias para los componentes Bean Validation

● Integración con el contexto y la inyección de dependencias (CDI)

● Integración con JAX‐RS

Page 21: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Validación de métodos

Page 22: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Integración con CDI

Page 23: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

● Representational State Transfer (REST):

○ Servicio web sobre HTTP representado con JSON.

○ Estándar Flexible

○ Operaciones definidas, GET, POST, PUT y DELETE soportando un

CRUD.

Servicios Web REST

Page 24: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

JavaScript Object Notation: Es un formato ligero para el intercambio de datos.

Su simplicidad ha dado lugar a la generalización de su uso, especialmente como alternativa a XML como representación de objetos y es el estándar de facto para servicios REST.

JSON

Page 25: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

● API de Java para crear servicios web REST

● Simplifica el proceso de creación de servicios Web mediante Plain Old Java Objects (POJOS) y anotaciones.

● Mapea las peticiones HTTP con invocaciones de método Java

● Incluye anotaciones para implementar servicios Web: @Path, @Get, @Put, @Post, @Delete,@PathParam, @QueryParam @Produces, @Consumes, entre otros.

JAX-RS

Page 26: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Ejemplo Clase JAX-RS

Page 27: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

JAX-RS 2.0:

○ Introduce elementos que ayudan a la productividad.○ Simplifica el API○ Incluye los siguientes aspectos:

■ API para el Cliente■ Llamadas Asincrónicas vía Http■ Filtros e interceptores

¿Qué hay de nuevo en Java EE 7?

Page 28: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

AngularJS

● Extiende HTML para agregar dinamismo para que podamos construir

aplicaciones web modernas con facilidad.

● Enfoque declarativo

● Elimina la manipulación DOM por la vinculacion de datos en dos via.

● Ideal para la construcción de aplicaciones web de una página sencilla

Page 29: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Porque AngularJS ?

● Consta con el respaldo de Google y goza de una gran comunidad de

desarrolladores.

● Full Stack framework : Esto significa que no tengo que depender de otros

scripts con la incertidumbre de se integrarán perfectamente.

Page 30: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Principales Componentes de AngularJS

● Controlador (Controller): Código detrás de la vista.

● Alcance(Scope): Contiene los datos del modelo.

● Módulo(Module): Para definir los nuevos servicios o utilizar los servicios

existentes, directivas, filtros, etcétera.

● Directiva: le permite extender HTML definiendo sus directivas HTML

específica propia del proyecto.

Page 31: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

AngularJS en Acción

Page 32: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Opciones para despliegue en la nube

Page 33: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Limitaciones y desafíos de Java EE

● Java EE no tiene soporte proveedores

de OAuth como Twitter

● Diseñar para que tu aplicación trabaje

como Single SPA

● Los contenedores servlets no crean

sesiones cuando renderiza páginas

HTML 5

Page 34: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Código fuente de los ejemplos en GitHub

https://github.com/ecabrerar/javaee7-angular-barcamprd2014

Page 35: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Ejemplo Integración Java EE 7 con AngularJS

Un proyecto de ejemplo para demostrar el uso de Java EE 7 y AngularJS.

Technology Stack● Java EE 7 y JDK 7

– JPA,EJB,CDI,JAX--‐RS● MySQL● AngularJS● Twitter Bootstrap● Glassfish 4.0

https://github.com/ecabrerar/javaee7-angular-booklibrary

Page 36: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Caso de Estudio: Miles2Run

● Red social para corredores http://www.miles2run.org

● Aplicación que permite almacenar a los corredores sus actividades diarias

● Construida sobre Java EE 7

● Autenticación usando Twitter, Facebook y Google.

● Código disponible en https://github.com/miles2run/miles2run

Page 37: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

¿Preguntas?

Page 38: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

Asuntos Legales

Todas las marcas registradas, así como todos los logotipos, imágenes,

fotografías, audio y vídeos mostrados en esta presentación son propiedad

de sus respectivos propietarios y/o representantes.

Su utilización es solamente para fines ilustrativos.

Page 40: Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Escalables

@eudriscabrera

@eudris

@ecabrerar

@eudriscabrera

Eudris Cabrera Rodríguez Ingeniero Telemático

Desarrollador de Software / Consultor Informático

[email protected]

https://www.linkedin.com/in/eudriscabrera

http://www.slideshare.net/eudris

https://twitter.com/eudriscabrera

https://github.com/ecabrerar