SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
Scalable JavaScript applications 
with Project Nashorn
Speakers 
Leonardo Zanivan 
Software Architect, Trier Sistemas 
github.com/panga 
@leonardopanga 
Michel Graciano 
Software Architect, Betha Sistemas 
github.com/mgraciano 
@mgraciano
Agenda 
● Why JS in the server 
● Why the JVM 
● Nashorn ecosystem 
● Vert.x and Avatar/Avatar.js 
● Q&A
Why JS in the server 
● Asynchronous by nature 
● Native JSON support 
● Language reuse 
● Easier developer transition
Why the JVM 
● Multilanguage 
● APM Tools 
● Access to the Java ecosystem 
○ Domain models already implemented 
○ Java EE 
○ Core and third parties Java libraries
Nashorn 
● JDK 8 Compact 1 Profile with extension 
● Restrictions (browsers API, DOM) 
● No native CommonJS implementation 
● ECMA 5.1 + Rhino compatibility 
● jjs interactive command line tool
Nashorn 
● JDK 8u20 
○ JDK-8032068: sourceURL directives 
○ JDK-8021350: Share script classes between 
threads/globals 
● JDK 8u40 
○ JEP 196: Nashorn Optimistic Typing 
○ JEP 202: Nashorn Class Filter 
○ JEP 203: Initial ES6 implementation (const & let) 
● JEP 194: Nashorn Code Persistence (lazy compilation)
But how to scale it?
But how to scale it? 
Architectures and Technologies
Event-driven architecture 
● Event-loops 
● Async non-blocking IO 
● Reactive system 
● Event bus
Event-driven architecture
Microservice architecture 
● Focused on specific business 
● Well defined & distributed 
● Loosely coupled 
● Testable 
● Scalable
Microservices Architecture
Vert.x 
● http://vertx.io/ 
● Based on Netty 
● Sponsored by Red Hat 
● Winner of JAX Innovation Awards 2014 
@timfox: Writing Highly Concurrent Polyglot Applications with Vert.x 
[CON7902] Thursday, Oct 2, 11:30 AM
Vert.x 
● Key benefits 
○ Polyglot 
○ Event bus (async & worker verticles) 
○ Create reactive applications 
○ Microservices ready 
○ Strong community involvement
Vert.x Architecture
Vert.x 
● Key benefits 
○ Easy deployment 
■ CLI, API, mods, runtime deps resolution 
○ Good build tools support (fat jar, auto-redeploy) 
○ Native Cluster & HA with Hazelcast 
○ Tons of extensions available
Vert.x 
● Challenges 
○ Updated documentation 
○ Verticle monitoring 
○ Limited transactions support 
○ Doesn’t have distributed maps yet (2.x) 
○ Nashorn debugging support (PR to be merged)
Vert.x 
● Vert.x 3 highlights 
○ JDK 8+ with Nashorn & Lambda 
○ No more module system* 
○ Clustered shared data 
○ Event bus proxies & codecs 
○ Ext stack (MongoDB, SockJS, Route, Rx)
Demo 
● Real-time notification service using 
websockets over nashorn integrating with 
a legacy Java EE app
Avatar.js 
● https://avatar-js.java.net 
● Oracle sponsored 
● Focus on bringing the node programming 
model, APIs and module ecosystem to the 
Java platform
Avatar.js
Avatar 
● https://avatar.java.net 
● Oracle sponsored 
● Focus on Thin Server Architecture 
○ Supports REST, WebSocket and Server-Sent 
Events 
● Built on Avatar.js
Avatar Architecture
Avatar EE Architecture
Avatar 
● Deploying an application on Glassfish 4 
○ asadmin deploy ~/projects/<app-folder-name> 
● Running the application 
○ http://localhost:8080/<app-folder-name>
Avatar/Avatar.js 
● Key benefits 
○ Avatar Services use an Actor-like concurrency 
model 
○ NPM modules support 
○ Strong Java EE integration 
○ Debugging
Avatar/Avatar.js 
● Challenges 
○ Weak community involvement 
○ Low activity and no stable release 
○ Glassfish / Weblogic only 
○ Model Store API supports only Oracle NoSQL for 
schemaless database
Benchmark 
● Some simple and naive scenarios 
○ Posting and querying from database 
○ Returning a simple JSON response 
○ String concatenation 
○ Fibonacci calculation
Benchmark 
● Node.js 0.10.29 (2014-06-16) 
● Avatar.js 0.10.28-SNAPSHOT (2014-07-20) 
● Vert.X 2.1.1 (2014-06-18) 
● Avatar 1.0-ea-SNAPSHOT (2014-07-26) 
● JDK 8u5
Some Fib(30) results
Some Fib(30) results
Some Fib(30) results
Q&A
Credits 
● Event-loop & Vert.X architecture 
○ Slideshare presentation http://bit.ly/1qz6KUb 
● Microservice architecture 
○ http://martinfowler.com/articles/microservices.html 
● Avatar.js architecture 
○ Project Avatar.js website 
● Avatar and Avatar EE architectures 
○ Project Avatar website
Thank you! 
@leonardopanga 
@mgraciano 
● Sources 
○ github.com/mgraciano/javaone-2014 
○ github.com/panga/javaone2014-benchmarks

