SlideShare a Scribd company logo
1 of 103
Download to read offline
Introducción 
a Java EE 7 
#JavaEE7 
Carlos Camacho @ccamachog 
Eudris Cabrera @eudriscabrera 
14 Septiembre 2014, Universidad Abierta Para Adultos (UAPA) , Santiago, R. D.
Asuntos Legales 
Los conceptos y juicios de valor emitidos en esta presentación es 
responsabilidad personal y no se puede entenderse como una posición oficial 
de alguna empresa con la que hemos tenido relación laboral. 
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. 
Su utilización es solamente para fines ilustrativos y no pretendemos dar a 
entender cualquier afiliación con esas empresas.
Sobre Eudris Cabrera 
● 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, charlista, facilitador y colaborador en 
eventos tecnológicos para desarrolladores como Barcamp STI, Code Camp SDQ 4.0 y 
La Feria de Tecnología Educativa de (UAPA). 
● Miembro del equipo de desarrollo de Astive Toolkit http://astivetoolkit.org 
Comunidades 
● Github: @ecabrerar 
● Google Groups: @letsrockjava 
● LinkedIn: @eudriscabrera
Sobre Carlos Camacho 
● Ing. Telemático |Magíster Tecnología Educativa | Profesor Departamento Sistema, 
PUCMM. 
● Más de 8 años de experiencias en desarrollo de sistemas bajo Java SE y Java EE. 
● Fundación Código Libre, Santiago - Miembro Fundador | Coordinador de Sistemas, 
Reefer Services, S.A.S | Presidente, AvatharTech E.I.R.L. 
Comunidades 
● twitter: @ccamachog 
● LinkedIn: @ccamachog carlosalfredocamacho@gmail.com
Agenda 
● Breve Reseña sobre Java 
● Conceptos Generales sobre Java EE 
● Aspectos importantes de Java EE 7 
● Primeros pasos con Java EE 7 
● Cómo empezar con Java EE 7 
● Algunos APIs de Java EE7
Objetivos 
● Introducir los conceptos fundamentales de Java 
Enterprise Edition. 
● Destacar los aspectos más importantes de Java EE 7
Entendiendo el ecosistema Java 
● Plataforma Java: 
○ Multi-plataforma. 
○ Utiliza una máquina virtual para su ejecución 
(JVM) 
○ Esta dividida en: 
■ Java SE 
■ Java EE 
■ Java ME 
■ Javafx 
○ El estandar es manejado por Java Community 
Process (JCP) James Gosling, 
Creador de Java
Ecosistema Java 
● Popularidad del lenguaje Java por TIOBE 
Septiembre 2014, http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
!Java donde quiera¡ 
● 5 trillones SIMS y Smart Cards 
● 3 trillones dispositivos móviles. 
● 80 millones TV, incluyendo Blu-ray, printers, maquinas bancarias, eBooks 
Reader y Carros 
Trillones, representa el término inglés de 10^12, http://www.oracle.com/us/technologies/java/embedded/overview/index.html
Diferencia entre JAVA SE y JAVA EE 
JAVA SE es la versión estándar de java. Es la api base del lenguaje 
mientras que JAVA EE podríamos decir que es una versión extendida de 
JAVA SE. 
La plataforma Java EE consta de un conjunto de servicios, API y protocolos 
que proporcionan la funcionalidad necesaria para desarrollar aplicaciones 
basadas en la web de varios niveles. 
Java EE simplifica el desarrollo de aplicaciones y reduce la necesidad de 
programación, al proporcional componentes modulares normalizados y 
reutilizables, así como al permitir controlar muchos aspectos de la 
programación automáticamente por nivel.
Java Platform, Enterprise Edition (EE) 
● Es un entorno independiente de la plataforma centrado 
en Java para desarrollar, crear e implementar en 
línea aplicaciones empresariales basadas en web. 
● Es el estándar en software empresarial. 
● Se apoya ampliamente en componentes de software 
modulares ejecutándose sobre un servidor de 
aplicaciones.
Java EE 
Java EE 
Las razones que empujan a la creación de la 
plataforma Java EE: 
❖ Programación eficiente. 
❖ Extensibilidad frente a la demanda del negocio. 
❖ Integración.
Arquitectura de Java EE 
Arquitectura Java EE 
La arquitectura Java EE implica un modelo de aplicaciones distribuidas en 
diversas capas o niveles (tier). 
Niveles o Capas Java EE 
Cliente HTML, Applet, aplicaciones Java, etc. 
Web JSF, JSP, Servlet 
Negocio EJB, JPA, JAX-WS y JAX-RS Web services 
Sistema de 
JDBC, JTA, Java EE Connector, JPA 
Información 
Empresariales
Arquitectura de Java EE 
Arquitectura Java EE
Estructura de una Aplicación Empresarial 
Aplicación Empresarial multicapas
Servidores Java EE 
Es un servidor de aplicaciones que implementa los APIs de la plataforma Java 
EE y provee los servicios del estándar Java EE. 
Los servidores Java EE muchas veces son llamados servidores de 
aplicaciones, porque permiten servir datos a los clientes, de la misma forma 
que un servidor web permite servir páginas web a un browser. 
Un servidor Java EE puede alojar varios tipos de componentes 
correspondientes a una aplicación multi-capas. En este sentido, ofrece un 
entorno de ejecución estandarizado para estos componentes.
Servidores Java EE 
Servidores de aplicaciones certificados para Java EE 6
Servidores Java EE 
Popularidad
Contenedores Java EE 
Son la interfaz entre el componente y la funcionalidad de bajo nivel 
proporcionada por la plataforma para soportar ese componente. 
La funcionalidad del contenedor está definido por la plataforma, y es diferente 
para cada tipo de componente. 
No obstante, el servidor permite que los diferentes tipos de componentes 
puedan trabajar juntos para proporcionar funcionalidad en una aplicación 
empresarial.
Tipos de contenedores 
Contenedor Web: 
Maneja la ejecución de los Servlets y páginas JSP y JSF. 
Contenedor Cliente: 
Provee una interfaz de conexión entre el servidor Java EE y las aplicaciones 
clientes, tales como aplicaciones Java SE, entre otras. 
Contenedor EJB: 
Gestiona la ejecución de los Enterprise JavaBeans.
Tipos de contenedores
Evolución de Java EE
Java EE 6 cambió el juego .... 
● Más Ligero. 
● Introduce el concepto de perfiles (Web Profile and Full Profile). 
● EJB empaquetado en archivos war. 
● Servlet 3.0 
○ web.xml (opcional), @WebServlet, @WebFilter 
● Soporte para servicios web RESTful con JAX-RS 1.1 
● Contextos e Inyección de Dependencia (CDI) para Java EE
Java EE 7 productividad y enfocado en HTML5 
● Construido sobre la base de Java EE6. 
● Soporte para HTML5. 
● 4 nuevas especificaciones. 
● 3 especificaciones con 
cambios importantes. 
● 6 especificaciones con 
cambios menores. 
● 5 especificaciones con 
cambios micro.
Java EE 7 APIs
Plataforma Java EE 7
Java EE 7 APIs 
● Java EE 7 cubre las siguientes especificaciones: 
○ Java Persistence API 2.1 (JSR 338) 
○ Java API for RESTful Web Services 2.0 (JSR 339) 
○ Java Message Service 2.0 (JSR 343) 
○ JavaServer Faces 2.2 (JSR 344) 
○ Contexts and Dependency Injection 1.1 (JSR 346) 
○ Bean Validation 1.1 (JSR 349) 
○ Batch Applications for the Java Platform 1.0 (JSR 352) * 
○ Java API for JSON Processing 1.0 (JSR 353) * 
○ Java API for WebSocket 1.0 (JSR 356) * 
○ Java Transaction API 1.2 (JSR 907)
Cómo empezar con Java EE 7 ? 
Descargar e instalar: 
JDK 7(ó superior): 
http://www.oracle.com/technetwork/java/javase/downloads/index.html 
Instalar el IDE de su preferencia: 
NetBeans 7.4 o superior, versión completa o “Java EE” 
http://netbeans.org/downloads/ 
Eclipse 4.3 (Kepler) o superior 
http://www.eclipse.org/kepler/ 
Otros
Código fuente de los ejemplos en GitHub 
https://github.com/JavaDominicano/taller-javaee7-uapa-sti
Java EE 7 APIs 
● Java EE 7 cubre las siguientes especificaciones: 
○ Java Persistence API 2.1 (JSR 338) 
○ Java API for RESTful Web Services 2.0 (JSR 339) 
○ Java Message Service 2.0 (JSR 343) 
○ JavaServer Faces 2.2 (JSR 344) 
○ Contexts and Dependency Injection 1.1 (JSR 346) 
○ Bean Validation 1.1 (JSR 349) 
○ Batch Applications for the Java Platform 1.0 (JSR 352) * 
○ Java API for JSON Processing 1.0 (JSR 353) * 
○ Java API for WebSocket 1.0 (JSR 356) * 
○ Java Transaction API 1.2 (JSR 907)
Java Persistence API (JPA) 2.1 
● Framework para manejar los datos de una base de datos relacional a un 
mapeo de objeto. ORM. 
● Permite que nuestra aplicación no dependa de un vendedor de base de 
datos. 
● Representan una abstracción para manejar las diferentes 
implementaciones existentes: 
○ Hibernate. 
○ EclipseLink. 
○ OpenJPA.
Java Persistence API (JPA) 2.1
Java Persistence API (JPA) 2.1 
Clase Entidad - JPA
Java Persistence API (JPA) 2.1 
Archivo Persistencia - JPA
Java Persistence API (JPA) 2.1 
Insertando un Objeto
Java Persistence API (JPA) 2.1 
● Los elementos nuevos JPA 2.1: 
○ Soporte procedimientos almacenados 
○ Tipo de conversión 
○ Criteria Update / Delete 
○ Creación runtime named Queries. 
○ Entre otros.
Java EE 7 APIs 
● Java EE 7 cubre las siguientes especificaciones: 
○ Java Persistence API 2.1 (JSR 338) 
○ Java API for RESTful Web Services 2.0 (JSR 339) 
○ Java Message Service 2.0 (JSR 343) 
○ JavaServer Faces 2.2 (JSR 344) 
○ Contexts and Dependency Injection 1.1 (JSR 346) 
○ Bean Validation 1.1 (JSR 349) 
○ Batch Applications for the Java Platform 1.0 (JSR 352) * 
○ Java API for JSON Processing 1.0 (JSR 353) * 
○ Java API for WebSocket 1.0 (JSR 356) * 
○ Java Transaction API 1.2 (JSR 907)
RESTful WebServices 2.1 
● Representational State Transfer (REST): 
○ Arquitectura de sistema distribuido sobre el protocolo HTTP. 
○ Protocolo cliente / servidor sin estado. 
○ Operaciones definidas, GET, POST, PUT y DELETE soportando un 
CRUD. 
○ Identificador único para los recursos (URI).
RESTful WebServices 2.1 
● JAX-RS 1.0: 
○ Liberada en el 2008 para la versión Java EE 6. JSR-311 
○ Simplifica el proceso de creación de servicios Web mediante Plain Old 
Java Objects (POJOS) y anotaciones. 
○ No requiere configuración adicional para utilizarlos en entornos Java 
EE 6. 
○ Incluye anotaciones para implementar servicios Web: 
■ @Path, @Get, @Put, @Post, @Delete, @Produces, 
@Consumes, entre otros.
RESTful Web Services (JSR 339) 
JAX-RS 1.0: 
○ Liberada en el 2008 para la versión Java EE 6. JSR-311 
○ Simplifica el proceso de creación de servicios Web mediante Plain Old 
Java Objects (POJOS) y anotaciones. 
○ No requiere configuración adicional para utilizarlos en entornos Java 
EE 6. 
○ Incluye anotaciones para implementar servicios Web: 
■ @Path, @Get, @Put, @Post, @Delete, @Produces, 
@Consumes, entre otros.
RESTful Web Services (JSR 339) 
Ejemplo Clase JAX-RS
RESTful Web Services (JSR 339) 
● 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
RESTful Web Services (JSR 339) 
● Llamadas Asincrónicas vía Http (API Cliente Asincrónico) 
InvocationCallback<Response> callback = new InvocationCallback { 
public void completed(Response res) { 
System.out.println("Request success!"); 
} 
public void failed(ClientException e) { 
System.out.println("Request failed!");n 
} 
}; 
client.target("http://example.com/customers").queryParam("name", "Bill Burke") 
.request().async() 
.get(callback);
RESTful Web Services (JSR 339) 
● API para el Cliente 
Client client = ClientFactory.newClient(); 
WebTarget target = client.target("http://example.com/shop"); 
Form form = new Form().param("customer", "Bill") 
.param("product", "IPhone 5") 
.param("CC", "4444 4444 4444 4444"); 
Response response = target.request().post(Entity.form(form)); 
assert response.getStatus() == 200; 
Order order = response.readEntity(Order.class);
RESTful Web Services (JSR 339) 
● Llamadas Asincrónicas vía Http (Server-side Asincrónico Http) 
@Path("/listener") 
public class ChatListener{ 
List<AsyncResponse> listeners = ...some global list...; 
@GET 
public void listen(@Suspended AsyncResponse res) { 
list.add(res); 
} 
}
RESTful Web Services (JSR 339) 
● Interceptores 
@Provider 
//Codifica una salida con GZIP. 
public class GZIPEndoer implements WriterInterceptor { 
public void aroundWriteTo(WriterInterceptorContext ctx) throws IException, 
WebApplicationException { 
GZIPOutputStream os = new GZIPOutputStream(ctx.getOutputStream()); 
try { 
ctx.setOutputStream(os); 
return ctx.proceed(); 
} finally { 
os.finish(); 
} 
} 
}
RESTful Web Services (JSR 339) 
● Filtros
Java EE 7 APIs 
● Java EE 7 cubre las siguientes especificaciones: 
○ Java Persistence API 2.1 (JSR 338) 
○ Java API for RESTful Web Services 2.0 (JSR 339) 
○ Java Message Service 2.0 (JSR 343) 
○ JavaServer Faces 2.2 (JSR 344) 
○ Contexts and Dependency Injection 1.1 (JSR 346) 
○ Bean Validation 1.1 (JSR 349) 
○ Batch Applications for the Java Platform 1.0 (JSR 352) * 
○ Java API for JSON Processing 1.0 (JSR 353) * 
○ Java API for WebSocket 1.0 (JSR 356) * 
○ Java Transaction API 1.2 (JSR 907)
Java Message Service 2.0 (JSR 343) 
Este es un estándar de mensajería que permite a los componentes de 
aplicaciones basados en la plataforma Java crear, enviar, recibir y leer 
mensajes. 
● Permite comunicación confiable de manera síncrona y asíncrona. 
● JMS 1 fue desarrollada con la versión JDK 1.4 
● JSR 343: JMS 2.0, la nueva versión de la especificación JMS evoluciona y 
permite realizar funcionalidad que, antes, se realizaba en 20 líneas, en 6; 
por poner un simple ejemplo.
Java Message Service 2.0 (JSR 343)
Java Message Service 2.0 (JSR 343) 
El cambio más grande en JMS 2.0 es la introducción de una nueva API para 
enviar y recibir mensajes, que reduce la cantidad de código de un desarrollador 
debe escribir. 
Para aplicaciones JEE la nueva API también soporta la inyección de recursos. 
Esto permite que el servidor de aplicaciones gestiones los objetos JMS, lo que 
simplifica aún más la aplicación. 
JMS 2.0 es parte de la plataforma Java EE 7 y se puede utilizar en la Web o 
EJB aplicaciones Java EE, o se puede utilizar independiente en un entorno 
Java SE.
Java Message Service 2.0 (JSR 343) 
JMS 1.1
Java Message Service 2.0 (JSR 343) 
JMS 2.0
Java EE 7 APIs 
● Java EE 7 cubre las siguientes especificaciones: 
○ Java Persistence API 2.1 (JSR 338) 
○ Java API for RESTful Web Services 2.0 (JSR 339) 
○ Java Message Service 2.0 (JSR 343) 
○ JavaServer Faces 2.2 (JSR 344) 
○ Contexts and Dependency Injection 1.1 (JSR 346) 
○ Bean Validation 1.1 (JSR 349) 
○ Batch Applications for the Java Platform 1.0 (JSR 352) * 
○ Java API for JSON Processing 1.0 (JSR 353) * 
○ Java API for WebSocket 1.0 (JSR 356) * 
○ Java Transaction API 1.2 (JSR 907)
JavaServer Faces 2.2 (JSR 344) 
● Tecnología y Framework para el desarrollo de aplicaciones web en Java. 
● Incluye: 
○ APIs para el manejo de eventos, validar entradas, esquema de control 
de navegación 
○ Administración de estados. 
○ Basado en componentes 
○ Eventos gestionados desde el servidor 
● Disponible desde la versión 1.0, 2004 en Java EE 
● Existen librerías tipo extensiones para el manejo de componentes 
visuales: 
○ RichFaces 
○ ICEFaces 
○ PrimeFaces
JavaServer Faces 2.2 (JSR 344) 
● ¿Cómo trabaja JSF? 
○ Utiliza taglib los cuales están asociados a clases manejadoras. 
○ Todas las etiquetas son procesadas y presentada mediante HTML, 
mapeando cada etiqueta con su representación en el server. 
Codificación 
○ Cada petición es manejada vía POST y decodificado los valores 
para ser procesadas.
JavaServer Faces 2.2 (JSR 344) 
● Managed Beans 
○ Representan la separación de la vista con la regla de negocio. 
○ Son componentes reusables. 
○ Facilitan el procesamiento de la información desde el formulario al 
servidor y viceversa.
JavaServer Faces 2.2 (JSR 344) 
● Managed Beans
JavaServer Faces 2.2 (JSR 344) 
● JSF 2.2 
○ Pertenece al JEE 7. 
○ Cambio de espaciado de nombre. 
○ Incluye cambios en los siguiente aspecto: 
■ Soporte HTML5. 
■ Componente File Upload. 
■ Faces Flow. 
■ Protección sobre Cross Site Request Forgery 
■ Multi-Templating.
JavaServer Faces 2.2 (JSR 344) 
● JSF 2.2 - File Upload 
○ Incluye la etiqueta h:inputFile. Debe estar dentro de un form con el 
enctype “multipart/form-data” 
○ La propiedad del Bean es del tipo javax.servlet.http.Part.
JavaServer Faces 2.2 (JSR 344) 
● JSF 2.2 - File Upload
JavaServer Faces 2.2 (JSR 344) 
● JSF 2.2 - Soporte HTML5
Java EE 7 APIs 
● Java EE 7 cubre las siguientes especificaciones: 
○ Java Persistence API 2.1 (JSR 338) 
○ Java API for RESTful Web Services 2.0 (JSR 339) 
○ Java Message Service 2.0 (JSR 343) 
○ JavaServer Faces 2.2 (JSR 344) 
○ Contexts and Dependency Injection 1.1 (JSR 346) 
○ Bean Validation 1.1 (JSR 349) 
○ Batch Applications for the Java Platform 1.0 (JSR 352) * 
○ Java API for JSON Processing 1.0 (JSR 353) * 
○ Java API for WebSocket 1.0 (JSR 356) * 
○ Java Transaction API 1.2 (JSR 907)
Contexts and Dependency Injection 1.1 (JSR 346) 
La inyección de dependencias consiste en cargar las propiedades de los 
beans mediante su constructor o sus setters en el momento de iniciar la 
aplicación. 
Sin inyección de dependencias, cada clase llama al objeto que necesita en 
tiempo de ejecución. 
Mientras que con inyección de dependencias, cada objeto es cargado en 
cada clase que lo necesita en tiempo de inicialización. 
La forma habitual de implementar este patrón es mediante un "Contenedor DI"
Contexts and Dependency Injection 1.1 (JSR 346) 
En Java EE 6, era necesario agregar explícitamente un archivo beans.xml con 
el fin de habilitar escaneo CDI. 
La DI (Inyección de dependencia) se considera correctamente una 
preocupación generalizada, los desarrolladores de Java EE a menudo se 
encuentran con este requisito confuso. 
Uno de los cambios más significativos de CD 1.1/Java EE 7 es que por petición 
popular, el CDI está activada de forma predeterminada.
Contexts and Dependency Injection 1.1 (JSR 346) 
Esto significa que no hay necesidad de añadir explícitamente un archivo 
beans.xml para permitir DI. 
Sin embargo, también es muy importante entender que la CDI ahora también 
proporciona un control más preciso sobre la exploración de componente 
mediante el atributo 'bean-discovery-mode'. 
Este atributo tiene tres valores posibles:
Contexts and Dependency Injection 1.1 (JSR 346) 
'annotated' - traducido libremente, significa que sólo se procesan los 
componentes con una anotación de nivel de clase. 
'all' - todos los componentes son procesados , al igual que lo fueron en Java 
EE 6, con la beans.xml explícito. 
'none' - CDI estará desactivada. 
De forma predeterminada, si no se especifica nada y no hay beans.xml, el 
modo bean-discovery 'annotated' es asumido, en lugar de suponer "all".
Contexts and Dependency Injection 1.1 (JSR 346) 
Ejemplo básico
Java EE 7 APIs 
● Java EE 7 cubre las siguientes especificaciones: 
○ Java Persistence API 2.1 (JSR 338) 
○ Java API for RESTful Web Services 2.0 (JSR 339) 
○ Java Message Service 2.0 (JSR 343) 
○ JavaServer Faces 2.2 (JSR 344) 
○ Contexts and Dependency Injection 1.1 (JSR 346) 
○ Bean Validation 1.1 (JSR 349) 
○ Batch Applications for the Java Platform 1.0 (JSR 352) * 
○ Java API for JSON Processing 1.0 (JSR 353) * 
○ Java API for WebSocket 1.0 (JSR 356) * 
○ Java Transaction API 1.2 (JSR 907)
Bean Validation 1.1 (JSR 349) 
Bean Validation define un modelo de metadatos y una interfaz para la 
validación de JavaBeans. 
La fuente de los metadatos consiste en anotaciones, con la posibilidad de 
sobreescribir y extender estos metadatos por medio del uso de descriptores de 
validación en formato XML. 
Java Bean Validation (JSR 303) fue aprobado por el JCP al 16 de noviembre 
de 2009, siendo aceptado como parte de la especificación Java EE 6.
Bean Validation 1.1 (JSR 349) 
Bean Validation 1.1 se estuvo enfocado en los siguientes temas: 
● Apertura de la especificación y su proceso 
● 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) 
● Conversión de grupo 
● Interpolación de mensaje de error utilizando las expresiones EL
Bean Validation 1.1 (JSR 349) 
Validación de métodos
Bean Validation 1.1 (JSR 349) 
Integración con CDI
Java EE 7 APIs 
● Java EE 7 cubre las siguientes especificaciones: 
○ Java Persistence API 2.1 (JSR 338) 
○ Java API for RESTful Web Services 2.0 (JSR 339) 
○ Java Message Service 2.0 (JSR 343) 
○ JavaServer Faces 2.2 (JSR 344) 
○ Contexts and Dependency Injection 1.1 (JSR 346) 
○ Bean Validation 1.1 (JSR 349) 
○ Batch Applications for the Java Platform 1.0 (JSR 352) * 
○ Java API for JSON Processing 1.0 (JSR 353) * 
○ Java API for WebSocket 1.0 (JSR 356) * 
○ Java Transaction API 1.2 (JSR 907)
Batch Applications - JSR 352 
● Concepto viejo y utilizando por décadas. 
● La especificación busca normalizar la construcción y ejecución 
aplicaciones que necesitan procesos Batch. 
● Se enfoca en: 
○ Modelo de programación de los Batch. 
○ Lenguaje para definir los Jobs. 
○ Controlador de los jobs en proceso. (Runtime).
Batch Applications - JSR 352 
Diagrama Batch
Batch Applications - JSR 352 
Definición del Job-Xml 
<job id="myJob" xmlns="http://batch.jsr352/jsl"> 
<step id="myStep" > 
<chunk reader="MyItemReader" 
writer="MyItemWriter" 
processor="MyItemProcessor" 
buffer-size="5" 
checkpoint-policy="item" 
commit-interval="10" /> 
</step> 
</job>
Batch Applications - JSR 352 
ItemReader
Batch Applications - JSR 352 
Procesador
Batch Applications - JSR 352 
ItemWriter
Batch Applications - JSR 352 
CheckPoint
Java EE 7 APIs 
● Java EE 7 cubre las siguientes especificaciones: 
○ Java Persistence API 2.1 (JSR 338) 
○ Java API for RESTful Web Services 2.0 (JSR 339) 
○ Java Message Service 2.0 (JSR 343) 
○ JavaServer Faces 2.2 (JSR 344) 
○ Contexts and Dependency Injection 1.1 (JSR 346) 
○ Bean Validation 1.1 (JSR 349) 
○ Batch Applications for the Java Platform 1.0 (JSR 352) * 
○ Java API for JSON Processing 1.0 (JSR 353) * 
○ Java API for WebSocket 1.0 (JSR 356) * 
○ Java Transaction API 1.2 (JSR 907)
Java API for JSON Processing 1.0 (JSR 353) 
JSR 353 es el API de Java para procesamiento JSON (JSON-P) y define un 
API para el proceso (por ejemplo, análisis, generar, transformar y consulta) 
JSON. 
Este JSR forma parte de Java EE 7. 
El API permite producir y consumir JSON de manera secuencial ( equivalente a 
StAX en el mundo XML) y construir un modelo de objetos de Java para JSON ( 
equivalente a DOM en el mundo XML)
Java API for JSON Processing 1.0 (JSR 353) 
Puntos importantes del API. 
Basados en DOM. 
JsonBuilder - Construye un objeto JSON o un arreglo JSON 
JsonReader - Lee un objeto JSON o un arreglo 
JsonWriter - Escribe un objeto JSON o un arreglo 
Streaming APIs 
JsonGenerator 
JsonParser
Java API for JSON Processing 1.0 (JSR 353) 
Sintaxis JSON
Java API for JSON Processing 1.0 (JSR 353) 
Construir objeto JSON con JsonBuilder
Java API for JSON Processing 1.0 (JSR 353) 
Ejemplo de uso de JsonReader
Java API for JSON Processing 1.0 (JSR 353) 
Ejemplo de uso de JsonWriter
Java API for JSON Processing 1.0 (JSR 353) 
Escribiendo en un archivo usando JsonGenerator
Java API for JSON Processing 1.0 (JSR 353) 
Leyendo un archivo con formato JSON utilizando JsonParser
Java EE 7 APIs 
● Java EE 7 cubre las siguientes especificaciones: 
○ Java Persistence API 2.1 (JSR 338) 
○ Java API for RESTful Web Services 2.0 (JSR 339) 
○ Java Message Service 2.0 (JSR 343) 
○ JavaServer Faces 2.2 (JSR 344) 
○ Contexts and Dependency Injection 1.1 (JSR 346) 
○ Bean Validation 1.1 (JSR 349) 
○ Batch Applications for the Java Platform 1.0 (JSR 352) * 
○ Java API for JSON Processing 1.0 (JSR 353) * 
○ Java API for WebSocket 1.0 (JSR 356) * 
○ Java Transaction API 1.2 (JSR 907)
Java API for WebSocket 1.0 (JSR 356) 
WebSocket: 
Es un nuevo protocolo derivado de HTTP. 
HTTP es el protocolo estándar para la Web, es muy efectivo para una gran 
cantidad de casos de uso pero, sin embargo, tiene algunos inconvenientes en 
el caso de aplicaciones Web interactivas.
Java API for WebSocket 1.0 (JSR 356) 
Desventajas de HTTP: 
Half-duplex: basado en el modelo de solicitud / respuesta. 
Verbose: una gran cantidad de información se envía en las cabeceras HTTP 
asociados con el mensaje. 
Con el fin de añadir un modo de inserción en el servidor, es necesario utilizar 
solución (poll, long poll, Comet / Ajax), ya que no existe un estándar. 
Este protocolo no está optimizado a escala en aplicaciones de gran tamaño 
para comunicación en tiempo real bidireccional.
Java API for WebSocket 1.0 (JSR 356) 
El nuevo protocolo WebSocket ofrece funciones más avanzadas de HTTP 
porque es: 
Basado en 1 conexión TCP única entre 2 pares (mientras que cada solicitud / 
respuesta HTTP necesita una nueva conexión TCP) 
Bidireccional: cliente puede enviar el mensaje al servidor y el servidor 
también puede enviar un mensaje al cliente 
Full-duplex: cliente puede enviar varios mensajes al servidor, así como el 
servidor al cliente sin esperar una respuesta de sí
Java API for WebSocket 1.0 (JSR 356)
Java API for WebSocket 1.0 (JSR 356) 
WebSocket Server Endpoint
Java API for WebSocket 1.0 (JSR 356) 
WebSocket Client
Java Dominicano 
Es un grupo de entusiastas de la Plataforma Java, enfocados en promover el 
conocimiento Java en el presente y futuras generaciones de programadores. 
A través de nuestros foros y reuniones periódicas que pueda mantenerse en 
contacto con los últimos desarrollos de la industria, aprender nuevas 
tecnologías de Java (JVM y otros), conocer a otros desarrolladores, discutir 
temas técnicos / no técnicos y de la red aún más en toda la Comunidad Java.
Enfoque técnico 
❏ Plataforma Java (Java Standard Edition 'Java SE'). 
❏ Técnicas y Herramientas de desarrollo. 
❏ Lenguajes emergentes en la JVM. 
❏ Java Enterprise Edition (Java EE). 
❏ Java Embebidos(Java ME, Java Card, etc). 
❏ JavaFX y RIA. 
❏ Frameworks Java. 
❏ IDE
Redes sociales 
Contactos: 
info@javadominicano.org 
Twitter: 
@javadominicano 
Facebook: 
Grupo Java Dominicano 
Google Groups: 
@letsrockjava
¡Gracias por acompañarnos!
Referencias 
https://javaee7.zeef.com/arjan.tijms 
https://github.com/javaee-samples/javaee7-samples 
http://javaee-samples.github.io/ 
http://mgreau.com/posts/2013/11/11/javaee7-websocket-angularjs-wildfly.html 
http://www.calcey.com/calcey/conforming-to-jpa-2-1-for-persistence-a-practical-experience/ 
http://java.dzone.com/articles/whats-new-jax-rs-20 
http://www.infoq.com/news/2013/06/Whats-New-in-JAX-RS-2.0 
http://www.slideshare.net/edburns/jsf-22-26091922

