Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Proyecto Avatar
JavaScript en la JVM del Servidor
Ca...
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
¿Qué es el proyecto Avatar?
Un manera muy rápida y s...
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Agenda
Conceptos básicos (10 minutos)
Arquitectura y...
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Agenda
Conceptos básicos (10 minutos)
Arquitectura y...
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Conceptos básicos
5
Arquitectura aplicación Web Mode...
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Conceptos básicos
• JavaScript en el servidor
• Basa...
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Conceptos básicos
• Motor JavaScript sobre JVM
• Cum...
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Conceptos básicos
• Node en la JVM
8
Avatar.js = +
...
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Ventajas Avatar.js
• Reutilización de librerías y mi...
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
• Aprovechando la potencia de Chrome V8,
se desarrol...
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Agenda
Conceptos básicos (10 minutos)
Arquitectura y...
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 (JavaScrip...
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Servicios Avatar
14
Balanceo de carga, estado compar...
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...
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/...
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Ejemplo práctico: Reloj
• Registramos un servicio PU...
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Ejemplo práctico: Reloj
• Definición de modelos de d...
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Ejemplo práctico: Reloj
• Vinculamos mediante EL out...
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Repaso
• Framework de desarrollo de aplicaciones web...
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 23
El proyecto Avatar_ Carlos Martín Martínez
Upcoming SlideShare
Loading in …5
×

El proyecto Avatar_ Carlos Martín Martínez

1,235 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

El proyecto Avatar_ Carlos Martín Martínez

  1. 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. 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. 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 3
  4. 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. 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. 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. 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. 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. 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. 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. 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. 12. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Arquitectura 12
  13. 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. 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. 15. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Avatar EE 15 JPA, EJB, JMS
  16. 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. 17. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Ejemplo práctico Aplicación Reloj 17
  18. 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. 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. 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. 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. 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. 23. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 23

×