阅读更多

11顶
6踩

开源软件

十几年来,企业应用、互联网应用后端技术发生了很多变革,从分布式到Without EJB,从Database到Nosql,公司成本得到了很大降低。然而,对于架构师来说,同样重要的前端技术,仍然没有变化,无非还是JSP技术,或者采用模板引擎,如Freemarker、Velocity。前端对于与产品以及作为产品实现者开发人员来说,仍然是费时费力的一块,君不见,错误的使用前端技术,将抵消后台优化带来的用户体验,不适当的使用前端技术,将成倍增加开发和维护时间,尽管架构师们意识到到此问题,但可选方案几乎没有。这种现象长时间未曾变化!

 

Beetl作为新一代的模板技术,试图进一步提高前端开发效率和运行效率,从而节约公司成本,它提供了如下特性

 

  • 采用Javascript语法,对于程序开发人员或者前端设计人员来来说,学习成本为零.。相比其他模板技术的独特语法来说,无疑提高了学习效率和开发效率。
  • 能在运行时编译成java class代码,能提高运行效率以及减少对系统资源如CPU消耗、内存使用,以及减少垃圾回收次数。能克服其他模板语言运行效率不理想或者消耗主机资源过多的情况。
  • 大型公司和小型公司,对于MVC模式都有不同的策略。在大公司,View通常是专门开发人员,或者前端人员来完成,因此不允许将逻辑放到视图层来处理,而小型公司,开发人员负责了MVC所有部分。因此对于View层的技术,需要一个灵活的可定制的模板语言。Beetl正是这样的模板语言,它可以定制策略, 可以允许严格的MVC,也可以使用非严格的MVC,甚至还允许直接调用java类代码(后门)。

除了以上三个显著不同于其他模板语言的特性外,Beetl还胜在细节上,还提供如下特性:

 

  • 整个大小不到350K,其他模板语言有的功能,Beetl基本上都包含
  • 双引擎,包含了解释执行引擎,也包含了运行时编译引擎
  • 详细的错误提示,包括行数、错误符号、上下相关行以及错误原因
  • beetl提供安全输出,在意外情况下,页面仍然能得到渲染
  • 自定义函数、格式化函数、标签库,允许自定义虚拟属性,无需在java代码中为Pojo添加额外属性专门用于显示
  • 自定义占位符号、控制语句符号,将对模板的侵入性降到最低
  • 输出不会产生多余的空格和换行,其他模板语言或者JSP将不可避免产生此问题
  • 与Spring MVC整合

项目地址: http://beetl.sourceforge.net/

 

  • 大小: 87.5 KB
11
6
评论 共 37 条 请登录后发表评论
37 楼 javamonkey 2012-03-11 21:21
按照大家要求,api文档,源代码等都更新到,并修复了几个bug

https://sourceforge.net/projects/beetl/files/
36 楼 linux2002 2012-03-09 11:55
很不错!楼主技术达人啊
35 楼 javamonkey 2012-03-07 13:05
pf_miles 写道
  • svn里面连.settings, .project都上传了,太乱了..
  • 性能比较数据太少;wiki里面给出了与freemarker的性能比较,并且只有一种情况;既然声称这是编译为java代码执行那么其实更应该给出与jsp的比较数据


jsp没有办法比,性能确实好。 只能跟freemarker,velocity比。 我主要缺少测试环境,所以过一段时间会想办法弄到测试环境再公布更多情况

34 楼 pf_miles 2012-03-07 12:33
  • svn里面连.settings, .project都上传了,太乱了..
  • 性能比较数据太少;wiki里面给出了与freemarker的性能比较,并且只有一种情况;既然声称这是编译为java代码执行那么其实更应该给出与jsp的比较数据
33 楼 javamonkey 2012-03-07 11:48
xingqiliudehuanghun 写道
renzhen 写道
xingqiliudehuanghun 写道
首先支持楼主的这种开源举动。但对于改语言的一些设计提一下自己一些观点。
1. 楼主的设计中包含了一个特性:“自定义控制语句”,没看到具体的例子,
   如果这个功能做的太强大的话,我觉得这不是很好。模板语言的定位就是
   用来做格式转化的,不能做除此之外的事情。如果这里面包含了太多的与
   格式转化相关的逻辑,那么我觉得这种模板已经退化为JSP,失去了其原本
   的初衷。我觉得好的模板语言应该力求做到:让你方便快速的完成格式转化
   的任务,同时让你非常困难的做不适合模板应该做的事情。同样的如果表达式
   计算做到太过强大也同样会有这样的问题。

