SlideShare una empresa de Scribd logo
1 de 24
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Proyecto Avatar
JavaScript en la JVM del Servidor
Carlos Martín Martínez
Technology Sales Consultant
Fusion Middleware
12 de Junio, 2014
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
¿Qué es el proyecto Avatar?
Un manera muy rápida y sencilla de crear aplicaciones
web ágiles
Un framework para desarrollar vistas y servicios utilizando
lenguajes estándar como JavaScript, HTML5 y CSS3,
aprovechando tecnologías como Node.js, Nashorn (JDK8),
REST, WebSockets y SSE
2
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Agenda
Conceptos básicos (10 minutos)
Arquitectura y Características (10 minutos)
Ejemplo práctico (10 minutos)
1
2
3
3
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Agenda
Conceptos básicos (10 minutos)
Arquitectura y Características (10 minutos)
Ejemplo práctico (10 minutos)
1
2
3
Oracle Confidential – Internal/Restricted/Highly Restricted 4
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Conceptos básicos
5
Arquitectura aplicación Web Moderna
Presentation
(Servlet/JSP,
JSF)
Connectivity
(WebSocket,
REST,SSE)
EnterpriseConnectivity
andBusinessLogic
Java EE / JVM
View
Controller
JavaScript
Browser
ClientServer
• Auge de “Single-page applications”
• Vista y controlador en el navegador
• Únicamente el modelo permanece en
el servidor
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Conceptos básicos
• JavaScript en el servidor
• Basado en motor Chrome v8
• Diseñado para aplicaciones web escalables
• Crisol de culturas: Java, .Net, PHP
• Más de 75.000 módulos
• Preceptos de Node.js
– La concurrencia es complicada  Código de desarrollador se ejecuta en un único hilo
– Bloquear en E/S es malo  Bucle de eventos
6
Node.js
HTTP Callback Example:
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Conceptos básicos
• Motor JavaScript sobre JVM
• Cumple con ECMAScript 5.1
• Incluido en JDK8
• Interoperabilidad Java  JavaScript
7
Nashorn
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Conceptos básicos
• Node en la JVM
8
Avatar.js = +
 Modelo programación Node
– Código en JavaScript
– Único bucle de eventos / hilo
– Importa módulos Node
 Invoca código Java
