Shared Flashcard Set

Details

Nashorn(Java 8 )
N/A
20
Computer Science
Graduate
04/18/2014

Additional Computer Science Flashcards

 


 

Cards

Term
Avaliando uma Declaração Script Usando Nashorn (EvalScript.java)
Definition

import javax.script.*;

public class EvalScript

{

public static void main( String[] args ) throws Exceptions {

//create a script engine manager

ScriptEngineManager factory = new ScriptEngineManager();

//create a NasHorn script engine

ScriptEngine engine = factory.getEngineByName("nashorn");

// evaluate JavaScript statement

try{

engine.eval("print( 'Hello World!' );");

}catch( final scriptException se ){ se.printStackTrace();}

}

Term

Para instanciar uma classe, passe a função de objeto JavaClass para o novo operador. Nashorn invoca o construtor correspondente com base nos argumentos passados para a função.

Definition

jjs >  var HashMap = Java.type("java.util.HashMap ")

jjs >  var mapDef = new HashMap()

jjs >  var map100 = new HashMap(100)

Term

Acessando classes e instanciando membros

Definition

jjs > Java.type("java.lang.Math") . PI

3.141592653589793

jjs > Java.type("java.lang.System ").currentTimeMillis()

1375813353330

jjs > Java.type("java.util.Map"). Entry

[JavaClass java.util.Map$Entry ]

Term

Usando JavaBeans.Nashorn permite tratar de acessos e mudanças de métodos JavaBeans como propriedades de JavaScript equivalentes. O nome da propriedade é o nome do método JavaBean sem obter ou definir sufixo, e começa com uma letra minúscula.Por exemplo, você pode chamar o getYear () e setYear () métodos em um objeto java.util.Date usando a propriedade ano da seguinte forma:

Definition

jjs > var Date = Java.type("java.util.Date ")

jjs > var date = new Date()

jjs > date.year + 1900

2013

jjs > date.year = 2014 - 1900

114

jjs > date.year + 1900

2014

Term

Criando um mecanismo de scrip Nashorn

Definition

ScriptEngine engine = factory.getEngineByName("nashorn");

Term

Nashorn interpreta números como java.lang.Double, java.lang.Long, ou objetos java.lang.Integer, dependendo do cálculo executado. Você pode usar a função Number () para forçar um número a ser um objeto duplo

Definition

jjs> var intNum = 10
jjs> intNum.class
class java.lang.Integer
jjs> var dblNum = Number(intNum)
jjs> dblNum.class
class java.lang.Double

Term

Nashorn interpreta coleções Java como matrizes. Você pode acessar os elementos de coleta utilizando o índice entre colchetes ([]) e iterar sobre os valores de uma coleção usando o para cada instrução

Definition

jjs> var ArrayList = Java.type("java.util.ArrayList")
jjs> var alist = new ArrayList()
jjs> alist.add("a")
true
jjs> alist.add("b")
true
jjs> alist.add("c")
true
jjs> alist[1]
b
jjs> for each (var i in alist) print(i)
a
b
c

Term

Strings são interpretados por Nashorn como objetos java.lang.String. No entanto, se você concatenar duas strings você pode obter uma instância da classe jdk.nashorn.internal.runtime.ConsString. Isto não é um problema para a maioria dos scripts, porque ambas as classes podem implementar a interface java.lang.CharSequence, mas em alguns casos, Nashorn passa o objeto ConString quando um método espera um argumento  java.Lang.Object. Para evitar isso, use a função String () para garantir que a String é um objeto String de Java.

Definition

jjs> var a = "abc"
jjs> a.class
class java.lang.String
jjs> var b = a + "def"
jjs> b.class
class jdk.nashorn.internal.runtime.ConsString
jjs> var c = String(b)
jjs> c.class
class java.lang.String

Term

Você pode estender uma classe usando o Java.extend function () que leva um tipo Java como o primeiro argumento e implementações de método (na forma de funções de JavaScript), como os outros argumentos

Definition

var Run = Java.type("java.lang.Runnable");

var MyRun = Java.extend( Run, {

run : function() {

print("Run is separeted thread");

}

});

 

var Thread = Java.type(" java.lang.Thread");

var th = new Thread( new MyRun() );

Term

Você pode ativar as extensões de shell script em Nashorn usando o comando jjs com a opção de script

Definition

jjs -scripting

Term

A função Java.type pode ser usada para se obter referências precisas do tipo Java

Definition

var LinkedList = Java.type("java.util.LinkedList");
var primitiveInt = Java.type("int");
var arrayOfInts = Java.type("int[]");

Term

 Interpretar uma aplicação de script JavaFX com o Nashorn, usando o mando jjs com a opção -fx

Definition

jjs -fx JavaFXscript.js

Term

Um heredoc especifica strings em shell UNIX que preservam as quebras de linhas e recuos. Com recursos do shell habilitado, pode-se usar o Nashorn para avaliar scripts com heredoc

Definition

#!/usr/bin/jjs
print(<<EOD);
${arguments[0]} is normal

${arguments[1]} is indented

${arguments[2]} is separated by a blank line
EOD

Term

$ARG 

Este objeto global pode ser usado para acessar os argumentos passados para o script, semelhante à forma como o objeto argumentos é usado.

Definition

>> jjs -scripting -- arg1 arg2 arg3
jjs> $ARG
arg1,arg2,arg3
jjs> $ARG[1]
arg2

Term

$ENV

Este objeto global mapeia todas as variáveis de ambiente atuais

Definition

jjs> $ENV.USER
johndoe
jjs> $ENV.PWD
/foo/bar

Term

$EXEC()

Esta função global lança processos para executar comandos

Definition

jjs> $EXEC("ls -l")
total 0
drwxr-xr-x+ 1 johndoe staff 4096 Aug 18 11:03 dir
-rwxrw-r--  1 johndoe staff  168 Aug 19 17:44 file.txt

jjs>

Term
load()
Essa função carrega e avalia um script de um caminho, URL, ou um objeto.
Definition

jjs> load("/foo/bar/script.js")
jjs> load("http://example.com/script.js")

Term

Usando o Shebang  para criar um script executável

Definition

#!/usr/bin/jjs -fv
print("Arguments: " + arguments);

Term

Com recursos de script shell habilitado, Nashorn define várias funções internas

( readLine() )

Esta função lê uma linha de entrada de stdin e envia para stdout, ou você pode atribuir o resultado a uma variável. Você também pode passar uma string para a função readLine () para obter uma linha de comando

Definition

jjs> var name = readLine("What is your name? ")
What is your name? Bob
jjs> print("Hello, ${name}!")
Hello, Bob!
jjs>

Term

Com recursos de script shell habilitado, Nashorn define várias funções internas
readFully()

Esta função lê todo o conteúdo de um arquivo passado como um argumento de string e os envia para a saída padrão, ou você pode atribuir o resultado a uma variável.

Definition

jjs> readFully("text.txt")
This is the contents of the text.txt file located in the current working directory.

jjs>

Supporting users have an ad free experience!