java开源模板引擎

  Velocity 
Velocity是一个基于java的模板引擎(template engine)。它容许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员能够和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员能够只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为咱们在JSP和PHP以外又提供了一种可选的方案。 Velocity的能力远不止web站点开发这个领域,例如,它能够从模板(template)产生SQL和PostScript、XML,它也能够被看成一个独立工具来产生源代码和报告,或者做为其余系统的集成组件使用。Velocity也能够为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式容许一个web应用以一个真正的MVC模型进行开发。 【 VeloEclipse  :Velocity在Eclipse平台下的一个辅助开发插件】

更多Velocity信息javascript

  FreeMarker 
FreeMarker容许Java servlet保持图形设计同应用程序逻辑的分离,这是经过在模板中密封HTML完成的。模板用servlet提供的数据动态地生成 HTML。模板语言是强大的直观的,编译器速度快,输出接近静态HTML页面的速度。 【 FreeMarker Eclipse PluginFreeMarker IDE:Eclipse平台下的辅助开发工具】

更多FreeMarker信息php

  Jamon 
Jamon是一个Java文本模板引擎,用于生成动态HTML, XML,或任何基于文本的内容。它有一个丰富的功能集,支持封装,参数化,功能分解,表达逻辑重用。模板声明它们要求生成的参数,包括动态模板内容("fragments"),并被翻译成带有公有方法的Java类,它的符号反映了在模板中声明的参数。

更多Jamon信息html

  JDynamiTe 
JDynamiTe是一个把PHP模板技术移植到Java的一个开源项目。JDynamiTe模板用注释(BEGIN-END)标记动态块,用{}标记占位变量。JDynamiTe模板不包含任何逻辑,是“所见即所得”的模板技术,可以在普通的HTML浏览器或编辑器正确显示。

更多JDynamiTe信息java

  JByte 
JByte基于java的模板引擎。它一般用于把Jsp或Servlet转换成HTML,也能够转换成其它格式好比:XML,RTF,WML,e-mail text,原代码, 配置文件。

更多JByte信息web

  Tea 
Tea Trove 是一个组开放源代码项目(Tea,TeaServlet,Kettle,BeanDoc,Trove)的集合。由Walt Disney Internet小组开发,它这些技术成功运用在许多著名的网站上如ESPN.com, Movies.com, ABCNews.com 和 Disney.com. 其中的Tea是一个简单又强大的模板语言。它一般使用TeaServlet来产生动态页面。

更多Tea信息设计模式

  Jxp 
Jxp(Java scripted page)包含一个Java脚本处理器和一个模板引擎,它支持同时具有文本和Java代码的模板文件。它包含一个剖析器和一个结构处理器,剖析器用于将脚本内容转化为特定的结构,结构处理器将处理这些特定的结构内容转换为常规代码,并经过API函数在产品中输出。

更多Jxp信息api

  StringTemplate 
StringTemplate一个能够生成原代码,web页面,emails和其它任何须要有格式的文本输出。StringTemplate已应用在为jGuru.com与antlr.org网站产生web页面。

更多StringTemplate信息数组

  Better Templates for Everybody 
一个让数据知道如何插入到模板中适当的位置,模板能够从静态的文件或Java servlets来建立。

更多Better Templates for Everybody信息浏览器

  Canvas 
Canvas是一个基于Groovy脚本语言模板生成器。它使用相似于Velocity Java API来绑定变量并容许在你的模板中使用Groovy脚本表达式。

更多Canvas信息缓存

  Guglhupf XTE 
Guglhupf XTE(XML Transformation Engine:XML转换引擎) 是一组用来转换XML文件的工具。它提供了一种比XSLT更简单的方式来转换XML。XTE不一样于XSLT与Velocity这样的XML转换工具,它们都用特殊的语言来处理XML文件输入,而后把目标数据做为输出陈述.而XTE是以相反的方式进行它的模板是已经写在输出格式上的,而输入处理命令则是写在特殊的注释块中.它的模板文件采用Java代码编写.

更多Guglhupf XTE信息

  WebMacro 
WebMacro是一种Java开源的模板语言。对于表现web页面,它比JSP,PHP,与ASP效率更高。WebMacro是一些大网站后台的页面生成技术。

更多WebMacro信息

  Viento 
Viento是一个用Java开发的模板语言。它在语句构成上不少情形下有点类于Velocity 。

更多Viento信息

  Jostraca 
Jostraca是一个代码生成工具包。它的模板可以使用相似于JSP的语法来编写。 CodeGenClipse是一个把该代码生成器集成到Eclipse v3.1.2+中的插件。

更多Jostraca信息

  LSP 
