SlideShare uma empresa Scribd logo
1 de 64
Baixar para ler offline
Introducción
a Java EE 7
Eudris Cabrera Rodríguez
@eudriscabrera @eudriscabrera
#JavaEE7
05 Julio 2014, Santo Domingo, R. D.
● 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 Eudris Cabrera
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
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
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.
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
Información
Empresariales
JDBC, JTA, Java EE Connector, JPA
Arquitectura de Java EE
Arquitectura Java EE
Arquitectura de 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 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 EE 7 APIs
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/ecabrerar/taller-introduccion-javaee7
Java Persistence API (JPA) 2.1
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
● Los elementos nuevos JPA 2.1:
○ Soporte procedimientos almacenados
○ Tipo de conversión
○ Criteria Update / Delete
○ Creación runtime named Queries.
○ Entre otros.
Java Persistence API (JPA) 2.1
JavaServer Faces 2.2 (JSR 344)
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
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 WebServices 2.1
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 API for JSON Processing 1.0 (JSR 353)
*
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
¿Preguntas?
Referencias
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.
Enlaces:
http://www.java.com/es/download/faq/techinfo.xml
https://javaee7.zeef.com/arjan.tijms
http://mgreau.com/posts/2013/11/11/javaee7-websocket-angularjs-wildfly.html
http://java.dzone.com/articles/whats-new-jax-rs-20
http://www.infoq.com/news/2013/06/Whats-New-in-JAX-RS-2.0
@eudriscabrera
@eudris
@ecabrerar
@eudriscabrera
Eudris Cabrera Rodríguez
Ingeniero Telemático
Desarrollador de Software / Consultor Informático
eudris@gmail.com

Mais conteúdo relacionado

Mais procurados

SOAP y Web Services
SOAP y Web ServicesSOAP y Web Services
SOAP y Web Services
edmodi
 
Basics of Object Oriented Programming
Basics of Object Oriented ProgrammingBasics of Object Oriented Programming
Basics of Object Oriented Programming
Abhilash Nair
 
Diagramas de objetos
Diagramas de objetosDiagramas de objetos
Diagramas de objetos
still01
 

Mais procurados (20)

SOAP y Web Services
SOAP y Web ServicesSOAP y Web Services
SOAP y Web Services
 
Jpa
JpaJpa
Jpa
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Java
 
Web Service and PHP, REST and SOAP
Web Service and PHP, REST and SOAPWeb Service and PHP, REST and SOAP
Web Service and PHP, REST and SOAP
 
Basics of Object Oriented Programming
Basics of Object Oriented ProgrammingBasics of Object Oriented Programming
Basics of Object Oriented Programming
 
Patrones GRASP
Patrones GRASPPatrones GRASP
Patrones GRASP
 
Herencia y Polimorfismo
Herencia y PolimorfismoHerencia y Polimorfismo
Herencia y Polimorfismo
 
Diagramas de objetos
Diagramas de objetosDiagramas de objetos
Diagramas de objetos
 
Curso Java Inicial 2 - Introducción y Sintaxis
Curso Java Inicial  2 - Introducción y SintaxisCurso Java Inicial  2 - Introducción y Sintaxis
Curso Java Inicial 2 - Introducción y Sintaxis
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Server Side Rendering, caching and performance
Server Side Rendering, caching and performanceServer Side Rendering, caching and performance
Server Side Rendering, caching and performance
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetos
 
6 Curso de POO en Java - clases y objetos
6  Curso de POO en Java - clases y objetos6  Curso de POO en Java - clases y objetos
6 Curso de POO en Java - clases y objetos
 
Gestion de base de datos - Modelo Conceptual
Gestion de base de datos - Modelo ConceptualGestion de base de datos - Modelo Conceptual
Gestion de base de datos - Modelo Conceptual
 
Design patterns in PHP
Design patterns in PHPDesign patterns in PHP
Design patterns in PHP
 
Spring Core
Spring CoreSpring Core
Spring Core
 
Tecnologia ASP.net
Tecnologia ASP.netTecnologia ASP.net
Tecnologia ASP.net
 
Semana 3 Herencia en Java
Semana 3   Herencia en JavaSemana 3   Herencia en Java
Semana 3 Herencia en Java
 
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
 

Destaque

Taller introducción Java EE 7 @UAPA
Taller introducción Java EE 7  @UAPATaller introducción Java EE 7  @UAPA
Taller introducción Java EE 7 @UAPA
Eudris Cabrera
 
Konsep ketuhanan
Konsep ketuhananKonsep ketuhanan
Konsep ketuhanan
hazrina22
 
Exploración y conocimiento del mundo 2
Exploración y conocimiento del mundo 2Exploración y conocimiento del mundo 2
Exploración y conocimiento del mundo 2
BrizeidaBM
 
