Gibt es irgendwelche guten Tutorials oder Ähnliches, um dies zu erfahren? Ich habe noch kein Skript in Java, obwohl ich bereits mit JavaScript vertraut bin. Vielen Dank. Im Wesentlichen möchte ich JavaScript/XML verwenden, um einen Teil meines Projekts zu bearbeiten. Ich weiß, Java 8 führte JavaScript-Unterstützung über Nashorn ein. Ich möchte lernen, wie das funktioniert. Ich weiß, dass es mit javax.script zu tun hat, aber ich weiß nicht, wie dieses Paket funktioniert, und ich verstehe nicht, wie Nashorn funktioniert.Neu zum Scripting mit Java und Nashorn, irgendwelche Tutorials?
Antwort
Nashorn wird über die Standard-Java-JSR 223-Skript-APIs aufgerufen.
Ein gutes allgemeines Beispiel ist hier:
http://www.drdobbs.com/jvm/jsr-223-scripting-for-the-java-platform/215801163
Nashorn spezifische Anleitung ist hier:
https://wiki.openjdk.java.net/display/Nashorn/Nashorn+jsr223+engine+notes
Hier ist ein Beispiel aus meinem Code statische Bibliothek Skripte laden und den Aufbau eines aufrufbaren benutzerdefinierte Funktion:
public class ScriptRunner {
private static final Logger log = LoggerFactory.getLogger(ScriptRunner.class);
private static final String ENGINE = "nashorn";
private String functions;
public ScriptRunner() throws IOException {
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resolver.getResources("your/class/path/*.js");
log.debug("Found {} script resources", resources.length);
StringBuilder functions = new StringBuilder();
for (Resource resource : resources) {
functions.append(IOUtils.toString(resource.getInputStream()));
}
this.functions = functions.toString();
}
/**
* Build an Invocable script.
* @param script The function code.
* @return Compiled, invocable script.
*/
public Invocable buildInvocable(String script) throws ScriptException {
ScriptEngine engine = new ScriptEngineManager().getEngineByName(ENGINE);
engine.eval(functions);
engine.eval(script);
return (Invocable) engine;
}
}
Vor kurzem habe ich Präsentationen über Java und JavaScript (über Nashorn) gekoppelt. Sie können meine Folien und Beispiele here finden.
Hier ist ein sehr einfacher Skript Läufer Implementierung
import javax.script.*;
public class ScriptRunner {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn");
String scriptName = args[0];
Bindings bindings = nashorn.createBindings();
bindings.put("scriptFileName", scriptName);
nashorn.setBindings(bindings, ScriptContext.ENGINE_SCOPE);
nashorn.eval("load('src/main/resources/javascript/' + scriptFileName)");
}
}
test.js, die Sie als Anwendung Parameter übergeben können.
print("This is hello from test.js");
Außerdem gibt es ein Werkzeug jjs
, die mit JDK8 kommt. Es ist CLI JavaScript-Interpreter. Es kann verwendet werden, um Shell-Skripte in JavaScript und Java zu schreiben. (Gut SO advice wie man 10 auf OSX, Linux verbessert). Hier ist ein Beispiel für ein solches Skript
#!/usr/local/bin/jjs -scripting
var currentDir = new java.io.File('.'),
allFiles = currentDir.list();
print(currentDir.getCanonicalPath());
for (var i = 0; i < allFiles.length; i++) {
print(allFiles[i]);
}
Fühlen Sie sich frei Frage zu stellen, wenn Sie welche haben.
Danke,
Vik
eval ist böse benutze es nicht .. –
Nashorn 'eval' ist nicht dasselbe wie JS' eval' –
Hier ist ein schönes, sehr einfach "getting started" Video:
https://www.youtube.com/watch?v=Cxyg22C5gcw
Julien Ponge hat auch ein guter einführender Artikel geschrieben:
http://www.oracle.com/technetwork/articles/java/jf14-nashorn-2126515.html
ich würde auch das Nashorn Wiki für die formale Dokumentation empfehlen:
ich viel mit nashorn in den letzten paar Wochen gespielt.Ich schrieb alle meine Erkenntnisse in einem Beispiel-driven-Tutorial:
http://winterbe.com/posts/2014/04/05/java8-nashorn-tutorial/
Es umfasst folgende Themen:
- JavaScript-Funktionen von Java-Code
- Aufruf Java-Methoden von Javascript Aufruf
- Verwenden von Java-Klassen aus JavaScript
- Zusammenfassung aller Spracherweiterungen (z. B. für jedes)
Ich hoffe, es ist hilfreich für Sie, mit Nashorn zu beginnen.
Nashorn ist ein JavaScript engine entwickelt in der Programmiersprache Java von Oracle. Es basiert auf dem (JSR 292) und wurde mit Java 8 veröffentlicht. Oracle JDK 8 oder OpenJDK 8 enthalten ein Befehlszeilentool namens jjs. Es befindet sich im Ordner/Ordner einer JDK-Installation zusammen mit den bekannten Java, Java oder JAR-Tools.
Kürzlich habe ich an Oracle Nashorn gearbeitet und ein Tutorial dazu kompiliert. Ich hoffe das wäre hilfreich
Sie können vielleicht von [hier] starten (http://download.java.net/jdk8/docs/technotes/guides/scripting/) <- Klicken Sie –
den Unterschied zwischen Java und Javascript ist wie der Unterschied zwischen Apfel und Ananas. das einzige, was sie gemeinsam haben, ist das "Java" im Namen. Abgesehen von beiden Programmiersprachen. – Banana
ein Kerl namens Banana mit Früchten Analogien, urkomisch –