LSP是一种基于XML技术的高级Web模板语言。LSP提供强大和易于使用视图逻辑,但可以保持商业逻辑与模板相脱离。LSP直接编译成Java字节码以便提升执行效率。

更多LSP信息

  JLoom 
JLoom是一个采用相似于JSP语法的模板引擎。参数能够是任何Java类型,甚至是泛型(generic)。JLoom还提供一个Eclipse插件来辅助开发。

更多JLoom信息

  MiniTemplator 
MiniTemplator是一个简洁的模板引擎。定义模板文件中的变量和块的语法很是简单,支持块嵌套块。对于MiniTemplator的使用,其提供良好、完整文档支持。

更多MiniTemplator信息

  CommonTemplate 
CommonTemplate是一个模板引擎,用于解释CTL模板语言,可在多种运行时环境下使用;其主要目标是做为JSP,ASP.Net等的替代方案,以保证用简单的语法,良好的结构,不混杂业务逻辑的方式书写页面;也能够做为动态文本生成工具,生成HTML、XML、Mail、Java源代码或其它文本等。 2、CommonTemplate特性: 1.只有一个语法规则:$指令名{表达式},使用更简单,更统一。 2.支持语法外套,能够在Dreamwear下正常使用WYSWYG,而且语法外套也是可扩展的。 3.微核理念,高度可扩展,除了核心API,其它逻辑相关处理都是外置的,包括全部指令及表达式,标准的 for, if, else 等指令,以及 + - * / 等表达式,都可被替换。 4.使用主控迭代器模式替代传统的被动访问器模式,引擎只负责将模板解析成指令树,其它全部处理均由扩展指令自身完成,给扩展指令以最大的控制权。(相似于StAX与SAX的区别) 5.对已有不可变类(String,Number,Date等),属性扩展,采用open class思想。(相似javascript的prototype) 6.支持宏引用及模板继承,更有利于模板组件化。 7.内置的国际化支持,国际化信息处理更方便。 8.多种优化措施,性能更优:     (1) 采用针对特定语法写的低级专有DFA解析器解析,试验代表比使用通用抽象的BNF语法体系解析(Java中通常用JavaCC或AntLR)要快,由于BNF为了通用,考虑了太多因素,致使其效率下降,固然,BNF在处理复杂语法(好比要解析C/C++/Java等语法时)颇有优点,但CommonTemplate的语法很是简单且统一,因此使用专有的低级解析器是比较好的选择。     (2) 解析结果被表示成一个线程安全(不变类级)的指令树,单个实例能够在多线程中任意重复使用,避免使用重复解析或克隆等性能损耗。     (3) 解析结果能够在内存中缓存起来,以减小解析次数及IO量,而且缓存策略是可扩展的。(已内置实现了NONE, STRONG, SOFT, FIFO, LRU, MRU, OSCACHE, EHCACHE等缓存策略)

更多CommonTemplate信息

  RTFTemplate 
RTFTemplate是一个RTF to RTF引擎。它可以将RTF模板与来自Java对象的数据相结合,生成新的RTF文档。

更多RTFTemplate信息

  Jtpl 
Jtpl是一个用于Java Servlet的模板引擎,利用它可以实现HTML代码与Java代码分开存储。与其它拥有复杂语法的模板引擎相比,Jtpl使用一种很是简单的模板语法。全部处理过程(循环,判断等逻辑)和变量都在Java代码中实现。便于更好地将布局与代码相分离,并且不须要学习新的复杂语法。

更多Jtpl信息

  VMC Injection 
VMC Injection是一个Java开源模板引擎,利用它能够很容易将任何Java数据结构(如:JDBBC、POJO、HashMap等)注入到文本(HTML/XML等)模板中。

更多VMC Injection信息

  Japid 
Japid-Play是一个拥有与Java硬编码相同性能和速度的Java板模板引擎。模板语法与Play! Web开发框架模板语言类似。Japid是一个通用的模板引擎,适用于任何Java应用程序来渲染任意Java对象。此外它还提供一个专门用于Play!框架的适配器。Japid主要目标是用在基于Play!开发而且拥有大流量的网站中。为了达到这个目标,Japid将基于html的标签文件转换成干净的Java源代码以便让渲染工做可以达到接近采用Java硬编码的速度。Japid其它高级特性包括:拥有相似于site-mesh布局功能,可使用标签(Tag),模板能够有层级关系,内容缓存,服务器端Include等。使用这些高级功能并不会下降Japid的性能。

更多Japid信息

  Hapax 
Hapax是一个简单,但强大的文本模板引擎,适用来在 Java代码中构建文本输出。模板语法和Google的ctemplate类似。 Hapax.png

