Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

sillelien/java-as-script

Repository files navigation

Build: Circle CI

Download

Java-as-Script Alpha

Java-as-Script provides a hot reloading JSR-223 implementation for Java. This version is a fork of the original project specifically it has been reduced in scope to focus entirely on the JSR-223 aspect of the original project. It is also primarily been forked for use in the Dollar project.

Make sure you have the JCenter repo in your pom.xml

 <repositories>
 <repository>
 <snapshots>
 <enabled>false</enabled>
 </snapshots>
 <id>central</id>
 <name>bintray</name>
 <url>http://jcenter.bintray.com</url>
 </repository>
 </repositories>

Then just add the following dependency

 <dependency>
 <groupId>com.sillelien</groupId>
 <artifactId>java-as-script</artifactId>
 <version>0.9.135</version>
 </dependency>

Download

Below is a complete example of using Java-as-Script as a JSR-223 scripting engine, with the language being Java.

package com.sillelien.jas;
import com.sillelien.jas.jproxy.JProxy;
import com.sillelien.jas.jproxy.JProxyConfig;
import com.sillelien.jas.jproxy.JProxyScriptEngine;
import com.sillelien.jas.jproxy.JProxyScriptEngineFactory;
import javax.script.Bindings;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.tools.Diagnostic;
import javax.tools.JavaFileObject;
import java.util.Collections;
import java.util.List;
public class Demo {
 public static void main(String[] ignored) throws Exception {
 //Initializing and configuring the JSR-223 script engine
 JProxyConfig jpConfig = JProxy.createJProxyConfig();
 jpConfig.setEnabled(true)
 .setRelProxyOnReloadListener((objOld, objNew, proxy, method, args) -> {
 //TODO
 })
 // .setInputPath(".")
 .setScanPeriod(-1)
 .setClassFolder("./tmp/classes")
 .setCompilationOptions(Collections.emptyList())
 .setJProxyDiagnosticsListener(diagnostics -> {
 List<Diagnostic<? extends JavaFileObject>> diagnosticList = diagnostics.getDiagnostics();
 diagnosticList.stream()
 .filter(diagnostic -> diagnostic.getKind().equals(Diagnostic.Kind.ERROR))
 .forEach(System.err::println);
 });
 JProxyScriptEngineFactory factory = JProxyScriptEngineFactory.create();
 ScriptEngineManager manager = new ScriptEngineManager();
 manager.registerEngineName("java", factory);
 Bindings bindings = manager.getBindings();
 bindings.put("in", "World");
 ScriptEngine engine = manager.getEngineByName("java");
 JProxyScriptEngine scriptEngine = (JProxyScriptEngine) engine;
 scriptEngine.init(jpConfig);
 //Your code goes here, e.g.
 scriptEngine.eval("System.out.println(\"Hello \"+context.getAttribute(\"in\",javax.script.ScriptContext.ENGINE_SCOPE));return null;\n",bindings);
 }
}

Dependencies: Dependency Status


** If you use this project please consider giving us a star on GitHub. **

Please contact me through Gitter (chat) or through GitHub Issues.

GitHub Issues Join the chat at https://gitter.im/sillelien/java-as-script

For commercial support please contact me directly.

About

Java-as-Script provides a hot reloading JSR-223 implementation for Java

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 99.7%
  • HTML 0.3%

AltStyle によって変換されたページ (->オリジナル) /