More Related Content

What's hot

Java lenguaje de desarrollo
Java lenguaje de desarrolloJava lenguaje de desarrollo
Java lenguaje de desarrolloDavid
 
1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XMLJuan Carlos Rubio Pineda
 
Weblogic. Administración Avanzada servidor de aplicaciones
Weblogic. Administración Avanzada servidor de aplicacionesWeblogic. Administración Avanzada servidor de aplicaciones
Weblogic. Administración Avanzada servidor de aplicacionesCLEFormación
 
Mejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareMejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareJose Luis Bugarin Peche
 
JBossAS: Desarrollo con especificación EJB 3.0
JBossAS: Desarrollo con especificación EJB 3.0 JBossAS: Desarrollo con especificación EJB 3.0
JBossAS: Desarrollo con especificación EJB 3.0 Aitor Acedo
 
El universo JavaScript en Drupal 8
El universo JavaScript en Drupal 8El universo JavaScript en Drupal 8
El universo JavaScript en Drupal 8Ymbra
 
PRIMERA PRESENTACION JAVA
PRIMERA PRESENTACION JAVAPRIMERA PRESENTACION JAVA
PRIMERA PRESENTACION JAVANoralma Yanez
 
El universo JavaScript en Drupal 7
El universo JavaScript en Drupal 7El universo JavaScript en Drupal 7
El universo JavaScript en Drupal 7Ymbra
 
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado   1 IntroduccióN Al Desarrollo WebCurso Java Avanzado   1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado 1 IntroduccióN Al Desarrollo WebEmilio Aviles Avila
 