2. 为什么不使用FreeMarker那样的类似XML的风格呢?感觉那个<%%>计较拉碴的
   没有XML风格好看。

3. 只是一个Java模板,没有提供前端JS的支持。现在的Web程序JS程序的比重不断
   加大,很多时候后端需要做的渲染甚至都没有JS多。这样的话如果一个模板语言
   即支持Java又支持JS,做到客户端与服务器“书同文”是非常有必要的。


模板语言即支持Java又支持JS,这个非常好,最近正想要这样的引擎,正想使用Rhino+JS引擎来做支持呢,搞死人了

前端时间本来想向项目组申请做这样一个东西,即一套语言标准。可以同时JS、Java
、ruby实现。js实现用来前端动态渲染,Java用来生成html,两种共同调用同一个模板
文件。ruby用来对js代码进行发布前的预编译转化为等效JS语句。这样用起来才顺手。
等忙过这段时间,自己搞一下


心动不如行动,赶快吧
32 楼 xingqiliudehuanghun 2012-03-07 11:05
renzhen 写道
xingqiliudehuanghun 写道
首先支持楼主的这种开源举动。但对于改语言的一些设计提一下自己一些观点。
1. 楼主的设计中包含了一个特性:“自定义控制语句”,没看到具体的例子,
   如果这个功能做的太强大的话,我觉得这不是很好。模板语言的定位就是
   用来做格式转化的,不能做除此之外的事情。如果这里面包含了太多的与
   格式转化相关的逻辑,那么我觉得这种模板已经退化为JSP,失去了其原本
   的初衷。我觉得好的模板语言应该力求做到:让你方便快速的完成格式转化
   的任务,同时让你非常困难的做不适合模板应该做的事情。同样的如果表达式
   计算做到太过强大也同样会有这样的问题。

2. 为什么不使用FreeMarker那样的类似XML的风格呢?感觉那个<%%>计较拉碴的
   没有XML风格好看。

3. 只是一个Java模板,没有提供前端JS的支持。现在的Web程序JS程序的比重不断
   加大,很多时候后端需要做的渲染甚至都没有JS多。这样的话如果一个模板语言
   即支持Java又支持JS,做到客户端与服务器“书同文”是非常有必要的。


模板语言即支持Java又支持JS,这个非常好,最近正想要这样的引擎,正想使用Rhino+JS引擎来做支持呢,搞死人了

前端时间本来想向项目组申请做这样一个东西,即一套语言标准。可以同时JS、Java
、ruby实现。js实现用来前端动态渲染,Java用来生成html,两种共同调用同一个模板
文件。ruby用来对js代码进行发布前的预编译转化为等效JS语句。这样用起来才顺手。
等忙过这段时间,自己搞一下
31 楼 javamonkey 2012-03-07 09:52
xingqiliudehuanghun 写道
首先支持楼主的这种开源举动。但对于改语言的一些设计提一下自己一些观点。
1. 楼主的设计中包含了一个特性:“自定义控制语句”,没看到具体的例子,
   如果这个功能做的太强大的话,我觉得这不是很好。模板语言的定位就是
   用来做格式转化的,不能做除此之外的事情。如果这里面包含了太多的与
   格式转化相关的逻辑,那么我觉得这种模板已经退化为JSP,失去了其原本
   的初衷。我觉得好的模板语言应该力求做到:让你方便快速的完成格式转化
   的任务,同时让你非常困难的做不适合模板应该做的事情。同样的如果表达式
   计算做到太过强大也同样会有这样的问题。

2. 为什么不使用FreeMarker那样的类似XML的风格呢?感觉那个<%%>计较拉碴的
   没有XML风格好看。

3. 只是一个Java模板,没有提供前端JS的支持。现在的Web程序JS程序的比重不断
   加大,很多时候后端需要做的渲染甚至都没有JS多。这样的话如果一个模板语言
   即支持Java又支持JS,做到客户端与服务器“书同文”是非常有必要的。


