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.