Java y sus caracteristicas
Java y sus caracteristicasJava y sus caracteristicas
Java y sus caracteristicasAny Saula
 

What's hot (20)

Java lenguaje de desarrollo
Java lenguaje de desarrolloJava lenguaje de desarrollo
Java lenguaje de desarrollo
 
1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML
 
De cero a multinacional con Grails y EC2
De cero a multinacional con Grails y EC2De cero a multinacional con Grails y EC2
De cero a multinacional con Grails y EC2
 
spring
springspring
spring
 
Weblogic. Administración Avanzada servidor de aplicaciones
Weblogic. Administración Avanzada servidor de aplicacionesWeblogic. Administración Avanzada servidor de aplicaciones
Weblogic. Administración Avanzada servidor de aplicaciones
 
Clase02 de sistemas
Clase02 de sistemasClase02 de sistemas
Clase02 de sistemas
 
Mejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareMejores a nuestros proyectos de Software
Mejores a nuestros proyectos de Software
 
JBossAS: Desarrollo con especificación EJB 3.0
JBossAS: Desarrollo con especificación EJB 3.0 JBossAS: Desarrollo con especificación EJB 3.0
JBossAS: Desarrollo con especificación EJB 3.0
 
ATIX21
ATIX21ATIX21
ATIX21
 