– Tipos y librerías Java
– new java.lang.Thread();
– new com.mydom.MyObj()Java
JavaScript
java.lang.Thread
java.util.SortedSet
java.math.BigInteger
Node App
Proceso JVM
com.mydom.MyObj
require (‘async’)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Ventajas Avatar.js
• Reutilización de librerías y middleware Java existentes
• Puede aprovechar múltiples cores
• Securización de aplicaciones con el modelo de seguridad de Java
• Gestión de la aplicación con herramientas Java existentes
• – VisualVM, MBeans, Flight Recorder, Mission Control
• Acceso a las APIs de Java para complementar las APIs de Node
• – BigInteger, Date, Calendar, XML, SQL, Multicast, etc
• Suficientemente pequeño para uso embebido (menos de 2 MB)
9
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
• Aprovechando la potencia de Chrome V8,
se desarrolla Node.js para, básicamente,
ejecutar código JavaScript fuera de
navegadores, es decir, en servidores
• Diseñado para aplicaciones con poco
tiempo de proceso y mucho de E/S
• Programación mono-hilo
¡STOP!
10
Repaso de conceptosView
Controller
JavaScript
Browser
• Auge de “Single-page applications”
• Vista y controlador en el navegador
• Únicamente el modelo permanece en el
servidor
• Código JavaScript cada vez mayor
• Necesidad de interpretes (motores) rápidos
• Surge Chrome V8, más rápido que JScript
(en Internet Explorer), SpiderMonkey (en
Firefox) y JavaScriptCore (en Safari)
• Donde Chrome V8 ofrece potencia,
Nashorn ofrece integración completa de
JavaScript con JVM y, por tanto con
décadas de desarrollo de librerías y
módulos totalmente probados
• ¿Cómo introducir los conceptos y módulos
innovadores del mundo Node en el
probado mundo JEE, con su enorme
ecosistema de librerías?
Avatar.js¿VS?
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Agenda
Conceptos básicos (10 minutos)
Arquitectura y Características (10 minutos)
Ejemplo práctico (10 minutos)
1
2
3
11
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Arquitectura
12
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
• service
– Contiene los servicios Avatar (JavaScript)
– Rest, WebSocket o SSE
– Aprovechan módulos Node, 3rd Party o
librerías Java
• view
– Contiene los HTML, CSS y JS necesarios para
mostrar la aplicación
• WEB-INF
– Únicamente para que la aplicación sea
reconocida por el contenedor de Servlets
• avatar.properties
– debug=true
– service.threads=1 ; cores / 2
13
Estructura aplicación Avatar
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Servicios Avatar
14
Balanceo de carga, estado compartido y almacenamiento de datos
Java
JVM Process
HTTP Load Balancer
JavaScript
Services Services ServicesServices
shared state
Database
Data
Notification
JSON JSON JSON JSON
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Avatar EE
15
JPA, EJB, JMS
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Agenda
Conceptos básicos (10 minutos)
Arquitectura y Características (10 minutos)
Ejemplo práctico (10 minutos)
1
2
3
16
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Ejemplo práctico
Aplicación Reloj
17
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Ejemplo práctico: Reloj
• Fichero clock/service/src/main.js
• Primer paso, referenciar “avatar”
– var avatar = require("org/glassfish/avatar");
• Registramos servicio REST en la URL data/message que establece el valor de message al valor de msg de
la petición PUT
– avatar.registerRestService({ url: "data/message" }, function() { this.onPut = function(request, response) { message =
request.data.msg; response.send(null); }; } );
18
Servicios (REST)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Ejemplo práctico: Reloj
• Registramos un servicio PUSH en la url push/time que, al iniciar la conexión PUSH (onOpen), establece
un valor de timeout de 1000ms y sobreescribe la función onTimeout para devolver el resultado de la
función getTime
• avatar.registerPushService({ url: "push/time" }, function() { this.onOpen = this.onTimeout = function(context) {
context.setTimeout(1000); return context.sendMessage(getTime()); }; } );
• Función getTime
– var getTime = function() { var current = new Date(); return { msg: 'The server time is ', h: current.getHours(), m:
current.getMinutes(), s: current.getSeconds() }; };
19
Servicios (PUSH/SSE)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Ejemplo práctico: Reloj
• Definición de modelos de datos:
– Defino el modelo de datos Message vinculado a un servicio REST con el atributo msg
• <script data-model="rest"> var Message = function() { this.msg = ''; }; </script>
– Defino el modelo de datos Time vinculado a un servicio PUSH con atributos msg, h, m
y s
• <script data-model="push"> var Time = function() { this.msg = this.h = this.m = this.s = ''; }; </script>
• Instanciación de los modelos mediante llamada al servicio correspondiente
– <script data-type="Message" data-instance="message" data-
url="data/message"></script>
– <script data-type="Time" data-instance="time" data-url="push/time"></script>
20
Vista
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Ejemplo práctico: Reloj
• Vinculamos mediante EL output HTML con los valores del modelo de datos time
– <output class="time">#{time.msg}#{time.h}:#{time.m}:#{time.s}</output><br><br>
• Vinculamos mediante EL el input HTML con el valor del modelo message
– <label for="im">New Message: </label>
– <input id="im" size="35" data-value="#{message.msg}"/>
• Vinculamos mediante EL la función onclick del button HTML con el método PUT
(actualización) del servicio REST vinculado al modelo message
– <button onclick="#{message.put()}">Update</button>
• El uso de EL (Expression Language) evita la necesidad de crear lógica de control en
JavaScript para hacer la página dinámica
21
Vista
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Repaso
• Framework de desarrollo de aplicaciones web ágiles
– Vistas: HTML5, CSS3 y JavaScript
– Servicios REST, WS y SSE: Avatar.js (implementación de Node sobre Nashorn).
• Ejecución código Java
• Aprovecha la infraestructura Java EE
• Optimización multi-hilo
– Balanceo de carga entre hilos
– Estado compartido entre hilos
22
Conceptos Proyecto Avatar
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 23
Proyecto Avatar - JavaScript sobre la JVM del servidor

