English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Manual Básico de Java

Java Controle de Fluxo

Java Array

Java Orientação a Objetos (I)

Java Orientação a Objetos (II)

Java Orientação a Objetos (III)

Tratamento de Exceção Java

Java Lista (List)

Java Fila (Fila)

conjunto Java Map

conjunto Java Set

Java Entrada Saída (I/O)/)

Reader Java/Writer

temas Java outros

Java 8 Nashorn JavaScript

Java 8 Novas funcionalidades

Nashorn é um motor javascript.

O Motor JavaScript Nashorn no Java 15 já não está disponível.

Isso já não está disponível no Java 11 marcado como:

@deprecated (forRemoval = true)

do JDK 1.8 a partir do JDK 1.6, JDK1.7) para se tornar o motor JavaScript embutido do Java. O Nashorn é completamente compatível com ECMAScript 5.1 especificação e algumas extensões. Ele usa a base JSR 292 das novas características da linguagem, que estão incluídas no JDK 7 introduzido no invokedynamic, compila JavaScript em bytecode Java.

Comparado com a implementação anterior do Rhino, isso trouxe 2 até  10melhoria de desempenho.

jjs

O jjs é uma ferramenta de linha de comando baseada no motor Nashorn. Ele aceita alguns códigos-fonte JavaScript como parâmetros e executa esses códigos.

Por exemplo, criamos um arquivo sample.js com o seguinte conteúdo:

print('Olá Mundo!');

Abra o console e insira o seguinte comando:

$ jjs sample.js

O resultado de saída do programa acima é:

Olá Mundo!

Programação interativa jjs

Abra o console e insira o seguinte comando:

$ jjs
jjs> print("Olá, Mundo!")
Olá, Mundo!
jjs> quit()
>>

Passar parâmetros

Abra o console e insira o seguinte comando:

$ jjs -- a b c
jjs> print('Letras: ' +arguments.join(", "))
Letras: a, b, c
jjs>

Chamada de JavaScript no Java

Usando ScriptEngineManager, o código JavaScript pode ser executado no Java, exemplo a seguir:

import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;
 
public class Java8Tester {
   public static void main(String args[]){
   
      ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
      ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn");
        
      String name = "w3codebox";
      Integer result = null;
      
      try {
         nashorn.eval("print('" + name + "')");
         result = (Integer) nashorn.eval("10 + 2");
         
      }catch(ScriptException e){
         System.out.println("Erro ao executar o script: ");+ e.getMessage());
      }
      
      System.out.println(result.toString());
   }
}

Executar o script acima, o resultado de saída será:

$ javac Java8Tester.java 
$ java Java8Tester
w3codebox
12

Chamada de Java no JavaScript

A seguir, há um exemplo que demonstra como referenciar classes Java no JavaScript:

var BigDecimal = Java.type('java.math.BigDecimal');
function calculate(amount, percentage) {
   var result = new BigDecimal(amount).multiply(
   new BigDecimal(percentage)).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_EVEN);
   
   return result.toPlainString();
}
var result = calculate(568000000000000000023,13.9);
print(result);

Usamos o comando jjs para executar o script acima e obter os seguintes resultados:

$ jjs sample.js
78952000000000002017.94

Java 8 Novas funcionalidades