Weitere ähnliche Inhalte

Was ist angesagt?

blueMarine Sailing with NetBeans Platform
blueMarine Sailing with NetBeans PlatformblueMarine Sailing with NetBeans Platform
blueMarine Sailing with NetBeans Platform
Fabrizio Giudici
 
NODE JS OC Meetup 1
NODE JS OC Meetup 1NODE JS OC Meetup 1
NODE JS OC Meetup 1
eddify
 
Netflix Data Benchmark @ HPTS 2017
Netflix Data Benchmark @ HPTS 2017Netflix Data Benchmark @ HPTS 2017
Netflix Data Benchmark @ HPTS 2017
Ioannis Papapanagiotou
 
Mage Titans - Magento 2 Frontend Framework - UI Components
Mage Titans - Magento 2 Frontend Framework - UI ComponentsMage Titans - Magento 2 Frontend Framework - UI Components
Mage Titans - Magento 2 Frontend Framework - UI Components
vkorotun
 

Was ist angesagt? (20)

Kaunas JUG#2: Devoxx 2013 (Saulius Tvarijonas)
Kaunas JUG#2: Devoxx 2013 (Saulius Tvarijonas)Kaunas JUG#2: Devoxx 2013 (Saulius Tvarijonas)
Kaunas JUG#2: Devoxx 2013 (Saulius Tvarijonas)
 
Node.js Test
Node.js TestNode.js Test
Node.js Test
 
TiDB Introduction - San Francisco MySQL Meetup
TiDB Introduction - San Francisco MySQL MeetupTiDB Introduction - San Francisco MySQL Meetup
TiDB Introduction - San Francisco MySQL Meetup
 
blueMarine Sailing with NetBeans Platform
blueMarine Sailing with NetBeans PlatformblueMarine Sailing with NetBeans Platform
blueMarine Sailing with NetBeans Platform
 
Managing Node.js Instances with Oracle APEX
Managing Node.js Instances with Oracle APEXManaging Node.js Instances with Oracle APEX
Managing Node.js Instances with Oracle APEX
 
NODE JS OC Meetup 1
NODE JS OC Meetup 1NODE JS OC Meetup 1
NODE JS OC Meetup 1
 
Introducing MagnetoDB, a key-value storage sevice for OpenStack
Introducing MagnetoDB, a key-value storage sevice for OpenStackIntroducing MagnetoDB, a key-value storage sevice for OpenStack
Introducing MagnetoDB, a key-value storage sevice for OpenStack
 