Más contenido relacionado

Similar a Proyecto Avatar - JavaScript sobre la JVM del servidor

Web framework ligeros y micros en java barcamp 2014
Web framework ligeros y micros en java   barcamp 2014Web framework ligeros y micros en java   barcamp 2014
Web framework ligeros y micros en java barcamp 2014Carlos Camacho
 
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 DeveloperOscar V
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a TomcatIker Canarias
 
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
 
Web logic multi tenancy fundamentals
Web logic multi tenancy fundamentalsWeb logic multi tenancy fundamentals
Web logic multi tenancy fundamentalsCJava Peru
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007guest976d083
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007guestd24c393
 
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
Aplicaciones web con jakarta struts  - Javier Oliver FulgueraAplicaciones web con jakarta struts  - Javier Oliver Fulguera
Aplicaciones web con jakarta struts - Javier Oliver FulgueraJavier Oliver Fulguera
 
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptxSibilinoAndante
 
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.pptintroduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.pptBYRONMIGUELSUBUYUCPA
 
Web Service buscador de localizaciones de IP’s
Web Service buscador de localizaciones de IP’sWeb Service buscador de localizaciones de IP’s
Web Service buscador de localizaciones de IP’sPablo Pellegrinet
 
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
 
An evening with ... Ionic Framework Meetup
An evening with ... Ionic Framework Meetup An evening with ... Ionic Framework Meetup
An evening with ... Ionic Framework Meetup Arkhotech
 

Similar a Proyecto Avatar - JavaScript sobre la JVM del servidor (20)

ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3
 
Web framework ligeros y micros en java barcamp 2014
Web framework ligeros y micros en java   barcamp 2014Web framework ligeros y micros en java   barcamp 2014
Web framework ligeros y micros en java barcamp 2014
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
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
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a Tomcat
 
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
 
Web logic multi tenancy fundamentals
Web logic multi tenancy fundamentalsWeb logic multi tenancy fundamentals
Web logic multi tenancy fundamentals
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
 
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
Aplicaciones web con jakarta struts  - Javier Oliver FulgueraAplicaciones web con jakarta struts  - Javier Oliver Fulguera
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
 
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
 
Charla
CharlaCharla
Charla
 
10.desarrollowebconjava
10.desarrollowebconjava10.desarrollowebconjava
10.desarrollowebconjava
 
introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
 
SERVLET BASICS
SERVLET BASICSSERVLET BASICS
SERVLET BASICS
 
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.pptintroduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
 
Web Service buscador de localizaciones de IP’s
Web Service buscador de localizaciones de IP’sWeb Service buscador de localizaciones de IP’s
Web Service buscador de localizaciones de IP’s
 
Arquitectura
Arquitectura Arquitectura
Arquitectura
 
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)
 
An evening with ... Ionic Framework Meetup
An evening with ... Ionic Framework Meetup An evening with ... Ionic Framework Meetup
An evening with ... Ionic Framework Meetup
 

Último

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
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
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
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
 
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
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
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
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
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
 
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
 
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
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 

Último (20)

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
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
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
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
 
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
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
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)
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
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
 
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
 
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...
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 

