Skip to content

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

License

Notifications You must be signed in to change notification settings

sillelien/java-as-script

This branch is 177 commits ahead of jmarranz/relproxy:master.

Folders and files

NameName
Last commit message
Last commit date
Jul 25, 2017
Jul 9, 2017
Jul 21, 2017
Jul 10, 2017
Sep 12, 2017
Jul 9, 2017
Jul 7, 2017
Sep 16, 2017
Sep 16, 2017
Jul 7, 2017
Jul 11, 2017
Jul 26, 2017
Aug 24, 2017
Aug 24, 2017

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%