1 自定义控制语句是指自定义控制语句的起始符号和结束符号,抱歉没有合适简单的词说明此特性
譬如,你在html中,可以使用<!--:    -->。里面放置beetl语句。你可以打开
http://beetl.sourceforge.net/5min_example1.htm 并查看源代码
2 之所以不采用xml风格,而是自定义,主要是降低对模板侵入性,以及其他用途
3 富客户端比重大的网站,js作用明显,传统企业应用的后台web系统,这类程序越来越多。但还是有很多网站js只是起到辅助作用。而且如果你看了我网站首页,也知道,分工越来越细,前端人员跟后端人员是俩批人,前者会javascript,后者会java,同问没有必须要。 如果没有分工情况,都是开发人员搞,我也相信开发人员知道javascript语法和用法习惯,掌握beetl也不是什么难度

谢谢你提供的建议,我会再以后文档详细说明设计beetl的出发点
30 楼 renzhen 2012-03-07 09:08
xingqiliudehuanghun 写道
首先支持楼主的这种开源举动。但对于改语言的一些设计提一下自己一些观点。
1. 楼主的设计中包含了一个特性:“自定义控制语句”,没看到具体的例子,
   如果这个功能做的太强大的话,我觉得这不是很好。模板语言的定位就是
   用来做格式转化的,不能做除此之外的事情。如果这里面包含了太多的与
   格式转化相关的逻辑,那么我觉得这种模板已经退化为JSP,失去了其原本
   的初衷。我觉得好的模板语言应该力求做到:让你方便快速的完成格式转化
   的任务,同时让你非常困难的做不适合模板应该做的事情。同样的如果表达式
   计算做到太过强大也同样会有这样的问题。

2. 为什么不使用FreeMarker那样的类似XML的风格呢?感觉那个<%%>计较拉碴的
   没有XML风格好看。

3. 只是一个Java模板,没有提供前端JS的支持。现在的Web程序JS程序的比重不断
   加大,很多时候后端需要做的渲染甚至都没有JS多。这样的话如果一个模板语言
   即支持Java又支持JS,做到客户端与服务器“书同文”是非常有必要的。


模板语言即支持Java又支持JS,这个非常好,最近正想要这样的引擎,正想使用Rhino+JS引擎来做支持呢,搞死人了
29 楼 xingqiliudehuanghun 2012-03-07 08:47
首先支持楼主的这种开源举动。但对于改语言的一些设计提一下自己一些观点。
1. 楼主的设计中包含了一个特性:“自定义控制语句”,没看到具体的例子,
   如果这个功能做的太强大的话,我觉得这不是很好。模板语言的定位就是
   用来做格式转化的,不能做除此之外的事情。如果这里面包含了太多的与
   格式转化相关的逻辑,那么我觉得这种模板已经退化为JSP,失去了其原本
   的初衷。我觉得好的模板语言应该力求做到:让你方便快速的完成格式转化
   的任务,同时让你非常困难的做不适合模板应该做的事情。同样的如果表达式
   计算做到太过强大也同样会有这样的问题。

2. 为什么不使用FreeMarker那样的类似XML的风格呢?感觉那个<%%>计较拉碴的
   没有XML风格好看。

3. 只是一个Java模板,没有提供前端JS的支持。现在的Web程序JS程序的比重不断
   加大,很多时候后端需要做的渲染甚至都没有JS多。这样的话如果一个模板语言
   即支持Java又支持JS,做到客户端与服务器“书同文”是非常有必要的。
28 楼 coollzh 2012-03-07 00:10
国产的就不稳定了? 那个国外的产品不是发展了n年才慢慢稳定的!

顶!
我对你的编译技术有点兴趣,呵呵
27 楼 javamonkey 2012-03-06 23:02
补充了API文档,有点粗糙,只好等周末再补充正规一点的API文档
26 楼 javamonkey 2012-03-06 21:16
magic4u 写道
感觉好像不错,兄弟加油,我来给你当吃螃蟹的吧,不过这个螃蟹要吃多久我可不保证哈。


我的联系方式在这个页面,如果有任何问题和建议,可以Q我
http://beetl.sourceforge.net/aboutme.htm

另外,你说得
Powerful XML transformation capabilities:
Advanced template metaprogramming:
function
我在了解一下,看看他的用处先
25 楼 magic4u 2012-03-06 21:04
不过老实说,这几个功能,我感觉很重要啊。
Powerful XML transformation capabilities:
Advanced template metaprogramming:
function
24 楼 magic4u 2012-03-06 21:02
感觉好像不错,兄弟加油,我来给你当吃螃蟹的吧,不过这个螃蟹要吃多久我可不保证哈。
23 楼 javamonkey 2012-03-06 18:48
tomfish88 写道
等你名气大了再使用吧,希望你发展好


