【本工程jar应先于Rhino的jar加载】
 若界面脚本报错形如：无法构造Console，是依赖包先后顺序引起，需更新工程的构建文件：/debug-bos-mservice/build.gradle。--dependencies trd部分放在最后引入。	


【修改记录】
1.ScriptRuntime.wrapNumber
	自动适应java的Number类型
2.ScriptRuntime.newObject
	使用命名空间内定义的类
	
3.InterfaceAdapter.invokeImpl
	js转换为java接口，增加对接口缺省方法的调用支持。
	jsobject as java interface: 优先适配js中对象的方法，参数个数不匹配则调用接口缺省方法，若接口的方法不是缺省，则抛异常：未实现接口方法。

	【另一种方法，不可行--无法做到多态】
	KJsType.js2java中判断desiredType.isInterface()
	把default方法定义为value(NativeObject)的函数:@see ScriptableObject.defineFunctionProperties
	但是函数的定义不能重名，与java不能对等转换。
	故在此修改接口封装InterfaceAdapter的invoke，做到动态匹配同名方法。

4.新增VMBridge_custom
	getInterfaceProxyTarget：js object as java interface后，从java interface proxy获取原js object。
	
	
5.VMBridge_jdk13
	可以根据线程退出context，用于调试，以便于在一个线程中清除另一个线程的context。
	
	
	
	
	
	
	
	
	
////////////////////////////////////////////////////////////
【对rhino较大修改项】
1.js--java装解封。
2.封装对象的定义(annotation)。
3.js数组参数，适配并转换为对应的java对象。
4.js传入function参数自动适配java接口。
5.if(Boolean)按Boolean值进行判断。
6.数值计算均中间过程通过BigDecimal进行精确计算。
7.js的double精度，转为与java的double同(NativeNumber)。
8.增加调试功能(双线程)。
9.+ super关键字并解释执行: 若作为Token.super关键字，要修改的地方太多，作为name进行特别解释。
	js覆盖了java的方法，在js中调用java方法： super.xxx()
	js调用被封装的java对象的父对象的方法：super_xxx()
10.枚举映射
11.命名空间
12.动态提供变量VarProvider
13.对象动态属性__getUndefinedProperty
14.自定义对象比较：ScriptComparable
		
		
		
		
		
////////////////////////////////////////////////////////////
【脚本引擎说明】
kscript基于rhino改造实现。
kscript中的安全模式，是对rhino调用java进行了限制，如不允许：
new java.lang.Thread
new java.io.File...

原生rhino是允许的，可以创建对象、调用其中任何public方法，还可以使用反射。

所以我们才要修改：
1) 增加安全模式，不允许直接创建java类，必须自定义js类(对应java对象)。
2) 限制js类所对应java对象的访问，必须通过@KSMethod描述表示允许在js中使用。		