Almacenaniento Datos Android - SQL LITE
Almacenaniento Datos Android - SQL LITEAlmacenaniento Datos Android - SQL LITE
Almacenaniento Datos Android - SQL LITE
 
Web services y java
Web services y javaWeb services y java
Web services y java
 
El universo JavaScript en Drupal 8
El universo JavaScript en Drupal 8El universo JavaScript en Drupal 8
El universo JavaScript en Drupal 8
 
PRIMERA PRESENTACION JAVA
PRIMERA PRESENTACION JAVAPRIMERA PRESENTACION JAVA
PRIMERA PRESENTACION JAVA
 
SERVLET BASICS
SERVLET BASICSSERVLET BASICS
SERVLET BASICS
 
El universo JavaScript en Drupal 7
El universo JavaScript en Drupal 7El universo JavaScript en Drupal 7
El universo JavaScript en Drupal 7
 
Spring framework 3
Spring framework 3Spring framework 3
Spring framework 3
 
ICEFACES
ICEFACESICEFACES
ICEFACES
 
Spring framework
Spring frameworkSpring framework
Spring framework
 
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado   1 IntroduccióN Al Desarrollo WebCurso Java Avanzado   1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
 
Java y sus caracteristicas
Java y sus caracteristicasJava y sus caracteristicas
Java y sus caracteristicas
 

Viewers also liked

[ES] Primeros pasos con la Plataforma Java
[ES] Primeros pasos con la Plataforma Java[ES] Primeros pasos con la Plataforma Java
[ES] Primeros pasos con la Plataforma JavaEudris Cabrera
 
