Javet ShellΒΆ

It is very easy to create a node flavored interactive shell application with a few lines of code.

// Step 1: Create a V8 runtime from V8 host in try resource.
try (V8Runtime v8Runtime = V8Host.getV8Instance().createV8Runtime()) {
    System.out.println("Welcome to CDT Shell!");
    System.out.println("Input the script or '.exit' to exit.");
    // Step 2: Create a scanner to take console input line by line.
    try (Scanner scanner = new Scanner(System.in)) {
        // Step 3: Create an infinite loop.
        while (true) {
            System.out.print("> ");
            String command = scanner.nextLine();
            // Step 4: If the command is ".exit", exit the loop.
            if (".exit".equals(command)) {
                break;
            }
            // Step 5: Execute the command and capture the result.
            try (V8Value v8Value = v8Runtime.getExecutor(command).execute()) {
                if (v8Value != null) {
                    // Step 6: Print the result as string.
                    System.out.println(v8Value.toString());
                }
            } catch (Throwable t) {
                System.err.println(t.getMessage());
            }
        }
    }
}

The user experience is very much like the one in node.

> let a = 3
undefined
> let b = 4
undefined
> a + b
7

Please refer to the source code for more detail.