Skip to main content


* Oct 21, 2018
1. add '__.keypairtool'

* Oct 14, 2018
1. add system property 'jssp.engine', 'jssp.started'

* Oct 10, 2018
1. change js engine to OpenJDK8's nashron engine 'js-nashorn-j8.jar'
1. fix multiline match pattern bug

* Jul 30, 2018
1. add cache by integrity check, e.g. `require('https://playsecurity.org/rawfile/component-helloworld.js', null, 'cabb1e6833f3072ad8e1387b5bdd559f3d22468be89ef28391c6ac35602613d8').helloworld();`

* Feb 25, 2018
1. remove dependency `runcc-0.7.jar`, use JavaCC instead

* Feb 13, 2018
1. add `! command` in interactive mode, `!` for help
2. add `$$$$(a + b)` caculates use BigDecimal

* Feb 12, 2018
1. `$CALC` number supports 0x???
2. `$CALC` supports token from context or global, e.g. `$CALC('a + 1')`

* Feb 6, 2018
1. add `$$.shell(inheritIO)`, inerit IO
2. add `reprint(args)`, `crender(args)`, `cprint(args)` and `cprintln(args)`, print functions

* Jan 30, 2018
1. add `{/**LINES\nmultiline\nstring\nhere*/}`, use multilines
2. add `$$.format(fmt, args)`, equals to `java.lang.String#format()`

* Jan 27, 2018
1. use `load(script)` when `eval` script, can display line number in stacktrace

* Jan 26, 2018
1. add `$$.exec()`, which equals `$$.shell(true).command('sh', '-c', cmds...).run()`

* Jan 24, 2018
1. add `$$.n()`, which equals `$$.num()`
2. can use `$` instead of `$$`, open with property `-Djssp.script.single.dollar.enable=true`
3. add `? expr` uses `__.desc(expr)` in interactive mode, `?` for help
4. add `?? expr` uses `$CALS(expr)` in interactive mode, `??` for help
5. supports Java 9

* Jan 23, 2018
1. add `JSON.encodeFormURL()`, encode JSON object as form URL encoded
2. add `JSON.asJavaObject()`, convert JSON object to Java object
3. add `$$.strEquals(s1, s2)`
4. add `$$.date().secs()`

* Jan 21, 2018
1. fastjson version 1.2.29 -> 1.2.44
2. add `$$.io().deleteDirectory(dir)`
3. add `__`, example `__.bytes.from('Hello World.').asBase64()`, see the mapping `__.mappings`
4. add `__.desc(class[, filter])` describe the java class
5. add `BigNumber#mod(v)`
6. add `Bytes#add(bs)`
7. add `$$.Bytes(obj)`
8. add `$$.mapTool()`, `$$.arraryTool()`, `$$.arrTool()`

* Jan 17, 2018
1. add `$$.def(a, b, '-')`

* Jan 15, 2018
1. add `strlines(() => {/* here can use multi-lines string */})` multi-lines

* Dec 26, 2017
1. add return value for $$.shell().run(), and $$.shell().start(AtomicInteger refRet)
2. add $$.atomic()

* Dec 23, 2017
1. add `^` and `%` to `$CALC`, and uses ObjectPool

* Dec 22, 2017
1. add BigNumber#ceil(), #floor(), #round(int), #round()
2. add `runjs-app` install from URL
3. add `$CALC(str)`

* Dec 21, 2017
1. add `$$.run(() => { /* TODO */})`
2. `runjs -i` disabed auto '\' escape
3. `runjs -i` supports multipline,user `<<<<` and `>>>>` pairs

* Oct 15, 2017
1. change `$@` to `"$@"` in file runjs, runjs-debug

* May 6, 2017
1. add require, use like `var plugin = require('component-test.js');`

*  Feb 5, 2017
1. add $GLOBAL

*  Feb 2, 2017
1. $EACH supports `java.util.Enumeration`
2. add runjs-app version

*  Jan 28, 2017
1. add runjs-app update

*  Jan 26, 2017
1. add $$.io(): IOTool
2. add asStr, asInt, asLong