(1)Velocity http://jakarta.apache.org/velocity/ (and webMacro, FreeMarker.. etc)
(2)Tapestry http://jakarta.apache.org/tapestry/
(3)Echo http://sourceforge.net/projects/echo
(4)Cocoon (XML + XSLT) http://cocoon.apache.org/
(5)XMLC(Static DOM) http://xmlc.enhydra.org/
(6)NekoHTML (Dynamic DOM)http://www.apache.org/~andyc/neko/doc/html/
(7)JDynamiTe(PHP Template Port)https://sourceforge.net/projects/jdynamite
选型方面的区别:
- Velocity采用JavaCC编译成AST树,解释执行。
- FreeMarker类似,只是采用FreeCC。
- Smarty4j采用ASM生成字节码。
- HTTL采用先将模板转译成Java代码,再由JDK或Javassist编译成字节码。
性能测试:
- 模板内循环显示100行数据。
- 每模板各运行一万次。
- 模板大小约800字符。
- 模板每次运行输出内容约27K字符。
测试结果:
Engine | Compile | Run | TPS |
Freemarker | 125ms | 16,934ms | 590t/s |
Velocity | 110ms | 19,278ms | 518t/s |
Smarty4j | 78ms | 21,653ms | 461t/s |
Httl | 547ms | 2,077ms | 4,814t/s |
Java | 0ms | 2,016ms | 4,960t/s |
表示层模板语言Mayaa