更多Hapax信息

  Xtempore 
Xtempore是一个轻级量、模块化、强大基于XML的模板语言和工具集。用于将一个Java对象模型结合XML文档模板生成另外一个新的XML文档。
收录时间:2010-12-22 23:45:25

更多Xtempore信息

  Thymeleaf 
Thymeleaf是一个XML/XHTML/HTML5模板引擎,用于展现数据和生成基于文本的文件。它还提供一个模块用于与Spring MVC集成做为视图层使用。
Thymeleaf.jpg 收录时间:2011-04-19 20:44:32

更多Thymeleaf信息

  smarty4j 
smarty4j是一个smarty for java的模板引擎,该引擎是将smarty模板从php上移植过来,须要asm-3.0.jar。
收录时间:2011-04-21 11:22:00

更多smarty4j信息

  Google XML Pages 
GXP是一个模板系统用于生成XML/SGML标签(大部分常常是HTML)。
  • 支持多种语言(包括Java&JavaScript; C++开发中)。
  • 支持运行期从新编译。
  • 编译时类型检查和部分标记验证。
  • 类型自动识别,减小了XSS漏洞的机会
  • 易于使用的国际化支持
  • 方便的参数传递/模块化系统
  • 很是轻量的运行系统
收录时间:2011-04-30 21:25:48

更多Google XML Pages信息

  Cambridge  
Cambridge是一个用于在Java程序中生成html/xml标签的模板引擎。 它拥有高度可扩展和高性能的特色。

Cambridge模板是纯html/xml文档,所以能够直接在浏览器中查看或在其它Html编辑器中可视化编辑而不会产生错误。

Cambridge能够在独立的Java程序中使用,也能够与Servlets和其它流行Web框架如:Spring Mvc、Struts, Play Framework、JAX-RS等集成使用。

收录时间:2011-05-29 10:16:42

更多Cambridge 信息

  Aluminum 
Aluminum是一个强大和灵活的模板引擎。它可用于生成文档,但还能够用于作更多复杂的任务。Aluminum能够单独使用,也能够在servlet环境中使用。
收录时间:2011-06-15 08:54:19

更多Aluminum信息

  Django模板语言的JAVA移植版 Jangod 
Jangod是一个Java模板引擎,一种语法相似于 Django的模板语言。为了凸显JAVA特性,故把“D”拉到后面,取名Jangod。

内建经常使用标签:

  1. Extends 当前模板扩展的父模板
  2. Block 模板继承的可替代单元
  3. Include 载入其它模板做为本模板的一个片断
  4. If…else 条件判断逻辑求值
  5. For 按特定的顺序循环一个数据集合
  6. Cycle 轮流输出一组变量的其中一个
  7. Ifchanged 检查变量当前值与上次存储的值是否发生变化
  8. Set 把一个语法运算结果保存到一个新的变量中

内建过滤器:

  1. Default 设置空值的默认输出内容
  2. Contain 集合或字符串是否包含某个元素或子串
  3. Length 取集合元素个数或字符串长度
  4. Reverse 倒序排列集合元素(若是集合有序的)
  5. Random 从集合中随机取一个元素
  6. Equal 逻辑相等判断
  7. And 逻辑与运算
  8. Or 逻辑或运算
  9. Not 真假值取反
  10. Date 格式化时间变量
  11. Abs 取变量的绝对值
  12. Divisible 判断变量是否被整除
  13. Add 进行变量的加法运算
  14. Multiply 进行变量的乘法运算
  15. Divide 进行变量的除法运算
  16. Escape html特殊字符转义
  17. Lower 把字符串都转换成小写。
  18. Upper 把字符串都转换成大写
  19. Truncate 按必定长度截取字符串
  20. Cut 去除字符串中的特定子串

引擎特色:

  1. 智能的强容错模板解析
  2. 巧妙使用过滤器处理各类复杂的语法运算
  3. 各类特性的数据容器
  4. 自定义标签和过滤器
Django是一个开放源代码的Web应用框架,由 Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。
收录时间:2011-08-13 08:10:01

更多Django模板语言的JAVA移植版 Jangod信息

  httl 
在07的时候,写过一个模板引擎,当时叫CommonTemplate,后来功能愈来愈多,性能却愈来愈差,在金大为发给我性能对比结果后,看到惨不忍睹的差距,就打算抛弃原设计进行重写,但因工做忙,就搁置了,最近看温少发了几个EL和JSON的解析器,有点手痒,就抽了个周未,拿出来再改了改,主要将模板改为了字节码编译,并简化了语法及缩小使用范围,只针对HTML场景使用,并将名称改为了HTTL,名字含义是把HTML中的M(Marker)改为了T(Template),放在GoogleCode上:http://code.google.com/p/httl,性能和Java硬编码输出模板内容差很少,比Velocity/FreeMarker等快10倍左右。