敢第一个尝螃蟹的人确实少。

另外,你这话不对,
第一,应该是等beetl名气大了再使用,不是等我名气大了。
第二:我也不需要名气,要名气无非是能挣更多钱,我现在不需要挣更多的钱

22 楼 tomfish88 2012-03-06 18:13
等你名气大了再使用吧,希望你发展好
21 楼 小叮当 2012-03-06 17:11
javamonkey 写道
小叮当 写道
其实,虽然有N多优点,但就怕产品稳定性不好。虽然tiles,freemarker很老,但是很稳定。


freemarker如果你看到他得历史文档,你也会发现他最初几年也不是特别稳定

去年6月就有一个版本0.5出来,确实后来一些使用者就提出过一些问题,包括bug和改进意见。使得这个工具不断改善。

我本来想掖在怀里等成熟了在拿出来,不过这模板语言,要是不经过实践检验,很难说好和坏的,所以拿出来了。如果有人愿意使用,我一定提供好服务,有bug改bug,有不足的地方改进。


其实国外的优秀项目都是这样起来的,没有人参与,靠一个人的力量几乎是不可能出优秀产品的。很多人用着用着, 就发现bug,因为没有技术支持,就只好自己下代码,改bug,最后成了committer。
20 楼 javamonkey 2012-03-06 12:05
小叮当 写道
其实,虽然有N多优点,但就怕产品稳定性不好。虽然tiles,freemarker很老,但是很稳定。


freemarker如果你看到他得历史文档,你也会发现他最初几年也不是特别稳定

去年6月就有一个版本0.5出来,确实后来一些使用者就提出过一些问题,包括bug和改进意见。使得这个工具不断改善。

我本来想掖在怀里等成熟了在拿出来,不过这模板语言,要是不经过实践检验,很难说好和坏的,所以拿出来了。如果有人愿意使用,我一定提供好服务,有bug改bug,有不足的地方改进。
19 楼 javamonkey 2012-03-06 11:56
shuaiji 写道
demostic open source was re-wrap and re-wrap

英文单词写错了

re-wrap什么呢?你可以把你说说beetl里wraped部分说来给大家分享一下
18 楼 libudi 2012-03-06 11:13
先支持一下再看,有些页面打不开

发表评论

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

相关推荐

  • java开源包1

    Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom ...

  • beetl1.1 国产模板语言与tstdb的”键值对“数据库

    [url]http://www.iteye.com/news/24431-beetl[/url] [url]http://www.iteye.com/news/24422-tstdb_v2[/url]

  • JAVA上百实例源码以及开源项目

     使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制...

  • 分享6个国内优秀Java后台管理框架的开源项目,建议收藏

    Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大...

  • 14【JavaWeb】视图-Thymeleaf

    模板分类 2.1 前后分离 2.2 Thymeleaf 2.3 FreeMarker 2.4 beetl 2.5 Velocity 2.6 JFinal Enjoy 2.7 JSP 总结 前言 SpringBoot官方推荐Thymeleaf模板引擎,在此基础上可以扩散了解,在这一领域有哪些模板引擎可供...

  • java开源包11

    Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom ...

  • java开源包2

    Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom ...

  • Java资源包01

    Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom ...

  • java开源包101

    Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom ...

  • java开源包3

    Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom ...

  • java开源包6

    Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom ...

  • java开源包10

    Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom ...

  • java开源包8

    Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom ...

  • java开源包4

    Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom ...

  • java开源包9

    Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom ...

  • java开源包5

    Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom ...

  • java开源包7

    Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom ...

  • JAVA上百实例源码以及开源项目源代码

    Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,日期选择 Java语言开发的简洁实用的日期选择控件,源码文件功能说明: [DateChooser.java] Java 日期选择控件(主体类) [public] ...

  • Java常用类库以及简介,具体使用细节进行百度(爬虫爬取的数据)

    特性: 完整的 YAML 1.1解析器。尤其是,SnakeYAML能够分析来自于规范的所有示例; 支持Unicode,包括UTF-8/UT... 时间格式化类库 PrettyTime PrettyTime是一个开源的时间格式化类库。它能够将时间格式成...

  • polylearn-0.1.dev0-cp35-cp35m-win32.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

Global site tag (gtag.js) - Google Analytics