阅读更多

6顶
1踩

开源软件

原创新闻 开源 Java 模板引擎 HTTL 1.0.0 发布

2012-10-30 14:43 by 正式记者 javatar 评论(8) 有9118人浏览
HTTL是一个适用于HTML输出的开源JAVA模板引擎,可用于替代JSP页面,它的指令类似于Velocity。

HTTL采用类似于JSP的原理,将模板编译成Java字节码运行,但比JSP的EL更进一步,使用强类型推导,减少运行期反射和转型,更加快速.

项目首页:http://httl.github.com

源码地址:https://github.com/httl/httl

下载地址:https://github.com/httl/httl/downloads

变更日志:

修复问题:

1. 解决foreach和if/else联合使用时状态错乱问题。
2. 解决getIsXxx属性解析出错问题。
3. 解决文件加载未使用指定编码问题。
4. 解决部分文件流打开后未关闭问题。
5. 解决迭代map出错的问题,以及Map数据的类型推断问题。

新功能:

6. 支持单独的macro文件定义宏方法,通过import.macros配置加载。
7. 增加gt,ge,lt,le符号,在属性语法时避免表达式出现HTML标签符。

兼容优化:

8. 静态方法不走engine.getFunction()查找实例,直接调用类的静态方法。
9. 将所有配置的获取改为setter注入,比如:setInputEncoding(String)。
10. 编译Macro时直接注入到模板属性中,并增加template.getMacros()方法。
11. 渲染过程不改变传入Map的状态,保证模板渲染的无副作用性,以及多次渲染的幂等性。
12. 优化Profiler性能分析发现的ArrayIterator引起的性能损耗问题。
13. 将文本内容不编译到字节码中,改为从缓存中获取,防止内存Perm区过大,并提供source.in.class和text.in.class开关项。

不兼容优化:(注:从旧版本升级到1.0.0请注意不兼容优化项)

14. 将define指令名改成var,以免和velocity的define指令理解混淆,影响所有旧模板,用户可全文替换。
15. 去掉block指令,用#set(xxx = xxxmacro())代替,影响使用block的模板。
16. 将com.googlecode.httl改成httl,影响API调用,重新Ctrl+Shift+O导入一下包名即可,类名没变。
17. 将com.googlecode.httl.support改成httl.spi,影响httl.properties中扩展点的配置,使用缺省配置值的,建议不要配到用户配置中。
18. 将filters配置项改成了value.filters,与text.filters对应用,影响httl.properties中filter扩展点的配置。
19. 将functions配置项成了import.methods,与import.packages以及import.macros对应,方便理解。
20. 加号数字优先,即只要有一方为数字即换数字计算,如:"2" + 3,输出:5,而不是:23,如果要字符相拼双方都要为字符:"2" + 3.toString
来自: httl
6
1
评论 共 8 条 请登录后发表评论
8 楼 lovejing 2012-10-31 11:35
支持 up
7 楼 lection.yu 2012-10-31 10:48
请问httl是否支持自定义指令,既然是编译成字节码运行,如果模板加载数量过多,然后很多是过期模板,是否有释放Perm空间的方式?
6 楼 tufly 2012-10-31 10:08
这个一直在留意,辛苦了。
5 楼 javatar 2012-10-31 08:32
tag13346 写道
不知道和freemarker比有什么特别之处


HTTL主要追求的是性能,像JSP一样编译模板为字节码运行,这也是HTTL的核心工作,持之以恒的优化性能。

语法方面,HTTL追求的是KISS,尽量简洁。指令模仿的是Velocity,指令只要不影响基本功能完备,能少尽量少,像Velocity中没怎么用的stop或可用macro替代的define等指令统统砍掉,include, parse, evaluate等指令全部降级为表达式方法。

FreeMarker追求的超多功能,但也就相对复杂,其实很多功能,都没必要在语法层面支持。
4 楼 tag13346 2012-10-30 22:43
不知道和freemarker比有什么特别之处
3 楼 javatar 2012-10-30 17:46
string2020 写道
重造轮子.


这个轮子造了很久了,以前叫commontemplate:
http://oskpi.com/commontemplate/zh/index.html

去年的时候,优化了一下性能,改成了httl:
http://www.iteye.com/topic/1114669

