阅读更多

6顶
1踩

开源软件

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

2012-10-30 14:43 by 正式记者 javatar 评论(8) 有9043人浏览
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...

  • Java毕业设计-基于SSM框架的大学生社团管理系统带lw(源码+演示视频+说明).rar

    Java毕业设计-基于SSM框架的大学生社团管理系统带lw(源码+演示视频+说明).rar 【项目技术】 开发语言:Java 框架:ssm+vue 架构:B/S 数据库:mysql 【演示视频-编号:438】 https://pan.quark.cn/s/b3a97032fae7 【实现功能】 实现了社长管理,社团信息管理,社团分类管理,社团加入信息管理,社团成员登记管理,活动信息管理等功能。

  • 基于javaEE+Mysql实现的超市积分管理系统(源码+数据库sql+论文+视频齐全)

    【作品名称】:基于javaEE+Mysql实现的超市积分管理系统(源码+数据库sql+论文+视频齐全) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 超市会员积分管理系统主要用于实现了企业管理数据统计等。本系统结构如下: (1)网络会员管理中心界面: 会员修改密码信息模块:实现会员密码功能; 会员登陆模块:实现会员登陆功能; 会员注册模块:实现会员注册功能; 留言板模块:实现留言板留言功能 (2)后台管理界面: 系统用户管理模块:实现管理员的增加、查看功能; 会员信息管理模块:实现会员信息的增加、修改、查看功能; 注册用户管理模块:实现注册用户的增加、修改、查看功能; 会员卡管理模块:实现会员卡信息的增加、查看功能; 商品销售管理模块:实现商品信息的增加、查看功能; 会员积分管理模块:实现合作公司信息的增加、查看功能; 信息统计模块:实现数据统计报表功能; 留言板模块:实现留言板信息的增加、修改、查看功能;

  • node-v6.9.4-linux-s390x.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • node-v6.13.1-linux-ppc64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics