Nashorn: nova engine Javascript do Java SE 8

25
Nashorn: novo motor Javascript no Java 8 Bruno Borges Principal Product Manager Java Evangelist

description

Descubra as capacidades do novo motor de Javascript, Nashorn, presente no Java SE 8

Transcript of Nashorn: nova engine Javascript do Java SE 8

Page 1: Nashorn: nova engine Javascript do Java SE 8

Nashorn: novo motor Javascript no Java 8Bruno BorgesPrincipal Product ManagerJava Evangelist

Page 2: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.3

• Java Evangelist• Orale Product Manager• Entusiasta JavaFX e IoT• Onde me encontrar

• @brunoborges

• plus.google.com/+BrunoBorges

Bruno Borges

Page 3: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.4

Agenda

• Nashorn Overview

• Nashorn e Java

• Nashorn usando o comando jjs

• Shell Scripting com Nashorn

• Nashorn e JavaFX

Page 4: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.5

Nashorn Overview

• Runtime Java baseado na linguagem Javascript• ECMAScript 262 v5.1

• Familar para desenvolvedores de conteúdo

• Permite uso de uma série de bibliotecas e ferramentas escritas em Javascript

• Node.JS

• Obtém todas as vantagens das tecnologias Java

Scripting for Java

Page 5: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.6

Nashorn Overview

• Forte integração com a plataforma Java• Extensões foram adicionadas para prover acesso ao Java

• Nashorn pode ser usado no Java usando a ScriptEngine API

• Nashorn pode também ser usado pela linha de comando jjs

• Suporte para shell scripting

• Suporte completo ao JavaFX

• NetBeans 8 suporta desenvolvimento com Nashorn

Funcionalidades

Page 6: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.7

NASHORN E JAVA

Page 7: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.8

Nashorn e Java

import javax.script.*;

public class Main { public static void main(String[] args) { final ScriptEngineManager manager = new ScriptEngineManager(); final ScriptEngine engine = manager.getEngineByName("nashorn"); try { engine.eval("print('hello world');"); } catch (final ScriptException se) { System.err.println(se); } }}

Exemplo 1

Page 8: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.9

Nashorn e Java

String script = "var x = 10;\n" + "var y = 20;\n" + "var z = x + y;\n" + "z;\n";Object result = engine.eval(script);int value = (Integer)result;System.out.println(value);

Exemplo 2

Page 9: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.10

Nashorn e Java

engine.put("x", 100);engine.put("y", 200);engine.eval("var z = x + y;");int value = (Integer)engine.get("z");System.out.println(value);

Exemplo 3

Page 10: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.11

Nashorn e Java

var HashMap = java.util.HashMap;var map = new HashMap();

map.put("apple", "red");map.put("bear", "brown");map.put("canary", "yellow");

print("A bear is " + map.get("bear"));

for (var key in map) print("key: " + key);for each (var value in map) print("value: " + value);

Exemplo 4

Page 11: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.12

NASHORN USANDO JJS

Page 12: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.13

Nashorn usando jjs

• Nashorn pode ser chamado usando a ferramenta jjs por linha de comando

• Facilita o uso de Javascript no dia-a-dia• Tarefas rápidas

• Prototipação

• Experimento com novas features do Java

• Shell scripts

A partir da linha de comando

Page 13: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.14

Nashorn usando jjs

>> where jjs/usr/bin/jjs>> jjsjjs> var x = 10;jjs> var y = 20;jjs> print(x + y);30jjs> quit(); >>

Exemplo 5

Page 14: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.15

Nashorn usando jjsExemplo 6

Page 15: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.16

SHELL SCRIPTINGCOM NASHORN

Page 16: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.17

Shell Scripting com Nashorn

• Por que não utilizar uma linguagem que você já está familiarizado?

• Acesso a um vasto número de bibliotecas Java

• Extensões de scripting para simplificar• Documentos

• Templates de Strings

• Execução de comandos

• Variáveis de ambiente

Substituto mais simples para outras linguagens shell

Page 17: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.18

Schell Scripting usando Nashorn

#!/usr/bin/jjs -doe -scripting#var dir = __DIR__ + "photos";var files = `ls ${dir}`.trim().split("\n");

var count = 1;for each (var file in files) { if (file.edsWith(".jpg")) { `mv ${dir}/${file} ${dir}/Photo${count++}.jpg`; }}

Exemplo 7

Page 18: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.19

NASHORN E JAVAFX

Page 19: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.20

Nashorn e JavaFX

• Método bem natural de trabalhar com JavaFX

• Nashorn pode ser invocado a partir de FXML• FXML é uma opção, em formato XML, para definir interfaces em JavaFX

• Modelo familiar para desenvolvedores de conteúdo

Nashorn foi feito para o JavaFX

Page 20: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.21

Nashorn e JavaFX

load("fx:base.js");load("fx:controls.js");load("fx:graphics.js");

$STAGE.title = "Hello World!";var button = new Button();button.text = "Say 'Hello World'";button.onAction = function() print("Hello World!");var root = new StackPane();root.children.add(button);$STAGE.scene = new Scene(root, 300, 250);$STAGE.show();

Exemplo 8

Page 21: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.22

Recapitulando

• Forte integração com Java

• Pode ser usado a partir do Java

• Nova ferramenta por linha de comando jjs

• Supore a Shell Scripting

• Suporte completo ao JavaFX

Page 22: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.23

Para saber mais

• Download: java.oracle.com

• Documentação: docs.oracle.com/javase

• Treinamentos: education.oracle.com/java

• Central do Java 8: www.oracle.com/java8

• Nashorn para Usuários• wiki.openjdk.java.net/display/Nashorn/Nashorn+Documentation

• Exemplos: blogs.oracle.com/nashorn/

• Dúvidas: [email protected]

Java 8 e outros sites

youtube.com/java

blogs.oracle.comjava

facebook.com/ilovejava

@java @javaembedded

nighthacking.com

Page 23: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.25

The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract.It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.

Page 24: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.26

Page 25: Nashorn: nova engine Javascript do Java SE 8

Copyright © 2014, Oracle and/or its affiliates. All rights reserved.27