不知怎么的,最近问HTTL相关问题的人变多了,还有人发来修复问题的代码,就周未抽了点时间,改了改,顺便发个版本,希望能对得起帮忙改代码的用户。
2 楼 string2020 2012-10-30 17:09
重造轮子.
1 楼 zhongmin2012 2012-10-30 16:48
没使用过,待观察,待大家评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • httl:超文本模板语言和引擎

    超文本模板语言( HTTL )和引擎 文献资料网页:|示例:|用户指南语法:|配置:|开发指南整合:英文|中文设计:英文|中文帮助(常见问题/团队成员):英语|中文 下载https://github.com/httl/httl/tags 或克隆项目...

  • httl文件如何引入Java类,Java模板引擎 HTTL

    软件介绍HTTL(Hyper-Text Template Language)是一个高性能的开源JAVA模板引擎,适用于动态HTML页面输出,可替代JSP页面,指令和Velocity相似。简洁友好的模板语法语法尽可能符合HTML和JAVA开发者的直觉,指令和老牌...

  • java httl_Java模板引擎 HTTL

    HTTL(Hyper-Text Template Language)是一个高性能的开源JAVA模板引擎,适用于动态HTML页面输出,可替代JSP页面,指令和Velocity相似。简洁友好的模板语法语法尽可能符合HTML和JAVA开发者的直觉,指令和老牌的...

  • httl开源JAVA模板引擎,动态HTML页面输出

    HTTL(Hyper-Text Template Language)是一个适用于HTML输出的开源JAVA模板引擎,适用于动态HTML页面输出,可用于替代JSP页面,它的指令类似于Velocity。 HTTL采用类似于JSP的原理,将模板编译成Java字节码运行,但...

  • Java开源模板引擎

    Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员...

  • HTTL模板引擎

    HTTL模板引擎源码 HTTL(Hyper-Text Template Language)是一个高性能的JAVA开源模板引擎,适用于动态HTML页面输出,可替代JSP页面,它的指令和Velocity相似。

  • 关于httl开源Java模板的使用心得

    HTTL(Hyper-Text Template Language) 是一个高性能的开源JAVA模板引擎, 适用于动态HTML页面输出, 可替代JSP页面, 指令和Velocity相似。 2.模板语法 HTTL语法尽可能符合HTML和JAVA开发者的直觉,指令和老牌的...

  • 教你使用PHP实现一个轻量级HTML模板引擎

    为了提高开发效率和代码可维护性,使用模板引擎是一个非常普遍的方案。像我们经常用到的smarty就是一个非常出名的项目,实际上它的核心原理并不复杂。今天我们就来实现一个自己的模板引擎,揭开这种技术的神秘面纱。...

  • HTTL发布1.0.0版本

    HTTL是我去年写的一个模板引擎,不知怎么的,最近问HTTL相关问题的人特别多,还有人发来修复问题的代码,周未抽了点时间,改了改,顺便发个版本,希望能对得起帮忙改代码的用户,感谢你们。 项目已迁移到GitHub上...

  • java httl_HTTL

    概述HTTL (Hyper-Text Template Language)是一个高性能的开源JAVA模板引擎,适用于动态HTML页面输出,可替代JSP页面,指令和Velocity相似。简洁友好的模板语法HTTL语法尽可能符合HTML和JAVA开发者的直觉,指令和老牌...

  • Spring boot集成Httl模板引擎

    Spring boot 1.5.3集成Httl模板引擎 不能使用@Restcontroller 导致返回直接json化 没有转发到httl引擎 再httl.properties文件中直接指定loaders

  • 从HTTL模板引擎看软件设计原则

    HTTL (Hyper-Text Template Language) 是一个高性能的开源JAVA模板引擎, 适用于动态HTML页面输出, 可替代JSP页面, 指令和Velocity相似。作者是阿里巴巴工程师梁飞,本文是在拜读了HTTL的设计原则之后提炼出的部分...

  • java错误加载模板文件_HTTL模板getTemplate()报错java.lang.IllegalStateException: Not found template /***.httl in C...

    使用HTTL的Engine方法getTemplate 报模板没有没到Engine engine = Engine.getEngine("conf/httl.properties");Template template =engine.getTemplate("pullFail.httl")// 这里报错java.lang.IllegalStateException:...

  • tiny html模板引擎,剖析 “‘最好的模板引擎’Beetl剖析及与Tiny模板引擎对比”...

    http://blog.csdn.net/cndes/art ... 88771这有一篇文章,说是剖析beetl模板引擎,并与同为国内的tiny模板引擎作对比(如下简称“剖析beetl”),其剖析过程公正,但结论却不正确(文中暗示的结论,而不是文章最后一段...

  • 模板引擎 Thymeleaf

    ☀Java项目-表白墙(前后端分离+数据库)已开源☀ 前端项目—待办事项(HTML+CSS+JavaScript实现) Servlet :Servlet API(HttpServlet Request Response) Servlet部署教程(基于Tomcat) Tomcat :Tomcat...

  • 1基于蓝牙的项目开发--蓝牙温度监测器.docx

    1基于蓝牙的项目开发--蓝牙温度监测器.docx

  • AppDynamics:性能瓶颈识别与优化.docx

    AppDynamics:性能瓶颈识别与优化

  • percona-xtrabackup-2.4.28-1.ky10.x86-64.rpm

    xtrabackup银河麒麟v10rpm安装包

  • 2024年全球产品经理大会(脱敏)PPT合集(34份).zip

    2024年全球产品经理大会(脱敏)PPT合集,共34份。 1、AI 原生产品设计的 7 个反共识 2、AI 时代的策略产品与内容社区推荐实践 3、AI时代的用户界面设计 4、AI智能陪练:大模型赋能销售成长 5、AI浪潮中的应用主义者 6、AI驱动下的B端产品的思考与创新 7、AI驱动业务增长的探索与实践 8、Al Native 生产力工具的发展、价值与商业落地 9、B端产品设计避坑指南 10、GenAl驱动的xGen电商AI平台产品实践与思考 11、Kwaipilot 在快手的落地实践 12、OPPO AI的探索新交互到新生态 13、RPA + AI打造大模型驱动的领先数字员工 14、产品AI化重塑的思考与实践 15、产品分析:通过关键指标助力团队与企业成功 16、从RPA到Al Agent,高价值、可落地的智能助手 17、从流量运营到AI驱动的机器增长 18、做穿越时代的产品 19、创造好工具,创造世界一流产品力 20、医疗健康场景的大模型产品探索 21、即时零售柔性供应链体系建设与AIGC在零售数字化的探索 22、向量数据库的出海实践与未来展望 23、大模型在B端落地思考实践

Global site tag (gtag.js) - Google Analytics