[b]RockScript[/b] -- 可以在J2ME手机上流畅运行的JavaScript引擎

[b]试用[/b]
已在Nokia低端S40手机中测试过。
打开程序后即可从javascript例程列表中选择一个来显示源文件或直接执行。
如需测试自己编写的javascript源码,只要将编写好的js文件加入scripts.zip并重新打JAR包即可。

[b]优点[/b]
体积超级小巧,引擎核心在混淆压缩后仅25K
功能强大,实现了ECMA规范中绝大部分的语言特性
性能优异,占用内存少,可在低端J2ME手机中流畅运行
兼容性强,只要支持CLDC1.0/MIDP2.0的J2ME手机都可以运行(少量改动即可兼容MIDP1.0)
可以轻易的集成在其它软件系统中,可以定制全局对象
可扩展性强,可以轻易的添加新的本地方法或对象来扩展功能,如加入DOM API来支持DHTML

[b]可用于[/b]
3G时代的手机浏览器,使其真正支持客户端的DHTML和AJAX
Widget引擎
WAP浏览器中的WMLScript解释器
游戏脚本引擎,特别是三引号和字符串内嵌表达式语法的加入特别适合编写有大量对话的游戏脚本
商业逻辑扩展(DSL),可从服务器更新运算逻辑而不仅仅是数据
更多,仅受限于您的想象力...

[b]标准ECMA特性[/b] 

 所有运算符 

 一元运算符 !, +, - 

 算术运算符 +, -, *, /, %, ** 

 自增自减运算符 ++, -- (前置/后置) 

 赋值运算符 =, +=, -=, *=, /=, %=, **=, &=, |=, ^=, <<=, >>=, >>>= 

 逻辑运算符 &&, || 

 支持JavaScript中的特殊用法,如以下代码: 

 foo || foo = function() { println("Test!") } 

 foo && foo() 

 关系运算符 ==, ===, !=, !==, <, <=, >, >= 

 位运算符 ~, &, |, ^, <<, >>, >>> 

 三元运算符 ? : 

 逗号运算符 , 

 其它运算符 in, delete, typeof, instanceof 

 所有控制语句 

 if ... [else ...] 

 while ... 

 do ... while 

 for (...; ...; ...) ... 

 for (... in ...) ... 

 switch (...) { case ... : default : ... } 

 with (...) ... 

 return [...] 

 throw ... 

 try ... catch ... finally


对象和数组
真正的原型对象继承机制
使用JSON语法创建对象和数组
所有三种函数创建方式
使用function关键字声明
表达式中的函数直接量,如foo = function(x, y) { return x + y }
用Function构造函数动态创建,如foo = new Function("x", "y", "return x + y")
自定义构造函数创建对象
支持eval函数,即可以执行字符串中的JavaScript代码
使用函数直接量实现的闭包(参见例程中的closure.js和closure1.js)
全局对象提供以下本地构造函数和属性(可以用例程中的dumpgo.js来查看所有内置属性)

Object 

 hasOwnProperty/toString 

 Array 

 join/shift/unshift/sort/reverse/push/pop/concat/slice 

 Function 

 apply/call 

 String 

 valueOf/charAt/charCodeAt/split/substring/indexOf/lastIndexOf 

 Number 

 valueOf 

 Date 

 getTime/setTime 

 Error 

 toString 

 Math 

 random 

 print/println/alert 

 eval


es: 用来解析字符串中的内嵌表达式如: "My name is $my.name"
parseInt
字符串中可以使用\uxxxx来表示任意Unicode字符
行尾分号可省略
定义字符串可混用单/双引号


[b]扩展特性(语法糖)[/b]
支持乘方运算符**
支持使用三引号""" ... """定义大段保持原样输出的字符串(即保留换行)。特别适合定义大段HTML代码,或对话等
switch语句中case后面可以使用表达式
支持字符串内嵌表达式(此特性可关闭以保持兼容性)
提供es函数用来自动解析字符串中的内嵌表达式

[b]目前不支持的ECMA语言特性[/b]
浮点数(主要是性能方面的考虑,在下一版考虑加入可配置的定点数支持)
正则表达式(因J2ME平台的限制)