表达式计算引擎 Fel-0.5 版本发布

fmms 13年前
     <p><strong>Fel是轻量级的高效的表达式计算引擎。</strong><span style="line-height:normal;font-family:arial, sans-serif;"> </span></p>    <p style="line-height:1.25em;max-width:64em;">Fel在源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求。</p>    <p style="line-height:1.25em;max-width:64em;">Fel是开放的,引擎执行中的多个模块都可以扩展或替换。Fel的执行主要是通过函数实现,运算符(+、-等都是Fel函数),所有这些函数都是可以替换的,扩展函数也非常简单。</p>    <p style="line-height:1.25em;max-width:64em;">Fel有双引擎,同时支持解释执行和编译执行。可以根据性能要求选择执行方式。编译执行就是将表达式编译成字节码(生成java代码和编译模块都是可以扩展和替换的)</p>    <p style="line-height:1.25em;max-width:64em;">Fel基于Java1.5开发,适用于Java1.5及以上版本。</p>    <h2 style="background-image:none;border-right-width:0px;padding-left:0px;max-width:700px;border-top-width:0px;border-bottom-width:0px;font-size:large;border-left-width:0px;background-origin:initial;background-clip:initial;"><a name="特点:"></a>特点:</h2>    <p style="line-height:1.25em;max-width:64em;">易用性:API使用简单,语法简洁,和java语法很相似。</p>    <p style="line-height:1.25em;max-width:64em;">轻量级:整个包只有300多KB。</p>    <p style="line-height:1.25em;max-width:64em;">高 效:目前没有发现有开源的表达式引擎比Fel快。</p>    <p style="line-height:1.25em;max-width:64em;">扩展性:采用模块化设计,可灵活控制表达式的执行过程。</p>    <p style="line-height:1.25em;max-width:64em;">根函数:Fel支持根函数,“$('Math')”在Fel中是常用的使用函数的方式。</p>    <p style="line-height:1.25em;max-width:64em;"><strong>$</strong>函数:通过<strong>$</strong>函数,Fel可以方便的调用工具类或对象的方法(并不需要任何附加代码),具体请看示例。</p>    <h2 style="background-image:none;border-right-width:0px;padding-left:0px;max-width:700px;border-top-width:0px;border-bottom-width:0px;font-size:large;border-left-width:0px;background-origin:initial;background-clip:initial;"><a name="不足:"></a>不足:</h2>    <p style="line-height:1.25em;max-width:64em;">支持脚本:否。</p>    <p style="line-height:1.25em;max-width:64em;">支持数组:否。Fel不支持类似于array<tt style="font-family:Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;max-width:66em;font-size:12px;">[</tt>i<tt style="font-family:Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;max-width:66em;font-size:12px;">]</tt>这样的语法,可以通过其他方法获取数据值。后续版本可以改进。</p>    <p style="line-height:1.25em;max-width:64em;">支持三元表达式:否。后续版本可以改进(<strong>0.5版本已经支持三元表达式</strong>)。</p>    <h2 style="background-image:none;border-right-width:0px;padding-left:0px;max-width:700px;border-top-width:0px;border-bottom-width:0px;font-size:large;border-left-width:0px;background-origin:initial;background-clip:initial;"><a name="适应场景:"></a>适应场景:</h2>    <p style="line-height:1.25em;max-width:64em;">Fel适合处理海量数据,Fel良好的扩展性可以更好的帮助用户处理数据。</p>    <p style="line-height:1.25em;max-width:64em;">Fel同样适用于其他需要使用表达式引擎的地方(如果工作流、公式计算、数据有效性校验等等)</p>    <h2 style="background-image:none;border-right-width:0px;padding-left:0px;max-width:700px;border-top-width:0px;border-bottom-width:0px;font-size:large;border-left-width:0px;background-origin:initial;background-clip:initial;"><a name="Fel使用例子:"></a>Fel使用例子:<pre class="brush:java; toolbar: true; auto-links: false;">FelEngine fel = new FelEngineImpl();      Object result = fel.eval("5000*12+7500");      System.out.println(result); </pre></h2>    <p style="line-height:1.25em;max-width:64em;">输出结果:67500</p>    <p style="line-height:1.25em;max-width:64em;"> </p>    <p> </p>    <h2><span style="line-height:16px;font-family:arial, sans-serif;">0.5版本改进</span></h2>    <p> </p>    <p>1:加入三元表达式</p>    <p>2:调整||和&&的优先级,保持与java语法的一致性。</p>    <p>3:加入!操作符</p>    <p>4:加入"$"函数,通过是"$"函数可以直接调用工具类的方法(eg:$('Math').min(1,2)相当于Math.min(1,2);</p>    <p> </p>    <h2>更多内容</h2>    <div>     项目地址:     <a href="/misc/goto?guid=4958190306800877701" target="_blank">http://code.google.com/p/fast-el/</a>    </div>    <div>     下       载:     <a href="/misc/goto?guid=4958190700859480465" target="_blank">http://fast-el.googlecode.com/files/fel-all-0.5.jar</a>    </div>    <div>     文       档:     <a href="/misc/goto?guid=4958190701603200903" target="_blank">http://fast-el.googlecode.com/files/Fel%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%BC%95%E6%93%8E.doc</a>    </div>    <div>     性能测试:     <a href="/misc/goto?guid=4958190702351374169" target="_blank">http://code.google.com/p/fast-el/wiki/Performance</a>    </div>