为什么没有把velocity模板编译成java的项目?

yearh 发布于 2014/03/05 07:44
阅读 811
收藏 1

MySQL连接为什么挂死了?别踩坑!>>>

velocity的模板解析代码是通过javacc做出来的,词法、语法分析后最终解释执行,所以效率上完全不及jsp

velocity最大的优点是语法简单,上手很容易;jsp功能太强大,且代码上也不够清晰,所以前端开发时更倾向velocity

为什么没有在运行期将velocity模板编译成java的项目,就如将jsp编译成class,这样既能享受velocity的简单又高性能

是技术上不可实现,还是意义不大?想和大家交流下

加载中
0
zqq90
zqq90

1. 这个模版引擎不错 jetbrick-template 语法类似Velocity,然后编译成java字节码运行。

2. Velocity性能确实差点儿,但是个人观点是,不用编译执行性能也一样和好,这里不用讨论 编译执行vs.解释执行 了,关于性能请看这里

ps:这仅仅是引擎的性能,忽略了IO,如果加上IO这点儿性能差异就更不明显了。

性能测试项目地址:https://github.com/zqq90/ebm

yearh
yearh
回复 @webit : 了解了,研究下,谢谢~
zqq90
zqq90
回复 @yearh : 输出的 是byte流(OutputStream),需要编码,直接输出不占优势,如果输出char流他确实是最高的,高一点点
yearh
yearh
这个测试我不是很明白,directout-system是什么?就是不经过解析,完全原样打印?那应该性能是最高的吧。。
restmad
restmad
推荐楼主使用webit-script
0
純白陰影
純白陰影
你基于jsp标签库实现一个就OK了
yearh
yearh
jsp标签库易用性上还是不如velocity,或者问题可以改成,为什么不用标签库,却选择velocity
0
景愿
景愿
你确定“ 效率上完全不及jsp”?
yearh
yearh
我自己做过测试,velocity单例带模板缓存,去除指定时间间隔重新load模板。jsp去除重编译。简单页面,100并发压10分钟,jetty,1g堆,G1收集器。测下来性能相差20%左右。 测试肯定不是最全面,但应该能反映一般情况
0
X
Xiao_f
jsp除了性能上的优势,还有它是java界唯一一个有IDE支持的强类型模板,可以 自动提示、重构 等(注意这里说的jsp是纯JSP不包括JSTL),就凭这一点,那些弱类型模板可以说真是弱爆了!
zqq90
zqq90
回复 @Xiao_f : 兄弟很有见解啊,不过:1. IDE支持不是一句话的事儿,2. jsp内部是转换成servlet,3. 我们模版引擎作者已经很努力的,我们虽然都已经有想法做IDE插件了,国内的条件你是知道的,能有精力做好模版引擎本身就不错了,没有盈利点,没有土豪的支持,你懂得。
X
Xiao_f
回复 @webit : 是,每个人都该有自己的标准,但在没有标准前容易被事物华丽的外表所迷惑,而看不到什么才是自己真正需要的。jsp脱离web环境的方法还是很多的,就算找不到适合自己的,实现一个纯JSP的引擎也是非常简单的(因为jsp中都是标准java语法)。不能说jsp是官方语言就有特殊待遇,而是现在模板引擎作者努力的方向错了,以牺牲IDE支持为代价提供几个语法糖真的很不值。
zqq90
zqq90
1.每个人都有自己的标准, jsp 是比较早的,如果老少皆宜、足够好,为啥还有那么多其他的模版引擎 2. jsp 太依赖web环境,曾经找一个能独立出来的jsp引擎,做其他用途的模版,例如代码生成,结果徒劳 3.有众多IDE插件,因为他是官二代(官方的标准)
0
寒武纪
寒武纪
说实话,折腾一番到最终还是会发现JSP最好用,没有别的,大规模开发的时候,光是IDE的支持这一项就很有必要
0
名字是什么能吃吗
名字是什么能吃吗
我感觉视图层用这些乱七八糟的模板没什么用 JSP默秒全......
0
Brin想写程序
Brin想写程序

引用来自“名字是什么能吃吗”的答案

我感觉视图层用这些乱七八糟的模板没什么用 JSP默秒全......

同意。太多脱裤子放屁的“引擎”,“模板”,“框架”

返回顶部
顶部