Proyecto Avatar - JavaScript sobre la JVM del servidor

  • 1. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Proyecto Avatar JavaScript en la JVM del Servidor Carlos Martín Martínez Technology Sales Consultant Fusion Middleware 12 de Junio, 2014
  • 2. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | ¿Qué es el proyecto Avatar? Un manera muy rápida y sencilla de crear aplicaciones web ágiles Un framework para desarrollar vistas y servicios utilizando lenguajes estándar como JavaScript, HTML5 y CSS3, aprovechando tecnologías como Node.js, Nashorn (JDK8), REST, WebSockets y SSE 2
  • 3. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Agenda Conceptos básicos (10 minutos) Arquitectura y Características (10 minutos) Ejemplo práctico (10 minutos) 1 2 3 3
  • 4. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Agenda Conceptos básicos (10 minutos) Arquitectura y Características (10 minutos) Ejemplo práctico (10 minutos) 1 2 3 Oracle Confidential – Internal/Restricted/Highly Restricted 4
  • 5. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Conceptos básicos 5 Arquitectura aplicación Web Moderna Presentation (Servlet/JSP, JSF) Connectivity (WebSocket, REST,SSE) EnterpriseConnectivity andBusinessLogic Java EE / JVM View Controller JavaScript Browser ClientServer • Auge de “Single-page applications” • Vista y controlador en el navegador • Únicamente el modelo permanece en el servidor
  • 6. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Conceptos básicos • JavaScript en el servidor • Basado en motor Chrome v8 • Diseñado para aplicaciones web escalables • Crisol de culturas: Java, .Net, PHP • Más de 75.000 módulos • Preceptos de Node.js – La concurrencia es complicada  Código de desarrollador se ejecuta en un único hilo – Bloquear en E/S es malo  Bucle de eventos 6 Node.js HTTP Callback Example:
  • 7. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Conceptos básicos • Motor JavaScript sobre JVM • Cumple con ECMAScript 5.1 • Incluido en JDK8 • Interoperabilidad Java  JavaScript 7 Nashorn
  • 8. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Conceptos básicos • Node en la JVM 8 Avatar.js = +  Modelo programación Node – Código en JavaScript – Único bucle de eventos / hilo – Importa módulos Node  Invoca código Java – Tipos y librerías Java – new java.lang.Thread(); – new com.mydom.MyObj()Java JavaScript java.lang.Thread java.util.SortedSet java.math.BigInteger Node App Proceso JVM com.mydom.MyObj require (‘async’)
  • 9. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Ventajas Avatar.js • Reutilización de librerías y middleware Java existentes • Puede aprovechar múltiples cores • Securización de aplicaciones con el modelo de seguridad de Java • Gestión de la aplicación con herramientas Java existentes • – VisualVM, MBeans, Flight Recorder, Mission Control • Acceso a las APIs de Java para complementar las APIs de Node • – BigInteger, Date, Calendar, XML, SQL, Multicast, etc • Suficientemente pequeño para uso embebido (menos de 2 MB) 9
  • 10. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | • Aprovechando la potencia de Chrome V8, se desarrolla Node.js para, básicamente, ejecutar código JavaScript fuera de navegadores, es decir, en servidores • Diseñado para aplicaciones con poco tiempo de proceso y mucho de E/S • Programación mono-hilo ¡STOP! 10 Repaso de conceptosView Controller JavaScript Browser • Auge de “Single-page applications” • Vista y controlador en el navegador • Únicamente el modelo permanece en el servidor • Código JavaScript cada vez mayor • Necesidad de interpretes (motores) rápidos • Surge Chrome V8, más rápido que JScript (en Internet Explorer), SpiderMonkey (en Firefox) y JavaScriptCore (en Safari) • Donde Chrome V8 ofrece potencia, Nashorn ofrece integración completa de JavaScript con JVM y, por tanto con décadas de desarrollo de librerías y módulos totalmente probados • ¿Cómo introducir los conceptos y módulos innovadores del mundo Node en el probado mundo JEE, con su enorme ecosistema de librerías? Avatar.js¿VS?
  • 11. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Agenda Conceptos básicos (10 minutos) Arquitectura y Características (10 minutos) Ejemplo práctico (10 minutos) 1 2 3 11
  • 12. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Arquitectura 12
  • 13. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | • service – Contiene los servicios Avatar (JavaScript) – Rest, WebSocket o SSE – Aprovechan módulos Node, 3rd Party o librerías Java • view – Contiene los HTML, CSS y JS necesarios para mostrar la aplicación • WEB-INF – Únicamente para que la aplicación sea reconocida por el contenedor de Servlets • avatar.properties – debug=true – service.threads=1 ; cores / 2 13 Estructura aplicación Avatar
  • 14. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Servicios Avatar 14 Balanceo de carga, estado compartido y almacenamiento de datos Java JVM Process HTTP Load Balancer JavaScript Services Services ServicesServices shared state Database Data Notification JSON JSON JSON JSON
  • 15. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Avatar EE 15 JPA, EJB, JMS
  • 16. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Agenda Conceptos básicos (10 minutos) Arquitectura y Características (10 minutos) Ejemplo práctico (10 minutos) 1 2 3 16
  • 17. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Ejemplo práctico Aplicación Reloj 17
  • 18. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Ejemplo práctico: Reloj • Fichero clock/service/src/main.js • Primer paso, referenciar “avatar” – var avatar = require("org/glassfish/avatar"); • Registramos servicio REST en la URL data/message que establece el valor de message al valor de msg de la petición PUT – avatar.registerRestService({ url: "data/message" }, function() { this.onPut = function(request, response) { message = request.data.msg; response.send(null); }; } ); 18 Servicios (REST)
  • 19. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Ejemplo práctico: Reloj • Registramos un servicio PUSH en la url push/time que, al iniciar la conexión PUSH (onOpen), establece un valor de timeout de 1000ms y sobreescribe la función onTimeout para devolver el resultado de la función getTime • avatar.registerPushService({ url: "push/time" }, function() { this.onOpen = this.onTimeout = function(context) { context.setTimeout(1000); return context.sendMessage(getTime()); }; } ); • Función getTime – var getTime = function() { var current = new Date(); return { msg: 'The server time is ', h: current.getHours(), m: current.getMinutes(), s: current.getSeconds() }; }; 19 Servicios (PUSH/SSE)
  • 20. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Ejemplo práctico: Reloj • Definición de modelos de datos: – Defino el modelo de datos Message vinculado a un servicio REST con el atributo msg • <script data-model="rest"> var Message = function() { this.msg = ''; }; </script> – Defino el modelo de datos Time vinculado a un servicio PUSH con atributos msg, h, m y s • <script data-model="push"> var Time = function() { this.msg = this.h = this.m = this.s = ''; }; </script> • Instanciación de los modelos mediante llamada al servicio correspondiente – <script data-type="Message" data-instance="message" data- url="data/message"></script> – <script data-type="Time" data-instance="time" data-url="push/time"></script> 20 Vista
  • 21. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Ejemplo práctico: Reloj • Vinculamos mediante EL output HTML con los valores del modelo de datos time – <output class="time">#{time.msg}#{time.h}:#{time.m}:#{time.s}</output><br><br> • Vinculamos mediante EL el input HTML con el valor del modelo message – <label for="im">New Message: </label> – <input id="im" size="35" data-value="#{message.msg}"/> • Vinculamos mediante EL la función onclick del button HTML con el método PUT (actualización) del servicio REST vinculado al modelo message – <button onclick="#{message.put()}">Update</button> • El uso de EL (Expression Language) evita la necesidad de crear lógica de control en JavaScript para hacer la página dinámica 21 Vista
  • 22. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Repaso • Framework de desarrollo de aplicaciones web ágiles – Vistas: HTML5, CSS3 y JavaScript – Servicios REST, WS y SSE: Avatar.js (implementación de Node sobre Nashorn). • Ejecución código Java • Aprovecha la infraestructura Java EE • Optimización multi-hilo – Balanceo de carga entre hilos – Estado compartido entre hilos 22 Conceptos Proyecto Avatar
  • 23. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 23