SFScon16 - Michele Baldessari: "OpenStack – An introduction"
SFScon16 - Michele Baldessari: "OpenStack – An introduction"SFScon16 - Michele Baldessari: "OpenStack – An introduction"
SFScon16 - Michele Baldessari: "OpenStack – An introduction"
 
OSMC 2008 | Nagios Eventbroker Modules by Andreas Ericsson
OSMC 2008 | Nagios Eventbroker Modules by Andreas EricssonOSMC 2008 | Nagios Eventbroker Modules by Andreas Ericsson
OSMC 2008 | Nagios Eventbroker Modules by Andreas Ericsson
 
Netflix Data Benchmark @ HPTS 2017
Netflix Data Benchmark @ HPTS 2017Netflix Data Benchmark @ HPTS 2017
Netflix Data Benchmark @ HPTS 2017
 
Cloud Native and CNCF
Cloud Native and CNCFCloud Native and CNCF
Cloud Native and CNCF
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
 
Hashi talk israel
Hashi talk  israelHashi talk  israel
Hashi talk israel
 
Rolando Santamaría Masó - Simplicity meets scalability - code.talks 2015
Rolando Santamaría Masó - Simplicity meets scalability - code.talks 2015Rolando Santamaría Masó - Simplicity meets scalability - code.talks 2015
Rolando Santamaría Masó - Simplicity meets scalability - code.talks 2015
 
Mage Titans - Magento 2 Frontend Framework - UI Components
Mage Titans - Magento 2 Frontend Framework - UI ComponentsMage Titans - Magento 2 Frontend Framework - UI Components
Mage Titans - Magento 2 Frontend Framework - UI Components
 
oVirt – open your virtual datacenter
oVirt – open your virtual datacenteroVirt – open your virtual datacenter
oVirt – open your virtual datacenter
 
How we build Videome
How we build VideomeHow we build Videome
How we build Videome
 
MariaDB Encryption using AWS Key Management Service
MariaDB Encryption using AWS Key Management ServiceMariaDB Encryption using AWS Key Management Service
MariaDB Encryption using AWS Key Management Service
 
Kubernetes best practices.odf
Kubernetes best practices.odfKubernetes best practices.odf
Kubernetes best practices.odf
 
[WSO2Con USA 2018] Deploying Applications in K8S and Docker
[WSO2Con USA 2018] Deploying Applications in K8S and Docker[WSO2Con USA 2018] Deploying Applications in K8S and Docker
[WSO2Con USA 2018] Deploying Applications in K8S and Docker
 

Ähnlich wie CON6423: Scalable JavaScript applications with Project Nashorn

20141111_SOS3_Gallo
20141111_SOS3_Gallo20141111_SOS3_Gallo
20141111_SOS3_Gallo
Andrea Gallo
 

Ähnlich wie CON6423: Scalable JavaScript applications with Project Nashorn (20)

JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
 
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scale
 
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
Cassandra Summit 2015 - Building a multi-tenant API PaaS with DataStax Enterp...
 
Intro to creating kubernetes operators
Intro to creating kubernetes operators Intro to creating kubernetes operators
Intro to creating kubernetes operators
 
Restlet: Building a multi-tenant API PaaS with DataStax Enterprise Search
Restlet: Building a multi-tenant API PaaS with DataStax Enterprise SearchRestlet: Building a multi-tenant API PaaS with DataStax Enterprise Search
Restlet: Building a multi-tenant API PaaS with DataStax Enterprise Search
 
Dropwizard
DropwizardDropwizard
Dropwizard
 
Red Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus IntroductionRed Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus Introduction
 
Angular2 - A story from the trenches
Angular2 - A story from the trenchesAngular2 - A story from the trenches
Angular2 - A story from the trenches
 
Node.js scaling in highload
Node.js scaling in highloadNode.js scaling in highload
Node.js scaling in highload
 
Dropwizard
DropwizardDropwizard
Dropwizard
 
Netty training
Netty trainingNetty training
Netty training
 
Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015
 