[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
Eudris Cabrera
 
Deformacion plana
Deformacion planaDeformacion plana
Deformacion plana
Tino Lc
 
Grafías y mayúsculas, material de clase
Grafías y mayúsculas, material de claseGrafías y mayúsculas, material de clase
Grafías y mayúsculas, material de clase
Orlando Abanto
 

Destaque (18)

Taller introducción Java EE 7 @UAPA
Taller introducción Java EE 7  @UAPATaller introducción Java EE 7  @UAPA
Taller introducción Java EE 7 @UAPA
 
[ES] Manejadores de persistencia
[ES] Manejadores  de persistencia[ES] Manejadores  de persistencia
[ES] Manejadores de persistencia
 
Html5, Rest, JSON, Angular JS y Java EE 7 - Aplicaciones Web Modernas y Esca...
Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Esca...Html5, Rest, JSON, Angular JS y Java EE 7  - Aplicaciones Web Modernas y Esca...
Html5, Rest, JSON, Angular JS y Java EE 7 - Aplicaciones Web Modernas y Esca...
 
[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
 
[ES] Primeros pasos con Maven
[ES] Primeros pasos con Maven[ES] Primeros pasos con Maven
[ES] Primeros pasos con Maven
 
5 famosos hackers
5 famosos hackers5 famosos hackers
5 famosos hackers
 
Konsep ketuhanan
Konsep ketuhananKonsep ketuhanan
Konsep ketuhanan
 
2.3
2.32.3
2.3
 
Frases Nepô 2014
Frases Nepô 2014Frases Nepô 2014
Frases Nepô 2014
 
calentamiento global
calentamiento globalcalentamiento global
calentamiento global
 
Exploración y conocimiento del mundo 2
Exploración y conocimiento del mundo 2Exploración y conocimiento del mundo 2
Exploración y conocimiento del mundo 2
 
La pedagogía actual
La pedagogía actualLa pedagogía actual
La pedagogía actual
 
[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
 
Deformacion plana
Deformacion planaDeformacion plana
Deformacion plana
 
Grafías y mayúsculas, material de clase
Grafías y mayúsculas, material de claseGrafías y mayúsculas, material de clase
Grafías y mayúsculas, material de clase
 
Activism x Technology
Activism x TechnologyActivism x Technology
Activism x Technology
 
How to Battle Bad Reviews
How to Battle Bad ReviewsHow to Battle Bad Reviews
How to Battle Bad Reviews
 
The Presentation Come-Back Kid
The Presentation Come-Back KidThe Presentation Come-Back Kid
The Presentation Come-Back Kid
 

Semelhante a [ES] Introducción a Java EE 7

Modulo Jee Intro Pos Fp Une
Modulo Jee Intro  Pos Fp UneModulo Jee Intro  Pos Fp Une
Modulo Jee Intro Pos Fp Une
Marcos Jara
 
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
 
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component DeveloperGuia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
Oscar V
 
Jc Web2.0 Java Ee5 Net Beans
Jc Web2.0 Java Ee5 Net BeansJc Web2.0 Java Ee5 Net Beans
Jc Web2.0 Java Ee5 Net Beans
vicosw
 
1 curso javaserverfaces-presentacion_clase_1
1 curso javaserverfaces-presentacion_clase_11 curso javaserverfaces-presentacion_clase_1
1 curso javaserverfaces-presentacion_clase_1
josezapana
 

Semelhante a [ES] Introducción a Java EE 7 (20)

Introducción a JEE
Introducción a JEEIntroducción a JEE
Introducción a JEE
 
Modulo Jee Intro Pos Fp Une
Modulo Jee Intro  Pos Fp UneModulo Jee Intro  Pos Fp Une
Modulo Jee Intro Pos Fp Une
 
Introducción a Java y BEA (2008)
Introducción a Java y BEA (2008)Introducción a Java y BEA (2008)
Introducción a Java y BEA (2008)
 
01 jee5-componentes
01 jee5-componentes01 jee5-componentes
01 jee5-componentes
 
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)
 
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
 
[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
 
spring
springspring
spring
 
[ES] Fundamentos de Java Enterprise Edition
[ES] Fundamentos de Java Enterprise Edition [ES] Fundamentos de Java Enterprise Edition
[ES] Fundamentos de Java Enterprise Edition
 
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component DeveloperGuia de estudio para Oracle Certified Java EE 6 Web Component Developer
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
 
Frameworks J2EE
Frameworks J2EEFrameworks J2EE
Frameworks J2EE
 
WebLogic
WebLogicWebLogic
WebLogic
 
Oracle WebLogic Server
Oracle WebLogic ServerOracle WebLogic Server
Oracle WebLogic Server
 
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
 
Jc Web2.0 Java Ee5 Net Beans
Jc Web2.0 Java Ee5 Net BeansJc Web2.0 Java Ee5 Net Beans
Jc Web2.0 Java Ee5 Net Beans
 
1 curso javaserverfaces-presentacion_clase_1
1 curso javaserverfaces-presentacion_clase_11 curso javaserverfaces-presentacion_clase_1
1 curso javaserverfaces-presentacion_clase_1
 
Java ee 6
Java ee 6Java ee 6
Java ee 6
 
Expo
ExpoExpo
Expo
 
Exposicion JSF
Exposicion JSFExposicion JSF
Exposicion JSF
 
Sqlserver
SqlserverSqlserver
Sqlserver
 

[ES] Introducción a Java EE 7

  • 1. Introducción a Java EE 7 Eudris Cabrera Rodríguez @eudriscabrera @eudriscabrera #JavaEE7 05 Julio 2014, Santo Domingo, R. D.
  • 2. ● 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 Eudris Cabrera
  • 3. 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
  • 4. Objetivos ● Introducir los conceptos fundamentales de Java Enterprise Edition. ● Destacar los aspectos más importantes de Java EE 7
  • 5. 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
  • 6. 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.
  • 7. 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.
  • 8. 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. Java EE
  • 9. 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 Información Empresariales JDBC, JTA, Java EE Connector, JPA Arquitectura de Java EE
  • 11. Estructura de una Aplicación Empresarial Aplicación Empresarial multicapas
  • 12. 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.
  • 13. Servidores Java EE Servidores de aplicaciones certificados para Java EE 6
  • 15. 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.
  • 16. 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.
  • 19. 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
  • 20. 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.
  • 21. Java EE 7 APIs
  • 23. ● 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 EE 7 APIs
  • 24. 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
  • 25. Código fuente de los ejemplos en GitHub https://github.com/ecabrerar/taller-introduccion-javaee7
  • 26. Java Persistence API (JPA) 2.1
  • 27. 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.
  • 28. Java Persistence API (JPA) 2.1
  • 29. Java Persistence API (JPA) 2.1 Clase Entidad - JPA
  • 30. Java Persistence API (JPA) 2.1 Archivo Persistencia - JPA
  • 31. Java Persistence API (JPA) 2.1 Insertando un Objeto
  • 32. ● Los elementos nuevos JPA 2.1: ○ Soporte procedimientos almacenados ○ Tipo de conversión ○ Criteria Update / Delete ○ Creación runtime named Queries. ○ Entre otros. Java Persistence API (JPA) 2.1
  • 33. JavaServer Faces 2.2 (JSR 344)
  • 34. 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
  • 35. 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.
  • 36. 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.
  • 37. JavaServer Faces 2.2 (JSR 344) ● Managed Beans
  • 38. 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.
  • 39. 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.
  • 40. JavaServer Faces 2.2 (JSR 344) ● JSF 2.2 - File Upload
  • 41. JavaServer Faces 2.2 (JSR 344) ● JSF 2.2 - Soporte HTML5
  • 43. ● 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
  • 44. ● 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 WebServices 2.1
  • 45. 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.
  • 46. RESTful Web Services (JSR 339) Ejemplo Clase JAX-RS
  • 47. 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
  • 48. 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);
  • 49. 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);
  • 50. 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); } }
  • 51. 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(); } } }
  • 52. RESTful Web Services (JSR 339) ● Filtros
  • 53. Java API for JSON Processing 1.0 (JSR 353) *
  • 54. 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)
  • 55. 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
  • 56. Java API for JSON Processing 1.0 (JSR 353) Sintaxis JSON
  • 57. Java API for JSON Processing 1.0 (JSR 353) Construir objeto JSON con JsonBuilder
  • 58. Java API for JSON Processing 1.0 (JSR 353) Ejemplo de uso de JsonReader
  • 59. Java API for JSON Processing 1.0 (JSR 353) Ejemplo de uso de JsonWriter
  • 60. Java API for JSON Processing 1.0 (JSR 353) Escribiendo en un archivo usando JsonGenerator
  • 61. Java API for JSON Processing 1.0 (JSR 353) Leyendo un archivo con formato JSON utilizando JsonParser
  • 63. Referencias 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. Enlaces: http://www.java.com/es/download/faq/techinfo.xml https://javaee7.zeef.com/arjan.tijms http://mgreau.com/posts/2013/11/11/javaee7-websocket-angularjs-wildfly.html http://java.dzone.com/articles/whats-new-jax-rs-20 http://www.infoq.com/news/2013/06/Whats-New-in-JAX-RS-2.0
  • 64. @eudriscabrera @eudris @ecabrerar @eudriscabrera Eudris Cabrera Rodríguez Ingeniero Telemático Desarrollador de Software / Consultor Informático eudris@gmail.com