Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Into main/java/com/mycompany/app add new File named PolyglotSample.java with following code:

    Code Block
    languagejava
    titlePolyglotSample.java
    linenumberstrue
    collapsetrue
    package  com.mycompany.app;
    import org.graalvm.polyglot.Context;
    import org.graalvm.polyglot.Source;
    import org.graalvm.polyglot.Value;
    import java.net.URL;
    
    public class PolyglotSample {
        public static void main(String[] args) throws java.io.IOException, java.lang.InterruptedException {
            Context ctx = Context.create();
            URL fibUrl = PolyglotSample.class.getResource("fib.js");
            Source fibSrc = Source.newBuilder("js", fibUrl).build();
            Value fib = ctx.eval(fibSrc);
            for (int i = 0; i < 10; i++) {
                Value res = fib.execute(i);
                System.out.println("Polyglot with Graal.JS - fib(" + i + ") = " + res.asInt());
                Thread.sleep(500);
            }
        }
    }  


  2. Then in terminal or file explorer create following structure where to store the JS source file so Java can find it, it has to be under main folder: resources/com/mycompany/app
  3. Inside this  resources/com/mycompany/app create file named fib.js and paste in following JS code:


    Code Block
    languagejs
    titlefib.js
    linenumberstrue
    collapsetrue
    (function(n) {
        function fib(x) {
            if (x <= 2) {
                return 1;
            }
            let fibX1 = fib(x - 1);
            let fibX2 = fib(x - 2);
            return fibX1 + fibX2;
        }
     
        let fibN = fib(n);
        print(`JavaScript computed that fib(${n}) is ${fibN}`);
     
        return fibN;
    })


  4. Save all files and invoke action from Command Palette: Java: Compile Workspace
    • this is the action provided by VSNetBeans which builds the project.
    • Project is normally built also when debugger start but it is worth for the 1st time see if maven build passes.
Testing

Once the build succeeds

...

, let's test the project.

Testing
  1. Set breakpoint to line 11 in fib.js and
  2. Select F5 to launch debugger and select type Java 8+ which is VSNetBeans provided debugger for JDK 8 and Polyglot capable of debugging Java and scripting languages like Graal.JS impl. of JS.
  3. When started you should see something like following screenshot with Call Stack from JS to Java and variables from JS and Java depending on what context you have  currently stepped into.

...

Happy Polyglot development and debugging with VSNetBeans.! 

Scenario 3: OpenJDK

to be done...

...