I am interested in a portable way of writing a string to standard output, without implicit newlines added to the end, ideally forcing encoding to UTF-8, that works with either of
- jrunscript (from any JDK)
- Rhino
- node.js
My current code tries to detect where it is running, then uses a platform-specific write method:
if (typeof process !== "undefined") { // assume node.js
var log = function(string) {process.stdout.write(string);};
}
else if (typeof println == "undefined") { // assume rhino
var log = function(string) {java.lang.System.out.write(java.lang.String(string).getBytes("utf-8"));};
}
else { // assume jrunscript
var log = function(string) {java.lang.System.out.print(string);};
}
log("X");
log("Y");
It should result in:
XY
Can this be done better?
For jrunscript, I had been using function print, but that changed its behavior in JDK-8 on behalf of JDK-8021773.