[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con JavaEudris Cabrera
 
[ES] Línea de Comandos GNU/Linux
[ES] Línea de Comandos GNU/Linux[ES] Línea de Comandos GNU/Linux
[ES] Línea de Comandos GNU/LinuxEudris Cabrera
 
[ES] Tareas Administrativas en GNU/Linux
[ES] Tareas Administrativas en GNU/Linux[ES] Tareas Administrativas en GNU/Linux
[ES] Tareas Administrativas en GNU/LinuxEudris Cabrera
 
[ES] Estructura del Sistema de Archivos Gnu/Linux
[ES] Estructura del Sistema de Archivos Gnu/Linux[ES] Estructura del Sistema de Archivos Gnu/Linux
[ES] Estructura del Sistema de Archivos Gnu/LinuxEudris Cabrera
 
[ES] Administración de servicios en GNU/Linux
[ES] Administración de servicios en GNU/Linux[ES] Administración de servicios en GNU/Linux
[ES] Administración de servicios en GNU/LinuxEudris Cabrera
 
Introducción al desarrollo de aplicaciones web en Java
Introducción al desarrollo de aplicaciones web en JavaIntroducción al desarrollo de aplicaciones web en Java
Introducción al desarrollo de aplicaciones web en JavaEudris Cabrera
 
Java8 : Más allá de las Expresiones Lambdas
Java8 :  Más allá de las Expresiones LambdasJava8 :  Más allá de las Expresiones Lambdas
Java8 : Más allá de las Expresiones LambdasEudris Cabrera
 

Viewers also liked (8)

[ES] Primeros pasos con la Plataforma Java
[ES] Primeros pasos con la Plataforma Java[ES] Primeros pasos con la Plataforma Java
[ES] Primeros pasos con la Plataforma Java
 
[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java
 
[ES] Línea de Comandos GNU/Linux
[ES] Línea de Comandos GNU/Linux[ES] Línea de Comandos GNU/Linux
[ES] Línea de Comandos GNU/Linux
 
[ES] Tareas Administrativas en GNU/Linux
[ES] Tareas Administrativas en GNU/Linux[ES] Tareas Administrativas en GNU/Linux
[ES] Tareas Administrativas en GNU/Linux
 
[ES] Estructura del Sistema de Archivos Gnu/Linux
[ES] Estructura del Sistema de Archivos Gnu/Linux[ES] Estructura del Sistema de Archivos Gnu/Linux
[ES] Estructura del Sistema de Archivos Gnu/Linux
 
[ES] Administración de servicios en GNU/Linux
[ES] Administración de servicios en GNU/Linux[ES] Administración de servicios en GNU/Linux
[ES] Administración de servicios en GNU/Linux
 
Introducción al desarrollo de aplicaciones web en Java
Introducción al desarrollo de aplicaciones web en JavaIntroducción al desarrollo de aplicaciones web en Java
Introducción al desarrollo de aplicaciones web en Java
 
Java8 : Más allá de las Expresiones Lambdas
Java8 :  Más allá de las Expresiones LambdasJava8 :  Más allá de las Expresiones Lambdas
Java8 : Más allá de las Expresiones Lambdas
 

Similar to Taller introducción Java EE 7 @UAPA

Introducción a java EE 7
Introducción a java EE 7Introducción a java EE 7
Introducción a java EE 7Carlos Camacho
 
[ES] Introducción a Java EE 7 & HTML 5
[ES] Introducción a Java EE 7 & HTML 5[ES] Introducción a Java EE 7 & HTML 5
[ES] Introducción a Java EE 7 & HTML 5Eudris Cabrera
 
Modulo Jee Intro Pos Fp Une
Modulo Jee Intro  Pos Fp UneModulo Jee Intro  Pos Fp Une
Modulo Jee Intro Pos Fp UneMarcos Jara
 
[ES] Fundamentos de Java Enterprise Edition
[ES] Fundamentos de Java Enterprise Edition [ES] Fundamentos de Java Enterprise Edition
[ES] Fundamentos de Java Enterprise Edition Eudris Cabrera
 
Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)Robert Rayco Quiroz
 
01 jee5-componentes
01 jee5-componentes01 jee5-componentes
01 jee5-componentesUTN
 
Seminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
Seminario de programación Java, con Apache Maven, J2EE, JPA, PrimefacesSeminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
Seminario de programación Java, con Apache Maven, J2EE, JPA, PrimefacesAlejandro Bolaños Ussa
 
J2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos SlidesJ2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos Slidesmundojava
 
Java EE 8 / Jakarta EE y Microprofile
Java EE 8 / Jakarta EE y MicroprofileJava EE 8 / Jakarta EE y Microprofile
Java EE 8 / Jakarta EE y MicroprofileEudris Cabrera
 
[ES] Desarrollo de aplicaciones con Java Server Faces
[ES] Desarrollo de aplicaciones con Java Server  Faces[ES] Desarrollo de aplicaciones con Java Server  Faces
[ES] Desarrollo de aplicaciones con Java Server FacesEudris Cabrera
 
Tutorial javafx-primeros-pasos
Tutorial javafx-primeros-pasosTutorial javafx-primeros-pasos
Tutorial javafx-primeros-pasosNorman Enmanuel
 
Introducción a Java EE
Introducción a Java EEIntroducción a Java EE
Introducción a Java EEPaco Saucedo
 
Plataforma de programación Java
Plataforma de programación JavaPlataforma de programación Java
Plataforma de programación JavaAntonio Contreras
 

Similar to Taller introducción Java EE 7 @UAPA (20)

Introducción a java EE 7
Introducción a java EE 7Introducción a java EE 7
Introducción a java EE 7
 
[ES] Introducción a Java EE 7 & HTML 5
[ES] Introducción a Java EE 7 & HTML 5[ES] Introducción a Java EE 7 & HTML 5
[ES] Introducción a Java EE 7 & HTML 5
 
Modulo Jee Intro Pos Fp Une
Modulo Jee Intro  Pos Fp UneModulo Jee Intro  Pos Fp Une
Modulo Jee Intro Pos Fp Une
 
[ES] Fundamentos de Java Enterprise Edition
[ES] Fundamentos de Java Enterprise Edition [ES] Fundamentos de Java Enterprise Edition
[ES] Fundamentos de Java Enterprise Edition
 
Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)
 
01 jee5-componentes
01 jee5-componentes01 jee5-componentes
01 jee5-componentes
 
JEE y Tomcat
JEE y TomcatJEE y Tomcat
JEE y Tomcat
 
Introducción a Java FX
Introducción a Java FXIntroducción a Java FX
Introducción a Java FX
 
J2 ee
J2 eeJ2 ee
J2 ee
 
Seminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
Seminario de programación Java, con Apache Maven, J2EE, JPA, PrimefacesSeminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
Seminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
 
4 Jhs J Developer Adf
4  Jhs J Developer Adf4  Jhs J Developer Adf
4 Jhs J Developer Adf
 
J2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos SlidesJ2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos Slides
 
Resumen jee
Resumen jeeResumen jee
Resumen jee
 
Java ee 6
Java ee 6Java ee 6
Java ee 6
 
Java EE 8 / Jakarta EE y Microprofile
Java EE 8 / Jakarta EE y MicroprofileJava EE 8 / Jakarta EE y Microprofile
Java EE 8 / Jakarta EE y Microprofile
 
El Universo Java (2007)
El Universo Java (2007)El Universo Java (2007)
El Universo Java (2007)
 
[ES] Desarrollo de aplicaciones con Java Server Faces
[ES] Desarrollo de aplicaciones con Java Server  Faces[ES] Desarrollo de aplicaciones con Java Server  Faces
[ES] Desarrollo de aplicaciones con Java Server Faces
 
Tutorial javafx-primeros-pasos
Tutorial javafx-primeros-pasosTutorial javafx-primeros-pasos
Tutorial javafx-primeros-pasos
 
Introducción a Java EE
Introducción a Java EEIntroducción a Java EE
Introducción a Java EE
 
Plataforma de programación Java
Plataforma de programación JavaPlataforma de programación Java
Plataforma de programación Java
 

Recently uploaded

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 

Recently uploaded (19)

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 