语法方面的区别:  发现基于文本指令的,基于HTML标签的,基于HTML注释的,都有很多模板引擎实现,  为了标新立异以及使用的直观性,HTTL采用基于HTML属性的指令。
选型方面的区别:

  • 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

更多信息参见:  http://code.google.com/p/httl 
HTTL缺省使用Jdk的javax,tools编译字节码,须要500ms左右,若是换成Javassist编译,编译时间能够降到200ms左右,但字节码执行效率略差一点,若是想换成Javassist,只需在httl.properties中加入。 注:Javassist不支持1.5的语法,因此要设置java.version=1.4 

收录时间:2011-09-14 17:24:54

更多httl信息

  Beetl java模板引擎 

Beetl目前版本是2.0,大小650K,相对于其余java模板引擎,具备功能齐全,语法直观,性能超高,开发和维护模板有很好的体验。是新一代的模板引擎。总得来讲,它的特性以下:

  • 功能完备:同主流的java模板引擎相比,Beetl具备绝大多数功能。适用于各类应用场景,从对响应速度有很高要求的大网站到功能繁多的CMS管理系统都适合。Beetl自己还具备不少独特功能来完成模板编写和维护,这是其余模板引擎所不具备的。

  • 很是简单:相似Javascript语法和习俗,只要半小时就能经过半学半猜彻底掌握用法。拒绝其余模板引擎那种非人性化的语法和习俗。

  • 超高的性能:Beetl 远超过主流java模板引擎性能,并且消耗较低的CPU

  • 易于整合:Beetl能很容易的与各类web框架整合,如Spring MVC,JFinal,Struts,Nutz,Jodd,Servlet等。

  • 支持模板单独开发和测试,即在MVC架构中,即便没有M和C部分,也能开发和测试模板。

  • 扩展和个性化:Beetl支持自定义方法,格式化函数,虚拟属性,标签,和HTML标签. 同时Beetl也支持自定义占位符和控制语句起始符号也支持使用者彻底能够打造适合本身的工具包.

 

 

关于性能

经过与主流模板引擎Freemaker,Vecloity以及JSP对比,Beetl均远高于前面三个,这是由于宏观上,经过了优化的渲染引擎,IO的二进制输出,字节码属性访问加强,微观上,经过一维数组保存上下文,合并静态文本,经过重复使用字节数组来防止java频繁的建立和销毁数组,还使用模板缓存,运行时优化等方法。

 

 

 

独特功能

Beetl有些功能是发展了10多年的模板引擎所不具有的,这些功能很是利于模板的开发和维护,以下

  1. 自定义占位符和控制语句起始符号,这有利于减少模板语法对模板的倾入性,好比在html模板中,若是定义控制语句符号是,那么,大部分模板文件都能同过浏览器打开。有的使用者仅仅采用了单个符号@ 以及回车换号做为控制语句起始符号,这又能提升开发效率
  2. 可单独测试的模板。无需真正的控制层和模型层,Beetl的模板就能够单独开发和测试
  3. 同时支持较为松散的MVC和严格的MVC,若是在模板语言里嵌入计算表达式,复杂条件表达式,以及函数调用有干涉业务逻辑嫌疑,你能够禁止使用这些语法。
  4. 强大的安全输出,经过安全输出符号!,能在模板变量,变量属性引用,for循环,占位符输出,try-catch中等各个地方提供安全输出,保证渲染正常
  5. 模板变量:运行将模板的某一部分输出像js那样赋值个一个变量,稍后再处理。利用模板变量能完成很是复杂的页面布局(简单的布局可以使用layout标签函数)
  6. 类型推测,能在运行的时候推测模板变量类型,从而优化性能,也能够经过注解的方法显示的说明模板变量属性(这是非必须的,但有助于IDE自动提示功能)
  7. 可插拔的设计,错误信息提示,模板引擎缓存机制,模板资源管理,本地调用的安全管理器,严格MVC限制,模板引擎自己都有默认的实现,但又彻底能够自定义以适合特定需求
  8. 加强的语法,如for-elsefor, select-case,安全输出符号! 等,这些语法特别适合模板开发
  9. 性能超高,具备最快的模板解释引擎,同时,又有较低的CPU消耗。适合各种模板引用,如CMS系统,超高访问量的门户系统

 

收录时间:2014-07-11 21:00:06

更多Beetl java模板引擎信息

 

 

转帖自:http://www.open-open.com/2_21.htm

相关文章
相关标签/搜索