Project Nashorn, why should we care #js.next()

Post on 16-Jul-2015

196 views 1 download

Transcript of Project Nashorn, why should we care #js.next()

Excellence inSoftware Engineering

Project Nashorn – why should we care

@michalgruca

Excellence in Software Engineering

Excellence in Software Engineering @michalgruca 3

What is Nashorn

Excellence in Software Engineering @michalgruca 4

Whats the fuss all about

● Yet another js runtime -> on server

● Quite fast

● Built on top of Java

● EcmaScript 5.1 compatible

Excellence in Software Engineering @michalgruca 5

But Node

● Mature

● Tested

● Has ecosystem (modules)

● Fast!

V8 powered

Excellence in Software Engineering @michalgruca 6

It's different architecture than Node!

Excellence in Software Engineering @michalgruca 7

Threads!

Excellence in Software Engineering @michalgruca 8

But WHY to use it?!

Excellence in Software Engineering @michalgruca 9

Access to JVM!

JVM

Excellence in Software Engineering @michalgruca 10

Really

Java

http://lustich.de/bilder/tiere/really-dog/

Excellence in Software Engineering @michalgruca 11

Avatar.js

Avatar.js is a project to Avatar.js is a project to bring the nodebring the node programming model, APIs and module ecosystem programming model, APIs and module ecosystem to the Java platformto the Java platform, enabling a new class of , enabling a new class of hybrid server applications that can leverage two of hybrid server applications that can leverage two of the most popular programming languages and the most popular programming languages and ecosystems today. ecosystems today.

These These Java+JavaScriptJava+JavaScript applications can applications can leverageleverage capabilities of capabilities of both environmentsboth environments - - access the latest access the latest node frameworksnode frameworks while taking while taking advantage of the advantage of the Java platform's scalability, Java platform's scalability, manageability, toolsmanageability, tools, and extensive collection of , and extensive collection of Java Java librarieslibraries and middleware. and middleware.

https://avatar-js.java.net/

Excellence in Software Engineering @michalgruca 12

Avatar.js

https://avatar-js.java.net/

Excellence in Software Engineering @michalgruca 13

Compatible with existing Java applications

Excellence in Software Engineering @michalgruca 14

Allows to create Java in Js

DEMOhttps://github.com/mgruca/nashorn_example/blob/master/src/main/test/pl/rits/Runner.java#L19https://github.com/mgruca/nashorn_example/blob/master/src/main/test/pl/rits/Runner.java#L25

Excellence in Software Engineering @michalgruca 15

EnterpriseEnterprisereadyready

By Takashi Hososhima

Excellence in Software Engineering @michalgruca 16

Enterprise?

Excellence in Software Engineering @michalgruca 17

Big stuff

Excellence in Software Engineering @michalgruca 18

Libs

Excellence in Software Engineering @michalgruca 19

Security & Crypto

X.509X.509

PKIPKI

S/MIMES/MIME

Open/PGPOpen/PGP

PKCS#10 PKCS#10 PKCS#12PKCS#12

Hashing algorithmsHashing algorithms

Excellence in Software Engineering @michalgruca 20

XML!

● SAX● Dom● STaX● ...● ...● Bindings● You name it!

Excellence in Software Engineering @michalgruca 21

Office support

Excellence in Software Engineering @michalgruca 22

Desktop

By Moriline: http://en.wikipedia.org/wiki/NetBeans#mediaviewer/File:Gui-builder.png

Excellence in Software Engineering @michalgruca 23

Allows OS scripting!

DEMOhttps://github.com/mgruca/nashorn_example/blob/master/scripts/fx.shhttps://github.com/mgruca/nashorn_example/blob/master/scripts/sample.sh

Excellence in Software Engineering @michalgruca 24

IO

● Channels

● Streams

● Buffers

● Readers / Writers

● Blocking / Non blocking

Excellence in Software Engineering @michalgruca 25

Testing and verification

DEMOhttps://github.com/mgruca/nashorn_example/blob/master/src/main/test/pl/rits/Runner.java#L48

Excellence in Software Engineering @michalgruca 26

Access to all platforms and H/W

Excellence in Software Engineering @michalgruca 27

Polyglot enabled

Excellence in Software Engineering @michalgruca 28

cons

By Hans Hillewaert

Excellence in Software Engineering @michalgruca 29

Slower than Node

May be twice+ slower than V8http://ariya.ofilabs.com/2014/03/nashorn-the-new-rhino-on-the-block.html

Excellence in Software Engineering

Mean tim

e in Java land

Mean tim

e in Java land

www.techempower.com/benchmarks

Excellence in Software Engineering @michalgruca 31

Java experts necessary

2

Excellence in Software Engineering @michalgruca 32

Can be tricky

By Yoel Ben-Avraham

Demo: https://github.com/mgruca/nashorn_example/blob/master/src/main/test/pl/rits/Runner.java#L42

Excellence in Software Engineering @michalgruca 33

Real world examples

What can we do with it?What can we do with it?

Excellence in Software Engineering @michalgruca 34

My project

Excellence in Software Engineering @michalgruca 35

Questions

By Xurblehttps://www.flickr.com/photos/xurble/376588066/

Excellence in Software Engineering @michalgruca 36

I love feedback! :)

@michalgruca

michal.gruca@gmail.com

www.rits.pl