Notas del editor

  1. This is a Title Slide with Picture slide ideal for including a picture with a brief title, subtitle and presenter information. To customize this slide with your own picture: Right-click the slide area and choose Format Background from the pop-up menu. From the Fill menu, click Picture and texture fill. Under Insert from: click File. Locate your new picture and click Insert.
  2. ¿Que qué es el proyecto Avatar? Antes de contaros ningún detalle quiero que os quedéis con una de estas 2 definiciones para cuando mañana os pregunten que os contaron ayer en UltimateJava sobre eso del Proyecto Avatar podáis contestarles en función de si os lo preguntan subiendo al ascensor o subiendo por las escaleras: Ascensor: El proyecto Avatar es una nueva manera, muy rápida y sencilla, de crear aplicacoines web ágiles Escaleras: Un framework para desarrollar vistas y servicois utilizando lenguajes estándar, end to end, aprovechando tecnologías como Node.js y Nashorn (JDK8), de las que a continuación os hablaré, y REST, WebSockets y SSE, de las que os acaba de hablar Joan Carles.
  3. Pero si os preguntan sobre qué es el proyecto Avatar durante el desayuno o el almuerzo, vais a necesitar una definición un poco más larga y, para empezar, comprender unos conceptos básicos con los que algunos de los que estáis aquí es probable que ya estéis familiarizados. Tras 10 minutos ya estaremos listos para hablar de la arquitectura y las características del proyecto Avatar y finalmente, porque una demostración vale más que mil lecciones, veremos un ejemplo práctico.
  4. Empezamos!
  5. Esta es la arquitectura de aplicación web a la que todos los aquí presentes estamos más que acostumbrados. Tenemos una serie de tecnologías exclusivas del servidor con su correspondiente lenguaje, Java, por si había alguna duda ;), y otras propias del cliente, lo cual siempre ha sido un engorro ya que normalmente se requiere estar especializado en front-end o back-end. No le pidas a un programador de back-end que te haga la web promocional de una película, con más efectos especiales que la película en si, y ni se te ocurra pedirle al gurú de CSS y JavaScript que te cree los servicios que dicha web promocional. ¿No podríamos unir un poco más ambos mundos? Hablando de gurús del front-end, están ayudando a que las tecnologías de cliente están avanzando a pasos agigantados como se puede ver en la página de Facebook, que responden a la moda de las “Single-page applications”: aplicacoines web donde tanto visualización como “navegación” se controlan totalmente mediante JavaScript, HTML y CSS. Esto ha aumentado drásticamente la relevancia de los motores de JavaScript. A mayor potencia, mayor fluidez de la página. Entre los motores JavaScript actuales, destaca el Chrome V8, el que utiliza el navegador homónimo. Tenemos el auge de JavaScript por un lado pero seguimos necesitando otros lenguajes en el otro. ¿Podemos saltar esta brecha, unificando el lenguaje de desarrollo de una aplicación web, desde el front hasta el back-end?
  6. La respuesta es Node.js. Un ingeniero llamado Ryan Dahl se le ocurrió coger las librerías del Chrome V8 y construir en C++ una capa de servicios JavaScript que nos permite ejecutar código JavaScript fuera de su habitat natural, los navegadores, para ejecutarlo directamente en del lado del servidor. Node.js se ha hecho muy popular ya que todas las tecnologías de back-end, .Net, Java, PHP… siempre han tenido en común el front-end, el JavaScript, y ahora es este JavaScript quien viene a ponerse entre dichas tecnologías, por lo tanto, la comunidad de desarrolladores es muy numerosa y aportan distintas ideas en función de la plataforma de la que vienen y hoy por hoy ya se han desarrollado más de 75.000 módulos. El modelo de programación que plantea Node se basa en 2 preceptos: 1.- La concurrencia es complicada y no debería exponer al programador, como ocurre en Java, por ejemplo. Java no obstante tiene numerosas APIs asíncroncas para evitar problemas de concurrencia 2.- Las llamadas a dispositivos bloqueantes es mala, ya que ralentiza el rendimiento final de la aplicación. Programando en Node.js, en lugar de esperar a una petición del cliente y procesarla, registramos nuestro interés por un evento de manera que cuando ocurra dicho evento (una petición HTTP The Node programming model is very different from the Java EE programming model. Java EE is based on a multi-threaded runtime, where concurrency is often exposed to the developer. Node, on the other hand, takes the approach that developing multi-threaded applications is hard. There are potentially thousands of concurrent connections and dealing with synchronized blocks of code, deadlocks, race conditions, etc, is hard. In addition, many application platforms block on I/O. Blocking I/O blocks a thread from running, and therefore wastes system resources. By the way, historically this was true even with Java EE, but more recent versions of Java EE have added asynchronous APIs and Non-blocking I/O to address this. Node takes a very different approach as a web application platform. Node on the Chrome v8 JavaScript engine executes user code in a single thread with a development model that is similar to writing browser apps. In Node’s reactive model, developers register interest with events (callbacks/promises) as the occur in the system. Events are added to the event queue and processed by the event queue. If you have ever written User Interface code (onClick for example), this approach is very similar. The difference is that the event loop can handle many events in parallel because I/O calls to slower resources (network & filesystem for example) are non-blocking, executing in their own threads that do not execute the developer’s code. What we have here is an example of a simple HTTP server written in JavaScript. Instead of waiting for a request and then processing it, we register a function (in the dark grey box) that is called each time a client makes an HTTP request. Each client request is added to the event queue to be processed.
  7. Nashorn is a new EcmaScript 5.1 compliant JavaScript engine for the JVM. Nashorn ships with JDK 8 and replaces the older Rhino engine. Nashorn utlizes the InvokeDynamic bytecode introduced in JDK 7 for improved performance. Say something here about security. What really differentiates Rhino from the Chrome v8 engine is the fact that you can seamlessly invoke Java code from within JavaScript code. <CLICK> As you can see from this snippet of code, we can easily create a javafx client-side application by invoking Java APIs from JavaScript. In this case, we create a Button object, assign the button text, and invoke a callback when the button is pushed.
  8. Nashorn is a new EcmaScript 5.1 compliant JavaScript engine for the JVM. Nashorn ships with JDK 8 and replaces the older Rhino engine. Nashorn utlizes the InvokeDynamic bytecode introduced in JDK 7 for improved performance. Say something here about security. What really differentiates Rhino from the Chrome v8 engine is the fact that you can seamlessly invoke Java code from within JavaScript code. <CLICK> As you can see from this snippet of code, we can easily create a javafx client-side application by invoking Java APIs from JavaScript. In this case, we create a Button object, assign the button text, and invoke a callback when the button is pushed.
  9. Scaling a node application typically requires adding node processes that run the same application. From a Java perspective, we can accomplish this by replicating the application across new threads within the same JVM. Each thread is essentially a new node event loop, maintaining the single-threaded node programming model. In addition, HTTP requests are automatically load balanced across the threads by the Avatar framework. This offers in-process scaling with no management overhead. Because we have multiple instances of the same application in the same JVM, they may want to share state. ¡¡Hay que tener cuidado al compartir estado a través de objetos Java!!
  10. This is a Announcement slide ideal for including a picture and partner or product logo with a brief title and subtitle or description. To Replace the Picture on this sample slide (this applies to all slides in this template that contain replaceable pictures) Select the sample picture and press Delete. Click the icon inside the shape to open the Insert Picture dialog box. Navigate to the location where the picture is stored, select desired picture and click on the Insert button to fit the image proportionally within the shape. Note: Do not right-click the image to change the picture inside the picture placeholder. This will change the frame size of the picture placeholder. Instead, follow the steps outlined above. To Replace the LOGO on this sample slide: Right-click the sample LOGO and choose Change Picture. Navigate to the location where the new logo is stored, select desired logo file and click on the Open button to replace the sample logo.
  11. El primer argumento de registerRestService es la URL del servicio mientras que el segundo es la implementación del mismo
  12. Ejemplo aplicacion Avatar>