index.html

README.txt

Code for hello-nashorn.sh:

#!/bin/sh
# https://ctarbide.github.io/pages/2024/2024-02-05_12h00m11_hello-worlds/
# https://github.com/ctarbide/coolscripts/blob/master/bin/nofake-exec.nw
set -eu; set -- "${0}" --ba-- "${0}" "$@" --ea--
set -- "$@" --suffix .js
SH=${SH:-sh -eu}; export SH
exec nofake-exec.sh --error -Rprog "$@" -- ${SH} -c '
    prog=${1}; shift
    thisprog=${1}; shift
    #exec ~/showargs-nl nashorn.sh "${prog}" "$@"
    exec nashorn.sh "${prog}" -- "$@"
' --
exit 1

This is a live literate program.

<<tested with versions>>=
- 17.0.15, Java OpenJDK 64-Bit Server VM
- nashorn 15.6
@

<<see also>>=
- https://github.com/ctarbide/java-scripting

    - provides a `nashorn.sh`

@

<<prog>>=
const System = Java.type("java.lang.System");
const JavaString = Java.type("java.lang.String");

const println = s => System.out.println(s);

if (!Array.from) Array.from = x => [].slice.call(x);

println("hello world!");
const args = Array.from(arguments);
println(`args: ${JavaString.join(", ", args.map(x => `"${x}"`))}`);

var LogManager = Java.type('org.apache.logging.log4j.LogManager');
var LogManager_getLogger = Java.type('org.apache.logging.log4j.LogManager')['getLogger(String)'];

var LOG = LogManager_getLogger("hello-nashorn.sh");

LOG.trace("testing: {}", 'trace message');
LOG.debug("testing: {}", 'debug message');
LOG.info("testing: {}", 'info message');
LOG.warn("testing: {}", 'warn message');

LOG.info("current file name: {}", __FILE__);