Taller introducción Java EE 7 @UAPA

  • 1. Introducción a Java EE 7 #JavaEE7 Carlos Camacho @ccamachog Eudris Cabrera @eudriscabrera 14 Septiembre 2014, Universidad Abierta Para Adultos (UAPA) , Santiago, R. D.
  • 2. Asuntos Legales Los conceptos y juicios de valor emitidos en esta presentación es responsabilidad personal y no se puede entenderse como una posición oficial de alguna empresa con la que hemos tenido relación laboral. 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. Su utilización es solamente para fines ilustrativos y no pretendemos dar a entender cualquier afiliación con esas empresas.
  • 3. Sobre Eudris Cabrera ● 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, charlista, facilitador y colaborador en eventos tecnológicos para desarrolladores como Barcamp STI, Code Camp SDQ 4.0 y La Feria de Tecnología Educativa de (UAPA). ● Miembro del equipo de desarrollo de Astive Toolkit http://astivetoolkit.org Comunidades ● Github: @ecabrerar ● Google Groups: @letsrockjava ● LinkedIn: @eudriscabrera
  • 4. Sobre Carlos Camacho ● Ing. Telemático |Magíster Tecnología Educativa | Profesor Departamento Sistema, PUCMM. ● Más de 8 años de experiencias en desarrollo de sistemas bajo Java SE y Java EE. ● Fundación Código Libre, Santiago - Miembro Fundador | Coordinador de Sistemas, Reefer Services, S.A.S | Presidente, AvatharTech E.I.R.L. Comunidades ● twitter: @ccamachog ● LinkedIn: @ccamachog carlosalfredocamacho@gmail.com
  • 5. Agenda ● Breve Reseña sobre Java ● Conceptos Generales sobre Java EE ● Aspectos importantes de Java EE 7 ● Primeros pasos con Java EE 7 ● Cómo empezar con Java EE 7 ● Algunos APIs de Java EE7
  • 6. Objetivos ● Introducir los conceptos fundamentales de Java Enterprise Edition. ● Destacar los aspectos más importantes de Java EE 7
  • 7. Entendiendo el ecosistema Java ● Plataforma Java: ○ Multi-plataforma. ○ Utiliza una máquina virtual para su ejecución (JVM) ○ Esta dividida en: ■ Java SE ■ Java EE ■ Java ME ■ Javafx ○ El estandar es manejado por Java Community Process (JCP) James Gosling, Creador de Java
  • 8. Ecosistema Java ● Popularidad del lenguaje Java por TIOBE Septiembre 2014, http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
  • 9. !Java donde quiera¡ ● 5 trillones SIMS y Smart Cards ● 3 trillones dispositivos móviles. ● 80 millones TV, incluyendo Blu-ray, printers, maquinas bancarias, eBooks Reader y Carros Trillones, representa el término inglés de 10^12, http://www.oracle.com/us/technologies/java/embedded/overview/index.html
  • 10. Diferencia entre JAVA SE y JAVA EE JAVA SE es la versión estándar de java. Es la api base del lenguaje mientras que JAVA EE podríamos decir que es una versión extendida de JAVA SE. La plataforma Java EE consta de un conjunto de servicios, API y protocolos que proporcionan la funcionalidad necesaria para desarrollar aplicaciones basadas en la web de varios niveles. Java EE simplifica el desarrollo de aplicaciones y reduce la necesidad de programación, al proporcional componentes modulares normalizados y reutilizables, así como al permitir controlar muchos aspectos de la programación automáticamente por nivel.
  • 11. Java Platform, Enterprise Edition (EE) ● Es un entorno independiente de la plataforma centrado en Java para desarrollar, crear e implementar en línea aplicaciones empresariales basadas en web. ● Es el estándar en software empresarial. ● Se apoya ampliamente en componentes de software modulares ejecutándose sobre un servidor de aplicaciones.
  • 12. Java EE Java EE Las razones que empujan a la creación de la plataforma Java EE: ❖ Programación eficiente. ❖ Extensibilidad frente a la demanda del negocio. ❖ Integración.
  • 13. Arquitectura de Java EE Arquitectura Java EE La arquitectura Java EE implica un modelo de aplicaciones distribuidas en diversas capas o niveles (tier). Niveles o Capas Java EE Cliente HTML, Applet, aplicaciones Java, etc. Web JSF, JSP, Servlet Negocio EJB, JPA, JAX-WS y JAX-RS Web services Sistema de JDBC, JTA, Java EE Connector, JPA Información Empresariales
  • 14. Arquitectura de Java EE Arquitectura Java EE
  • 15. Estructura de una Aplicación Empresarial Aplicación Empresarial multicapas
  • 16. Servidores Java EE Es un servidor de aplicaciones que implementa los APIs de la plataforma Java EE y provee los servicios del estándar Java EE. Los servidores Java EE muchas veces son llamados servidores de aplicaciones, porque permiten servir datos a los clientes, de la misma forma que un servidor web permite servir páginas web a un browser. Un servidor Java EE puede alojar varios tipos de componentes correspondientes a una aplicación multi-capas. En este sentido, ofrece un entorno de ejecución estandarizado para estos componentes.
  • 17. Servidores Java EE Servidores de aplicaciones certificados para Java EE 6
  • 18. Servidores Java EE Popularidad
  • 19. Contenedores Java EE Son la interfaz entre el componente y la funcionalidad de bajo nivel proporcionada por la plataforma para soportar ese componente. La funcionalidad del contenedor está definido por la plataforma, y es diferente para cada tipo de componente. No obstante, el servidor permite que los diferentes tipos de componentes puedan trabajar juntos para proporcionar funcionalidad en una aplicación empresarial.
  • 20. Tipos de contenedores Contenedor Web: Maneja la ejecución de los Servlets y páginas JSP y JSF. Contenedor Cliente: Provee una interfaz de conexión entre el servidor Java EE y las aplicaciones clientes, tales como aplicaciones Java SE, entre otras. Contenedor EJB: Gestiona la ejecución de los Enterprise JavaBeans.
  • 23. Java EE 6 cambió el juego .... ● Más Ligero. ● Introduce el concepto de perfiles (Web Profile and Full Profile). ● EJB empaquetado en archivos war. ● Servlet 3.0 ○ web.xml (opcional), @WebServlet, @WebFilter ● Soporte para servicios web RESTful con JAX-RS 1.1 ● Contextos e Inyección de Dependencia (CDI) para Java EE
  • 24. Java EE 7 productividad y enfocado en HTML5 ● Construido sobre la base de Java EE6. ● Soporte para HTML5. ● 4 nuevas especificaciones. ● 3 especificaciones con cambios importantes. ● 6 especificaciones con cambios menores. ● 5 especificaciones con cambios micro.
  • 25. Java EE 7 APIs
  • 27. Java EE 7 APIs ● Java EE 7 cubre las siguientes especificaciones: ○ Java Persistence API 2.1 (JSR 338) ○ Java API for RESTful Web Services 2.0 (JSR 339) ○ Java Message Service 2.0 (JSR 343) ○ JavaServer Faces 2.2 (JSR 344) ○ Contexts and Dependency Injection 1.1 (JSR 346) ○ Bean Validation 1.1 (JSR 349) ○ Batch Applications for the Java Platform 1.0 (JSR 352) * ○ Java API for JSON Processing 1.0 (JSR 353) * ○ Java API for WebSocket 1.0 (JSR 356) * ○ Java Transaction API 1.2 (JSR 907)
  • 28. Cómo empezar con Java EE 7 ? Descargar e instalar: JDK 7(ó superior): http://www.oracle.com/technetwork/java/javase/downloads/index.html Instalar el IDE de su preferencia: NetBeans 7.4 o superior, versión completa o “Java EE” http://netbeans.org/downloads/ Eclipse 4.3 (Kepler) o superior http://www.eclipse.org/kepler/ Otros
  • 29. Código fuente de los ejemplos en GitHub https://github.com/JavaDominicano/taller-javaee7-uapa-sti
  • 30. Java EE 7 APIs ● Java EE 7 cubre las siguientes especificaciones: ○ Java Persistence API 2.1 (JSR 338) ○ Java API for RESTful Web Services 2.0 (JSR 339) ○ Java Message Service 2.0 (JSR 343) ○ JavaServer Faces 2.2 (JSR 344) ○ Contexts and Dependency Injection 1.1 (JSR 346) ○ Bean Validation 1.1 (JSR 349) ○ Batch Applications for the Java Platform 1.0 (JSR 352) * ○ Java API for JSON Processing 1.0 (JSR 353) * ○ Java API for WebSocket 1.0 (JSR 356) * ○ Java Transaction API 1.2 (JSR 907)
  • 31. Java Persistence API (JPA) 2.1 ● Framework para manejar los datos de una base de datos relacional a un mapeo de objeto. ORM. ● Permite que nuestra aplicación no dependa de un vendedor de base de datos. ● Representan una abstracción para manejar las diferentes implementaciones existentes: ○ Hibernate. ○ EclipseLink. ○ OpenJPA.
  • 32. Java Persistence API (JPA) 2.1
  • 33. Java Persistence API (JPA) 2.1 Clase Entidad - JPA
  • 34. Java Persistence API (JPA) 2.1 Archivo Persistencia - JPA
  • 35. Java Persistence API (JPA) 2.1 Insertando un Objeto
  • 36. Java Persistence API (JPA) 2.1 ● Los elementos nuevos JPA 2.1: ○ Soporte procedimientos almacenados ○ Tipo de conversión ○ Criteria Update / Delete ○ Creación runtime named Queries. ○ Entre otros.
  • 37. Java EE 7 APIs ● Java EE 7 cubre las siguientes especificaciones: ○ Java Persistence API 2.1 (JSR 338) ○ Java API for RESTful Web Services 2.0 (JSR 339) ○ Java Message Service 2.0 (JSR 343) ○ JavaServer Faces 2.2 (JSR 344) ○ Contexts and Dependency Injection 1.1 (JSR 346) ○ Bean Validation 1.1 (JSR 349) ○ Batch Applications for the Java Platform 1.0 (JSR 352) * ○ Java API for JSON Processing 1.0 (JSR 353) * ○ Java API for WebSocket 1.0 (JSR 356) * ○ Java Transaction API 1.2 (JSR 907)
  • 38. RESTful WebServices 2.1 ● Representational State Transfer (REST): ○ Arquitectura de sistema distribuido sobre el protocolo HTTP. ○ Protocolo cliente / servidor sin estado. ○ Operaciones definidas, GET, POST, PUT y DELETE soportando un CRUD. ○ Identificador único para los recursos (URI).
  • 39. RESTful WebServices 2.1 ● JAX-RS 1.0: ○ Liberada en el 2008 para la versión Java EE 6. JSR-311 ○ Simplifica el proceso de creación de servicios Web mediante Plain Old Java Objects (POJOS) y anotaciones. ○ No requiere configuración adicional para utilizarlos en entornos Java EE 6. ○ Incluye anotaciones para implementar servicios Web: ■ @Path, @Get, @Put, @Post, @Delete, @Produces, @Consumes, entre otros.
  • 40. RESTful Web Services (JSR 339) JAX-RS 1.0: ○ Liberada en el 2008 para la versión Java EE 6. JSR-311 ○ Simplifica el proceso de creación de servicios Web mediante Plain Old Java Objects (POJOS) y anotaciones. ○ No requiere configuración adicional para utilizarlos en entornos Java EE 6. ○ Incluye anotaciones para implementar servicios Web: ■ @Path, @Get, @Put, @Post, @Delete, @Produces, @Consumes, entre otros.
  • 41. RESTful Web Services (JSR 339) Ejemplo Clase JAX-RS
  • 42. RESTful Web Services (JSR 339) ● 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
  • 43. RESTful Web Services (JSR 339) ● Llamadas Asincrónicas vía Http (API Cliente Asincrónico) InvocationCallback<Response> callback = new InvocationCallback { public void completed(Response res) { System.out.println("Request success!"); } public void failed(ClientException e) { System.out.println("Request failed!");n } }; client.target("http://example.com/customers").queryParam("name", "Bill Burke") .request().async() .get(callback);
  • 44. RESTful Web Services (JSR 339) ● API para el Cliente Client client = ClientFactory.newClient(); WebTarget target = client.target("http://example.com/shop"); Form form = new Form().param("customer", "Bill") .param("product", "IPhone 5") .param("CC", "4444 4444 4444 4444"); Response response = target.request().post(Entity.form(form)); assert response.getStatus() == 200; Order order = response.readEntity(Order.class);
  • 45. RESTful Web Services (JSR 339) ● Llamadas Asincrónicas vía Http (Server-side Asincrónico Http) @Path("/listener") public class ChatListener{ List<AsyncResponse> listeners = ...some global list...; @GET public void listen(@Suspended AsyncResponse res) { list.add(res); } }
  • 46. RESTful Web Services (JSR 339) ● Interceptores @Provider //Codifica una salida con GZIP. public class GZIPEndoer implements WriterInterceptor { public void aroundWriteTo(WriterInterceptorContext ctx) throws IException, WebApplicationException { GZIPOutputStream os = new GZIPOutputStream(ctx.getOutputStream()); try { ctx.setOutputStream(os); return ctx.proceed(); } finally { os.finish(); } } }
  • 47. RESTful Web Services (JSR 339) ● Filtros
  • 48. Java EE 7 APIs ● Java EE 7 cubre las siguientes especificaciones: ○ Java Persistence API 2.1 (JSR 338) ○ Java API for RESTful Web Services 2.0 (JSR 339) ○ Java Message Service 2.0 (JSR 343) ○ JavaServer Faces 2.2 (JSR 344) ○ Contexts and Dependency Injection 1.1 (JSR 346) ○ Bean Validation 1.1 (JSR 349) ○ Batch Applications for the Java Platform 1.0 (JSR 352) * ○ Java API for JSON Processing 1.0 (JSR 353) * ○ Java API for WebSocket 1.0 (JSR 356) * ○ Java Transaction API 1.2 (JSR 907)
  • 49. Java Message Service 2.0 (JSR 343) Este es un estándar de mensajería que permite a los componentes de aplicaciones basados en la plataforma Java crear, enviar, recibir y leer mensajes. ● Permite comunicación confiable de manera síncrona y asíncrona. ● JMS 1 fue desarrollada con la versión JDK 1.4 ● JSR 343: JMS 2.0, la nueva versión de la especificación JMS evoluciona y permite realizar funcionalidad que, antes, se realizaba en 20 líneas, en 6; por poner un simple ejemplo.
  • 50. Java Message Service 2.0 (JSR 343)
  • 51. Java Message Service 2.0 (JSR 343) El cambio más grande en JMS 2.0 es la introducción de una nueva API para enviar y recibir mensajes, que reduce la cantidad de código de un desarrollador debe escribir. Para aplicaciones JEE la nueva API también soporta la inyección de recursos. Esto permite que el servidor de aplicaciones gestiones los objetos JMS, lo que simplifica aún más la aplicación. JMS 2.0 es parte de la plataforma Java EE 7 y se puede utilizar en la Web o EJB aplicaciones Java EE, o se puede utilizar independiente en un entorno Java SE.
  • 52. Java Message Service 2.0 (JSR 343) JMS 1.1
  • 53. Java Message Service 2.0 (JSR 343) JMS 2.0
  • 54. Java EE 7 APIs ● Java EE 7 cubre las siguientes especificaciones: ○ Java Persistence API 2.1 (JSR 338) ○ Java API for RESTful Web Services 2.0 (JSR 339) ○ Java Message Service 2.0 (JSR 343) ○ JavaServer Faces 2.2 (JSR 344) ○ Contexts and Dependency Injection 1.1 (JSR 346) ○ Bean Validation 1.1 (JSR 349) ○ Batch Applications for the Java Platform 1.0 (JSR 352) * ○ Java API for JSON Processing 1.0 (JSR 353) * ○ Java API for WebSocket 1.0 (JSR 356) * ○ Java Transaction API 1.2 (JSR 907)
  • 55. JavaServer Faces 2.2 (JSR 344) ● Tecnología y Framework para el desarrollo de aplicaciones web en Java. ● Incluye: ○ APIs para el manejo de eventos, validar entradas, esquema de control de navegación ○ Administración de estados. ○ Basado en componentes ○ Eventos gestionados desde el servidor ● Disponible desde la versión 1.0, 2004 en Java EE ● Existen librerías tipo extensiones para el manejo de componentes visuales: ○ RichFaces ○ ICEFaces ○ PrimeFaces
  • 56. JavaServer Faces 2.2 (JSR 344) ● ¿Cómo trabaja JSF? ○ Utiliza taglib los cuales están asociados a clases manejadoras. ○ Todas las etiquetas son procesadas y presentada mediante HTML, mapeando cada etiqueta con su representación en el server. Codificación ○ Cada petición es manejada vía POST y decodificado los valores para ser procesadas.
  • 57. JavaServer Faces 2.2 (JSR 344) ● Managed Beans ○ Representan la separación de la vista con la regla de negocio. ○ Son componentes reusables. ○ Facilitan el procesamiento de la información desde el formulario al servidor y viceversa.
  • 58. JavaServer Faces 2.2 (JSR 344) ● Managed Beans
  • 59. JavaServer Faces 2.2 (JSR 344) ● JSF 2.2 ○ Pertenece al JEE 7. ○ Cambio de espaciado de nombre. ○ Incluye cambios en los siguiente aspecto: ■ Soporte HTML5. ■ Componente File Upload. ■ Faces Flow. ■ Protección sobre Cross Site Request Forgery ■ Multi-Templating.
  • 60. JavaServer Faces 2.2 (JSR 344) ● JSF 2.2 - File Upload ○ Incluye la etiqueta h:inputFile. Debe estar dentro de un form con el enctype “multipart/form-data” ○ La propiedad del Bean es del tipo javax.servlet.http.Part.
  • 61. JavaServer Faces 2.2 (JSR 344) ● JSF 2.2 - File Upload
  • 62. JavaServer Faces 2.2 (JSR 344) ● JSF 2.2 - Soporte HTML5
  • 63. Java EE 7 APIs ● Java EE 7 cubre las siguientes especificaciones: ○ Java Persistence API 2.1 (JSR 338) ○ Java API for RESTful Web Services 2.0 (JSR 339) ○ Java Message Service 2.0 (JSR 343) ○ JavaServer Faces 2.2 (JSR 344) ○ Contexts and Dependency Injection 1.1 (JSR 346) ○ Bean Validation 1.1 (JSR 349) ○ Batch Applications for the Java Platform 1.0 (JSR 352) * ○ Java API for JSON Processing 1.0 (JSR 353) * ○ Java API for WebSocket 1.0 (JSR 356) * ○ Java Transaction API 1.2 (JSR 907)
  • 64. Contexts and Dependency Injection 1.1 (JSR 346) La inyección de dependencias consiste en cargar las propiedades de los beans mediante su constructor o sus setters en el momento de iniciar la aplicación. Sin inyección de dependencias, cada clase llama al objeto que necesita en tiempo de ejecución. Mientras que con inyección de dependencias, cada objeto es cargado en cada clase que lo necesita en tiempo de inicialización. La forma habitual de implementar este patrón es mediante un "Contenedor DI"
  • 65. Contexts and Dependency Injection 1.1 (JSR 346) En Java EE 6, era necesario agregar explícitamente un archivo beans.xml con el fin de habilitar escaneo CDI. La DI (Inyección de dependencia) se considera correctamente una preocupación generalizada, los desarrolladores de Java EE a menudo se encuentran con este requisito confuso. Uno de los cambios más significativos de CD 1.1/Java EE 7 es que por petición popular, el CDI está activada de forma predeterminada.
  • 66. Contexts and Dependency Injection 1.1 (JSR 346) Esto significa que no hay necesidad de añadir explícitamente un archivo beans.xml para permitir DI. Sin embargo, también es muy importante entender que la CDI ahora también proporciona un control más preciso sobre la exploración de componente mediante el atributo 'bean-discovery-mode'. Este atributo tiene tres valores posibles:
  • 67. Contexts and Dependency Injection 1.1 (JSR 346) 'annotated' - traducido libremente, significa que sólo se procesan los componentes con una anotación de nivel de clase. 'all' - todos los componentes son procesados , al igual que lo fueron en Java EE 6, con la beans.xml explícito. 'none' - CDI estará desactivada. De forma predeterminada, si no se especifica nada y no hay beans.xml, el modo bean-discovery 'annotated' es asumido, en lugar de suponer "all".
  • 68. Contexts and Dependency Injection 1.1 (JSR 346) Ejemplo básico
  • 69. Java EE 7 APIs ● Java EE 7 cubre las siguientes especificaciones: ○ Java Persistence API 2.1 (JSR 338) ○ Java API for RESTful Web Services 2.0 (JSR 339) ○ Java Message Service 2.0 (JSR 343) ○ JavaServer Faces 2.2 (JSR 344) ○ Contexts and Dependency Injection 1.1 (JSR 346) ○ Bean Validation 1.1 (JSR 349) ○ Batch Applications for the Java Platform 1.0 (JSR 352) * ○ Java API for JSON Processing 1.0 (JSR 353) * ○ Java API for WebSocket 1.0 (JSR 356) * ○ Java Transaction API 1.2 (JSR 907)
  • 70. Bean Validation 1.1 (JSR 349) Bean Validation define un modelo de metadatos y una interfaz para la validación de JavaBeans. La fuente de los metadatos consiste en anotaciones, con la posibilidad de sobreescribir y extender estos metadatos por medio del uso de descriptores de validación en formato XML. Java Bean Validation (JSR 303) fue aprobado por el JCP al 16 de noviembre de 2009, siendo aceptado como parte de la especificación Java EE 6.
  • 71. Bean Validation 1.1 (JSR 349) Bean Validation 1.1 se estuvo enfocado en los siguientes temas: ● Apertura de la especificación y su proceso ● 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) ● Conversión de grupo ● Interpolación de mensaje de error utilizando las expresiones EL
  • 72. Bean Validation 1.1 (JSR 349) Validación de métodos
  • 73. Bean Validation 1.1 (JSR 349) Integración con CDI
  • 74. Java EE 7 APIs ● Java EE 7 cubre las siguientes especificaciones: ○ Java Persistence API 2.1 (JSR 338) ○ Java API for RESTful Web Services 2.0 (JSR 339) ○ Java Message Service 2.0 (JSR 343) ○ JavaServer Faces 2.2 (JSR 344) ○ Contexts and Dependency Injection 1.1 (JSR 346) ○ Bean Validation 1.1 (JSR 349) ○ Batch Applications for the Java Platform 1.0 (JSR 352) * ○ Java API for JSON Processing 1.0 (JSR 353) * ○ Java API for WebSocket 1.0 (JSR 356) * ○ Java Transaction API 1.2 (JSR 907)
  • 75. Batch Applications - JSR 352 ● Concepto viejo y utilizando por décadas. ● La especificación busca normalizar la construcción y ejecución aplicaciones que necesitan procesos Batch. ● Se enfoca en: ○ Modelo de programación de los Batch. ○ Lenguaje para definir los Jobs. ○ Controlador de los jobs en proceso. (Runtime).
  • 76. Batch Applications - JSR 352 Diagrama Batch
  • 77. Batch Applications - JSR 352 Definición del Job-Xml <job id="myJob" xmlns="http://batch.jsr352/jsl"> <step id="myStep" > <chunk reader="MyItemReader" writer="MyItemWriter" processor="MyItemProcessor" buffer-size="5" checkpoint-policy="item" commit-interval="10" /> </step> </job>
  • 78. Batch Applications - JSR 352 ItemReader
  • 79. Batch Applications - JSR 352 Procesador
  • 80. Batch Applications - JSR 352 ItemWriter
  • 81. Batch Applications - JSR 352 CheckPoint
  • 82. Java EE 7 APIs ● Java EE 7 cubre las siguientes especificaciones: ○ Java Persistence API 2.1 (JSR 338) ○ Java API for RESTful Web Services 2.0 (JSR 339) ○ Java Message Service 2.0 (JSR 343) ○ JavaServer Faces 2.2 (JSR 344) ○ Contexts and Dependency Injection 1.1 (JSR 346) ○ Bean Validation 1.1 (JSR 349) ○ Batch Applications for the Java Platform 1.0 (JSR 352) * ○ Java API for JSON Processing 1.0 (JSR 353) * ○ Java API for WebSocket 1.0 (JSR 356) * ○ Java Transaction API 1.2 (JSR 907)
  • 83. Java API for JSON Processing 1.0 (JSR 353) JSR 353 es el API de Java para procesamiento JSON (JSON-P) y define un API para el proceso (por ejemplo, análisis, generar, transformar y consulta) JSON. Este JSR forma parte de Java EE 7. El API permite producir y consumir JSON de manera secuencial ( equivalente a StAX en el mundo XML) y construir un modelo de objetos de Java para JSON ( equivalente a DOM en el mundo XML)
  • 84. Java API for JSON Processing 1.0 (JSR 353) Puntos importantes del API. Basados en DOM. JsonBuilder - Construye un objeto JSON o un arreglo JSON JsonReader - Lee un objeto JSON o un arreglo JsonWriter - Escribe un objeto JSON o un arreglo Streaming APIs JsonGenerator JsonParser
  • 85. Java API for JSON Processing 1.0 (JSR 353) Sintaxis JSON
  • 86. Java API for JSON Processing 1.0 (JSR 353) Construir objeto JSON con JsonBuilder
  • 87. Java API for JSON Processing 1.0 (JSR 353) Ejemplo de uso de JsonReader
  • 88. Java API for JSON Processing 1.0 (JSR 353) Ejemplo de uso de JsonWriter
  • 89. Java API for JSON Processing 1.0 (JSR 353) Escribiendo en un archivo usando JsonGenerator
  • 90. Java API for JSON Processing 1.0 (JSR 353) Leyendo un archivo con formato JSON utilizando JsonParser
  • 91. Java EE 7 APIs ● Java EE 7 cubre las siguientes especificaciones: ○ Java Persistence API 2.1 (JSR 338) ○ Java API for RESTful Web Services 2.0 (JSR 339) ○ Java Message Service 2.0 (JSR 343) ○ JavaServer Faces 2.2 (JSR 344) ○ Contexts and Dependency Injection 1.1 (JSR 346) ○ Bean Validation 1.1 (JSR 349) ○ Batch Applications for the Java Platform 1.0 (JSR 352) * ○ Java API for JSON Processing 1.0 (JSR 353) * ○ Java API for WebSocket 1.0 (JSR 356) * ○ Java Transaction API 1.2 (JSR 907)
  • 92. Java API for WebSocket 1.0 (JSR 356) WebSocket: Es un nuevo protocolo derivado de HTTP. HTTP es el protocolo estándar para la Web, es muy efectivo para una gran cantidad de casos de uso pero, sin embargo, tiene algunos inconvenientes en el caso de aplicaciones Web interactivas.
  • 93. Java API for WebSocket 1.0 (JSR 356) Desventajas de HTTP: Half-duplex: basado en el modelo de solicitud / respuesta. Verbose: una gran cantidad de información se envía en las cabeceras HTTP asociados con el mensaje. Con el fin de añadir un modo de inserción en el servidor, es necesario utilizar solución (poll, long poll, Comet / Ajax), ya que no existe un estándar. Este protocolo no está optimizado a escala en aplicaciones de gran tamaño para comunicación en tiempo real bidireccional.
  • 94. Java API for WebSocket 1.0 (JSR 356) El nuevo protocolo WebSocket ofrece funciones más avanzadas de HTTP porque es: Basado en 1 conexión TCP única entre 2 pares (mientras que cada solicitud / respuesta HTTP necesita una nueva conexión TCP) Bidireccional: cliente puede enviar el mensaje al servidor y el servidor también puede enviar un mensaje al cliente Full-duplex: cliente puede enviar varios mensajes al servidor, así como el servidor al cliente sin esperar una respuesta de sí
  • 95. Java API for WebSocket 1.0 (JSR 356)
  • 96. Java API for WebSocket 1.0 (JSR 356) WebSocket Server Endpoint
  • 97. Java API for WebSocket 1.0 (JSR 356) WebSocket Client
  • 98.
  • 99. Java Dominicano Es un grupo de entusiastas de la Plataforma Java, enfocados en promover el conocimiento Java en el presente y futuras generaciones de programadores. A través de nuestros foros y reuniones periódicas que pueda mantenerse en contacto con los últimos desarrollos de la industria, aprender nuevas tecnologías de Java (JVM y otros), conocer a otros desarrolladores, discutir temas técnicos / no técnicos y de la red aún más en toda la Comunidad Java.
  • 100. Enfoque técnico ❏ Plataforma Java (Java Standard Edition 'Java SE'). ❏ Técnicas y Herramientas de desarrollo. ❏ Lenguajes emergentes en la JVM. ❏ Java Enterprise Edition (Java EE). ❏ Java Embebidos(Java ME, Java Card, etc). ❏ JavaFX y RIA. ❏ Frameworks Java. ❏ IDE
  • 101. Redes sociales Contactos: info@javadominicano.org Twitter: @javadominicano Facebook: Grupo Java Dominicano Google Groups: @letsrockjava
  • 103. Referencias https://javaee7.zeef.com/arjan.tijms https://github.com/javaee-samples/javaee7-samples http://javaee-samples.github.io/ http://mgreau.com/posts/2013/11/11/javaee7-websocket-angularjs-wildfly.html http://www.calcey.com/calcey/conforming-to-jpa-2-1-for-persistence-a-practical-experience/ http://java.dzone.com/articles/whats-new-jax-rs-20 http://www.infoq.com/news/2013/06/Whats-New-in-JAX-RS-2.0 http://www.slideshare.net/edburns/jsf-22-26091922