20141111_SOS3_Gallo
20141111_SOS3_Gallo20141111_SOS3_Gallo
20141111_SOS3_Gallo
 
Netty training
Netty trainingNetty training
Netty training
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
 
Netflix Architecture and Open Source
Netflix Architecture and Open SourceNetflix Architecture and Open Source
Netflix Architecture and Open Source
 
Devoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterDevoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipster
 
Easy Microservices with JHipster - Devoxx BE 2017
Easy Microservices with JHipster - Devoxx BE 2017Easy Microservices with JHipster - Devoxx BE 2017
Easy Microservices with JHipster - Devoxx BE 2017
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipster
 
Architectural caching patterns for kubernetes
Architectural caching patterns for kubernetesArchitectural caching patterns for kubernetes
Architectural caching patterns for kubernetes
 

Mehr von Michel Graciano

Introdução a CDI e como utilizá-la em aplicações reais
Introdução a CDI e como utilizá-la em aplicações reaisIntrodução a CDI e como utilizá-la em aplicações reais
Introdução a CDI e como utilizá-la em aplicações reais
Michel Graciano
 

Mehr von Michel Graciano (7)

Aplicando CDI em aplicações Java
Aplicando CDI em aplicações JavaAplicando CDI em aplicações Java
Aplicando CDI em aplicações Java
 
O papel e a carreira de um desenvolvedor de software
O papel e a carreira de um desenvolvedor de softwareO papel e a carreira de um desenvolvedor de software
O papel e a carreira de um desenvolvedor de software
 
Finalmente java sabe trabalhar com data e hora (gu java sc)
Finalmente java sabe trabalhar com data e hora (gu java sc)Finalmente java sabe trabalhar com data e hora (gu java sc)
Finalmente java sabe trabalhar com data e hora (gu java sc)
 
Finalmente java sabe trabalhar com data e hora
Finalmente java sabe trabalhar com data e horaFinalmente java sabe trabalhar com data e hora
Finalmente java sabe trabalhar com data e hora
 
Designing Java EE Applications in the Age of CDI
Designing Java EE Applications in the Age of CDIDesigning Java EE Applications in the Age of CDI
Designing Java EE Applications in the Age of CDI
 
Introdução a CDI e como utilizá-la em aplicações reais
Introdução a CDI e como utilizá-la em aplicações reaisIntrodução a CDI e como utilizá-la em aplicações reais
Introdução a CDI e como utilizá-la em aplicações reais
 
genesis - Acelerando o desenvolvimento de aplicações desktop
genesis - Acelerando o desenvolvimento de aplicações desktopgenesis - Acelerando o desenvolvimento de aplicações desktop
genesis - Acelerando o desenvolvimento de aplicações desktop
 

