Java开源模板引擎
Velocity
更多Velocity信息
FreeMarker
【 FreeMarker Eclipse Plugin与 FreeMarker IDE:Eclipse平台下的辅助开发工具】
更多FreeMarker信息
Jamon
更多Jamon信息
JDynamiTe
更多JDynamiTe信息
JByte
更多JByte信息
Tea
更多Tea信息
Jxp
更多Jxp信息
StringTemplate
更多StringTemplate信息
Better Templates for Everybody
更多Better Templates for Everybody信息
Canvas
更多Canvas信息
Guglhupf XTE
更多Guglhupf XTE信息
WebMacro
更多WebMacro信息
Viento
更多Viento信息
Jostraca
更多Jostraca信息
LSP
更多LSP信息
JLoom
更多JLoom信息
MiniTemplator
更多MiniTemplator信息
CommonTemplate
二、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信息
Jtpl
更多Jtpl信息
VMC Injection
更多VMC Injection信息
Japid
更多Japid信息
Hapax
更多Hapax信息
Xtempore
更多Xtempore信息
Thymeleaf
收录时间:2011-04-19 20:44:32
更多Thymeleaf信息
smarty4j
更多smarty4j信息
Google XML Pages
- 支持多种语言(包括Java&JavaScript; C++开发中)。
- 支持运行期重新编译。
- 编译时类型检查和部分标记验证。
- 类型自动识别,减少了XSS漏洞的机会
- 易于使用的国际化支持
- 方便的参数传递/模块化系统
- 非常轻量的运行系统
更多Google XML Pages信息
Cambridge
Cambridge模板是纯html/xml文档,因此可以直接在浏览器中查看或在其它Html编辑器中可视化编辑而不会产生错误。
Cambridge可以在独立的Java程序中使用,也可以与Servlets和其它流行Web框架如:Spring Mvc、Struts, Play Framework、JAX-RS等集成使用。
更多Cambridge 信息
Aluminum
更多Aluminum信息
Django模板语言的JAVA移植版 Jangod
内建常用标签:
- Extends 当前模板扩展的父模板
- Block 模板继承的可替代单元
- Include 载入其它模板作为本模板的一个片段
- If…else 条件判断逻辑求值
- For 按特定的顺序循环一个数据集合
- Cycle 轮流输出一组变量的其中一个
- Ifchanged 检查变量当前值与上次存储的值是否发生变化
- Set 把一个语法运算结果保存到一个新的变量中
内建过滤器:
- Default 设置空值的默认输出内容
- Contain 集合或字符串是否包含某个元素或子串
- Length 取集合元素个数或字符串长度
- Reverse 倒序排列集合元素(如果集合有序的)
- Random 从集合中随机取一个元素
- Equal 逻辑相等判断
- And 逻辑与运算
- Or 逻辑或运算
- Not 真假值取反
- Date 格式化时间变量
- Abs 取变量的绝对值
- Divisible 判断变量是否被整除
- Add 进行变量的加法运算
- Multiply 进行变量的乘法运算
- Divide 进行变量的除法运算
- Escape html特殊字符转义
- Lower 把字符串都转换成小写。
- Upper 把字符串都转换成大写
- Truncate 按一定长度截取字符串
- Cut 去除字符串中的特定子串
引擎特点:
- 智能的强容错模板解析
- 巧妙使用过滤器处理各种复杂的语法运算
- 各种特性的数据容器
- 自定义标签和过滤器
httl
语法方面的区别:
发现基于文本指令的,基于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
更多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多年的模板引擎所不具备的,这些功能非常利于模板的开发和维护,如下
- 自定义占位符和控制语句起始符号,这有利于减小模板语法对模板的倾入性,比如在html模板中,如果定义控制语句符号是,那么,大部分模板文件都能同过浏览器打开。有的使用者仅仅采用了单个符号@ 以及回车换号作为控制语句起始符号,这又能提高开发效率
- 可单独测试的模板。无需真正的控制层和模型层,Beetl的模板就可以单独开发和测试
- 同时支持较为松散的MVC和严格的MVC,如果在模板语言里嵌入计算表达式,复杂条件表达式,以及函数调用有干涉业务逻辑嫌疑,你可以禁止使用这些语法。
- 强大的安全输出,通过安全输出符号!,能在模板变量,变量属性引用,for循环,占位符输出,try-catch中等各个地方提供安全输出,保证渲染正常
- 模板变量:运行将模板的某一部分输出像js那样赋值个一个变量,稍后再处理。利用模板变量能完成非常复杂的页面布局(简单的布局可使用layout标签函数)
- 类型推测,能在运行的时候推测模板变量类型,从而优化性能,也可以通过注解的方法显示的说明模板变量属性(这是非必须的,但有助于IDE自动提示功能)
- 可插拔的设计,错误信息提示,模板引擎缓存机制,模板资源管理,本地调用的安全管理器,严格MVC限制,模板引擎本身都有默认的实现,但又完全可以自定义以适合特定需求
- 增强的语法,如for-elsefor, select-case,安全输出符号! 等,这些语法特别适合模板开发
- 性能超高,具有最快的模板解释引擎,同时,又有较低的CPU消耗。适合各类模板引用,如CMS系统,超高访问量的门户系统
转至:http://www.open-open.com/2_21.htm
Java开源模板引擎相关推荐
- java velocity是什么意思_基于 Java 的模板引擎Velocity快速入门
最近使用Velocity模板引擎,写一个maven项目Coding生成工具. 对基于Java的模板引擎Velocity的demo总结如下: Step1. 创建Maven项目,添加如下velocity的 ...
- java开源工作流引擎优势是什么?
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.流程引擎的自我介绍 二.java开源工作流引擎优势介绍 总结 前言 IBPSv3.5是流辰信息团队面向Java开发 ...
- java h5模板引擎_详解SpringBoot+Thymeleaf 基于HTML5的现代模板引擎
序言: Thymeleaf 是Java服务端的模板引擎,与传统的JSP不同,前者可以使用浏览器直接打开,因为可以忽略掉拓展属性,相当于打开原生页面,给前端人员也带来一定的便利.如果你已经厌倦了JSP+ ...
- java bpm 开源_几种Java开源工作流引擎的简单比较
摘要:目前开源工作流引擎用的最多的是jbpm , 各种特性都不错, 文档也比较多, 下面只简单列举一下目前开源工作流引擎用的最多的是jbpm , 各种特性都不错, 文档也比较多, 下面只简单列举一下其 ...
- Java Word模板引擎-Poi-tl
本文内容从Poi-tl官方文档摘录,poi-tl是一个基于Java POI的Word模板引擎,有着非常强大的功能 此处只摘录了一些我现在需要用到的功能 文章目录 一.简单示例 1.准备一个模板文档 ` ...
- java开源规则引擎比较_规则引擎对比
RuleEngine--一款使用简单,入门方便的数据库规则引擎_Rewen的专栏-CSDN博客_rulesengine https://blog.csdn.net/Rewen/article/deta ...
- Java 基础系列(十六) --- Java中模板引擎的使用
模板引擎 1 关于动态页面的渲染 2 非模板引擎的弊端 3 模板引擎 3.1 什么是模板引擎? 3.2 Thymeleaf 语法 3.3 模板引擎的使用 4 总结 1 关于动态页面的渲染 渲染就是 ...
- java 开源地图引擎_开源三维地图框架-Cesium
简介 优点:有较多的demo,详细的api文档,有测试平台,比较丰富的展示特性和扩展. 效果展示 加载底图(天地图) 存在 飞行.复位等实用工具 数据的加载和显示 cesium支持topojson,G ...
- java beetl模板引擎_Spring Boot集成beetl模板引擎 个人总结
1. Spring boot快速集成beetl模板引擎 查看官方文档:http://ibeetl.com/guide/#beetl 可参看官方文档 4.6. Spring Boot集成 增加beetl ...
最新文章
- 中国厂商加速5G前瞻性部署
- 【无标题】RestHighLevelClient工具类
- 严格模式 华为_华为千元机虽然好,但是千万别乱选,这三款才是内行人的最爱...
- ssh(Spring+Spring mvc+hibernate)——IDeptService.java和IEmpService.java
- 1030利用三层交换机实现VLAN间通信
- 鸟类南飞,去的是哪个“南方”?
- 特斯拉陶琳:全新Model 3标准续航升级版新增前排双层玻璃、电尾等功能
- linux编译lnx文件命令_Linux命令总结
- redis内存知识点
- Mybatis-学习笔记(8)常用的注解
- 升级iOS10后,AVPlayer有时候播放延时和播放不了的问题
- 基于ATMEGA128单片机的播种机控制系统
- ros pppoe服务器性能,ROS软路由中最详细的PPPOE服务器设置教程
- Java day23
- Android开发自定义View之仿米家APP双色灯控制UI:做一个智能家居产品的简单智能灯UI !(附带Demo)
- 腾讯游戏深度定制 ROG游戏手机3天生高能释放
- 护照阅读器助力港珠澳大桥拓展大湾区
- 王者荣耀怎么投屏到电脑屏幕上
- 计算机器和智能-阿兰图灵(转帖)
- 大蟒蛇python头像_程序员用Python获取了自己以前的QQ历史头像,以前的非主流形象简直不忍直视...