inkfish翻译,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish )。本文是我学习JUEL同时,对原网站进行的简单的翻译,原网站地址:http://juel.sourceforge.net/
JUEL 是统一表达式语言(Unified Expression Language , EL )的一个实现,是JSP 2.1 标准(JSR-245 )的一部分,已经作为Java EE 5 的一部分,并且,JUEL 2.2实现了JSP 2.2 发行版,与Java EE 6 规范完全兼容。
动机
自从EL作为JSTL的一部分,EL成为JSP 2.0标准的一部分。不过现在,在JSP 2.1中,EL API已经分离到javax.el包中,已经移除了所有JSP核心包的依赖。
换句话说:EL已经能用到非JSP的应用中!
特性
JUEL 提供了统一表达式语言的轻量级和高效的实现。
* 高性能 ——解析表达式当然是性能的瓶颈。JUEL 用手写的代码来解析,手写的代码效率比之前使用的(javacc)生成的解析器快10倍!一旦编译,表达树会高速的运行。
* 插件式的缓存 ——即使JUEL 解析器飞快,解析表达式相对来说在资源消耗上也是昂贵的。因此,最佳的方法是只解析表达式字符串一次。JUEL 默认的缓存机制,这种机制在多数情况下已经足够使用了。即使如此,JUEL 也允许方便的像插件般使用你自己的缓存。
* 小体积 ——JUEL 经过精心的设计,让代码的大小和内存使用量尽量最小。
* 方法调用 ——JUEL 支持方法调用,比如${foo.matches('[0-9]+')}
。使用EL的解析机制,方法被解析和调用。在JUEL 2.2 中,方法调用特性是默认打开的。
* 多参数调用 ——JUEL 支持Java 5函数和方法调用里使用多参数,比如,在format
函数中绑定了String.format(String, String...)
,允许这样使用:${format('Hey %s','Joe')}
。在JUEL 2.2 中,多参数特性是默认打开的。
* 可拔插的 ——JUEL 能被配置成能在Java运行环境或JEE应用服务器中自动探测到EL的实现。使用JUEL 并不需要应用去显式的引用JUEL 实现中所特有的类。
状态
JUEL 被认为具有产品级的稳定性,代码经过很好的测试(80%的覆盖率),并且所有特性均已实现。
可用性
JUEL 采用Apache 2.0 许可协议。
运行需求
JUEL 运行需要Java 5 或更新的环境。