Kürzlich hochgeladen

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Kürzlich hochgeladen (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

CON6423: Scalable JavaScript applications with Project Nashorn

  • 1. Scalable JavaScript applications with Project Nashorn
  • 2. Speakers Leonardo Zanivan Software Architect, Trier Sistemas github.com/panga @leonardopanga Michel Graciano Software Architect, Betha Sistemas github.com/mgraciano @mgraciano
  • 3. Agenda ● Why JS in the server ● Why the JVM ● Nashorn ecosystem ● Vert.x and Avatar/Avatar.js ● Q&A
  • 4. Why JS in the server ● Asynchronous by nature ● Native JSON support ● Language reuse ● Easier developer transition
  • 5. Why the JVM ● Multilanguage ● APM Tools ● Access to the Java ecosystem ○ Domain models already implemented ○ Java EE ○ Core and third parties Java libraries
  • 6. Nashorn ● JDK 8 Compact 1 Profile with extension ● Restrictions (browsers API, DOM) ● No native CommonJS implementation ● ECMA 5.1 + Rhino compatibility ● jjs interactive command line tool
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14. Nashorn ● JDK 8u20 ○ JDK-8032068: sourceURL directives ○ JDK-8021350: Share script classes between threads/globals ● JDK 8u40 ○ JEP 196: Nashorn Optimistic Typing ○ JEP 202: Nashorn Class Filter ○ JEP 203: Initial ES6 implementation (const & let) ● JEP 194: Nashorn Code Persistence (lazy compilation)
  • 15. But how to scale it?
  • 16. But how to scale it? Architectures and Technologies
  • 17. Event-driven architecture ● Event-loops ● Async non-blocking IO ● Reactive system ● Event bus
  • 19. Microservice architecture ● Focused on specific business ● Well defined & distributed ● Loosely coupled ● Testable ● Scalable
  • 21. Vert.x ● http://vertx.io/ ● Based on Netty ● Sponsored by Red Hat ● Winner of JAX Innovation Awards 2014 @timfox: Writing Highly Concurrent Polyglot Applications with Vert.x [CON7902] Thursday, Oct 2, 11:30 AM
  • 22. Vert.x ● Key benefits ○ Polyglot ○ Event bus (async & worker verticles) ○ Create reactive applications ○ Microservices ready ○ Strong community involvement
  • 24. Vert.x ● Key benefits ○ Easy deployment ■ CLI, API, mods, runtime deps resolution ○ Good build tools support (fat jar, auto-redeploy) ○ Native Cluster & HA with Hazelcast ○ Tons of extensions available
  • 25. Vert.x ● Challenges ○ Updated documentation ○ Verticle monitoring ○ Limited transactions support ○ Doesn’t have distributed maps yet (2.x) ○ Nashorn debugging support (PR to be merged)
  • 26. Vert.x ● Vert.x 3 highlights ○ JDK 8+ with Nashorn & Lambda ○ No more module system* ○ Clustered shared data ○ Event bus proxies & codecs ○ Ext stack (MongoDB, SockJS, Route, Rx)
  • 27. Demo ● Real-time notification service using websockets over nashorn integrating with a legacy Java EE app
  • 28. Avatar.js ● https://avatar-js.java.net ● Oracle sponsored ● Focus on bringing the node programming model, APIs and module ecosystem to the Java platform
  • 30. Avatar ● https://avatar.java.net ● Oracle sponsored ● Focus on Thin Server Architecture ○ Supports REST, WebSocket and Server-Sent Events ● Built on Avatar.js
  • 33.
  • 34.
  • 35. Avatar ● Deploying an application on Glassfish 4 ○ asadmin deploy ~/projects/<app-folder-name> ● Running the application ○ http://localhost:8080/<app-folder-name>
  • 36. Avatar/Avatar.js ● Key benefits ○ Avatar Services use an Actor-like concurrency model ○ NPM modules support ○ Strong Java EE integration ○ Debugging
  • 37. Avatar/Avatar.js ● Challenges ○ Weak community involvement ○ Low activity and no stable release ○ Glassfish / Weblogic only ○ Model Store API supports only Oracle NoSQL for schemaless database
  • 38. Benchmark ● Some simple and naive scenarios ○ Posting and querying from database ○ Returning a simple JSON response ○ String concatenation ○ Fibonacci calculation
  • 39. Benchmark ● Node.js 0.10.29 (2014-06-16) ● Avatar.js 0.10.28-SNAPSHOT (2014-07-20) ● Vert.X 2.1.1 (2014-06-18) ● Avatar 1.0-ea-SNAPSHOT (2014-07-26) ● JDK 8u5
  • 43. Q&A
  • 44. Credits ● Event-loop & Vert.X architecture ○ Slideshare presentation http://bit.ly/1qz6KUb ● Microservice architecture ○ http://martinfowler.com/articles/microservices.html ● Avatar.js architecture ○ Project Avatar.js website ● Avatar and Avatar EE architectures ○ Project Avatar website
  • 45. Thank you! @leonardopanga @mgraciano ● Sources ○ github.com/mgraciano/javaone-2014 ○ github.com/panga/javaone2014-benchmarks