设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
Google Sitebricks Web Framework
返回列表
发新帖
Google Sitebricks Web Framework
[复制链接]
11
|
7
|
2014-2-19 11:55:14
|
显示全部楼层
|
阅读模式
Sitebricks是由Google推出的构建在Google Guice之上的全新Web应用开发框架,其目标在于早期的错误检测、高效的代码以及快速的开发。InfoQ有幸采访了Sitebricks创建者与Google Wave核心工程师Dhanji Prasanna一探究竟。
InfoQ:构建这样一个全新Web框架背后的动机是什么?现有的众多框架还不够使么?
Dhanji:我已经在这上面花费了大量的时间和心力(从Java 5出来就已经着手开发了)。在试用过几个流行的框架如Struts1/2、JSF等之后感受到了不少痛苦之处,从那以后就开始不断尝试让Web编程更加有趣,同时也减轻自己的痛苦。我向很多人介绍了Sitebricks,他们都对这个框架的特性感到无比兴奋。一开始他们都很不屑:不就是另一个框架而已么?但后来却转变了态度,认为这是一个优秀的框架。这给了我极大的自信,也支撑着我一路走到现在。
我相信Sitebricks还有很大的创新空间。虽然我并不喜欢使用“REST”这个时髦词,但Sitebricks在其设计之初就全面拥抱核心的 HTTP规范,现在很缺这种解决方案。如果标榜其为“RESTful Web框架”,那会吸引更多的人,然而我们相信Sitebricks本身的特性就会让人们感到兴奋,因为事实就是如此。
回复
使用道具
举报
千问
|
2014-2-19 11:55:14
|
显示全部楼层
InfoQ:相对于传统的Java框架和技术比如JSF、Wicket等等,Sitebricks有什么与众不同之处呢?
Dhanji:Sitebricks与他们都不一样。JSF和Wicket都通过采取类似于桌面UI的方式进行 Web UI设计:事件、组件以及与用户的点击和行为进行交互的Widget。Sitebricks直接构建在HTTP之上,这意味着它与JAX-RS(面向 RESTful Web Services的Java API)有一拼,不得不提的是,我也对JAX-RS的设计做出过贡献,但是目前它还不支持模板,也没有提供客户端API。
我对现有的MVC框架感到最不爽的地方就是他们出来的快,消失的也快,而且还隐藏了HTTP层。这导致了很多奇怪的行为,比如自动注入用于捕获点击的 javascript并将其转换为收集状态的POST。另外这些框架都很庞大,做起原型来可不是一件轻松的事。而Sitebricks却很简洁,它拥抱 HTTP,热爱HTTP,非常擅于获取与交换资源和消息。
基于这一点,我们采取类似于函数式语言的方式来构建模板层,这样用户就可以一种简洁的方式组合多个页面(通过折叠和投影)了。其中的灵感来自于函数式语言如Scheme和Haskell,Terrence Parr关于模型/视图分离的论文(http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf)也是我们所遵循的重要原则。
回复
使用道具
举报
千问
|
2014-2-19 11:55:14
|
显示全部楼层
InfoQ:能否谈谈Sitebricks背后所遵循的基本原则及采取的技术选型?
Dhanji:当然可以。主要的原则就是简洁与类型安全,就像Guice那样。从导航到URL映射及模板语言的编写,所有内容都由一个额外的错误检测及静态分析层所支撑。Sitebricks模板中的表达式就像JSP那样简洁,但却通过一个类型推断算法进行静态的类型检查。它甚至还使用了鸭子类型,保证了静态安全。
另一个核心原则就是速度:不仅仅是性能,还有开发者的效率。Sitebricks的生命周期与HTTP别无两样,每个页面都是一个常规的Java POJO再加上一个前端的HTML模板。其他框架中的“客户化”组件通常都需要大量额外的配置及支持类。在Sitebricks中,模板系统的本性使得客户化可重用的页面片段与常规的页面没有什么差别。
最后,我想说的是Sitebricks直接构建在Guice之上。这是我们从一开始就遵循的核心设计原则,这样Sitebricks就与完整的DI系统紧密结合起来了,从而无需像其他框架那样还要花费很大气力才能利用到DI的优势。
回复
使用道具
举报
千问
|
2014-2-19 11:55:14
|
显示全部楼层
InfoQ:要想使用Sitebricks开发Web应用都需要哪些步骤、工具以及程序库呢?
Dhanji:基本的做法就是在浏览器中运行HTML页面,然后不断编辑它,再来查看效果。无需任何特别的工具来设计页面或是组件。你可以在任何Servlet容器中运行Sitebricks并遍历页面(称作brick)或是更大的组合页面中的片段。
就像Guice一样,Sitebricks遵循这样一种思想:类型安全与早期的错误检测对开发者是大有裨益的。不仅验证对象以保证DI依赖(通过 Guice及内建的Guice Servlet)的正确性,而且还对页面中的表达式进行静态的类型检查使之符合相应的页面类。在Red Hat王牌工程师Mike Brock的帮助下,我对优秀的表达式语言MVEL(http://mvel.codehaus.org)进行了扩展以使用类型推断算法,这保证了JSP风格表达式的简洁性,同时又提供了Java编译器丰富的错误检测功能。
我们的目标就是无需任何特别的工具就能获得最大的收益(甚至都不需要IDE)。MVEL要比JSP EL快一个数量级,比大多数其他的EL快好几倍。
除此之外,Sitebricks还会加载对HTML模板的静态分析,确保表单参数匹配构建目标、action URL并执行其他一整套检测。当然了,这只是冰山一角而已,我们还有很多工作要做。
回复
使用道具
举报
千问
|
2014-2-19 11:55:14
|
显示全部楼层
InfoQ:Sitebricks能否集成其他一些流行的Web技术比如GWT、能否在客户端集成JavaScript工具、能否集成Hibernate及其他持久化框架?
Dhanji:目前你可以在Sitebricks页面上使用任何javascript框架并将其嵌入到其他 Sitebricks页面上作为组合片段或是“brick”。Sitebricks会处理好这一切并将CSS、Javascript及其他资源正确地重写到标签内,这意味着你可以通过简单的注解来嵌入任何信息。凭借这一点,开发者可以将任何Web页面包装起来并作为一个可重用的组合单元插入到其他页面中,该特性非常棒。你还可以通过Sitebricks将XML和JSON传递到GWT应用中,就像任何其他的客户端服务一样。
目前我们正致力于以comet风格来集成GWT,这样Sitebricks就可以轻松作为后端来支持长时间运行、双向的GWT应用了。
由于Sitebricks构建在Guice之上,因此用户可以充分利用我们所提供的与各种框架和程序库的集成。Warp-persist(http://www.wideplay.com)是一个针对JPA、Hibernate和db4objects的薄薄且又简单的集成层,用户可以通过它在任何Guice应用中轻松实现持久化和事务操作。它还具有丰富的类型安全以及自动化查询等特性。现在很多组织与个人都在使用Warp-persist,其中包括Google内部的一些项目。
Guice的Servlet模块也内置于Sitebricks之中,这能够帮助应用消除繁琐的web.xml配置。
回复
使用道具
举报
千问
|
2014-2-19 11:55:14
|
显示全部楼层
InfoQ:好像Google Wave Federation Prototype Server使用了Sitebricks,它真的用在该服务器中了么?你是否打算将其用在更多的Google项目中呢?
Dhanji:你消息很灵通啊!事实上,Sitebricks并没有用在Google Wave参考实现中。在我建立Federation项目的构建配置时,我使用了Sitebricks的ant脚本作为模板,因此在一些示例中留有一些注释。然而我曾与一些团队讨论过将Sitebricks用在Google Wave的其他系统中,我相信当其稳定时会派上用场的。我曾与Google一些工程师谈论过Sitebricks,他们都对其表示出了极大的兴趣,但现在说这些还有些为时过早,一切都要等到代码成熟稳定时才能做出决定。
回复
使用道具
举报
千问
|
2014-2-19 11:55:14
|
显示全部楼层
InfoQ:这个世界上并不存在万能的框架,那么你认为哪些Web应用最能从Sitebricks上获益,哪些情况下不应该使用Sitebricks呢?
Dhanji:问的好。Sitebricks适合于当今大多数具有如下特点的站点:其HTML页面具有大量文本内容和一些组件,而这些组件是通过Javascript以交互的方式插入或是修改的。
一开始,你可能会觉得像Google Wave这样使用了大量Ajax的应用并不会从Sitebricks中获得多少好处,但在看过其RPC层之后,你就会发现Sitebricks的 RESTful Web Services API非常适合于为GWT应用直接传输JSON或是XML。同时,我们还发现相对于从JSON或是GWT-RPC转换来说,预先渲染的HTML片段可以极大地提升性能,而Sitebricks非常适合于这一点。
最后,我们还通过快速的序列化在Sitebricks中实现健壮的HTTP(RESTful)Web Services,同时捆绑了一个简单的HTTP客户端API,这意味着同样的Sitebricks jar可以用在Web Services远程设施的两端。为了做到这一点,我们针对MVEL进行了MVBus扩展,这与传统的程序库如XStream相比,性能提升了一个数量级。
回复
使用道具
举报
千问
|
2014-2-19 11:55:14
|
显示全部楼层
注意:
本文作者Dhanji是Dependency Injection一书的作者,该书的最后一章介绍了如何通过Google Sitebricks构建完整的Web应用。
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行
1
使用鼓包的轮胎有没有安全隐患 ?
2
底盘金属做底盘装甲价格多少 ?
3
加油站里面的添加剂能不能购买使用 ?
4
2021款新途昂尊崇豪华版多媒体问题
5
欧尚x7熄火屏幕10分钟后才能关闭可以取消吗
6
燃油添加剂哪个牌子的效果明显
7
XC空调效果怎么样
8
轮胎鼓包了 能不能到店里面补胎修复
9
锐界的bo音响是假的吗
10
谁知道北京1928的行情,准备提车
11
这车糟心啊,出保就各种问题
12
2020款325li怎么听歌啊?
13
蓝牙音乐光断怎么回事你们有这种情况吗?
14
各位换过防冻液的 要几升
15
奇骏智联尊享和尊享纪念款差了什么配置?
16
威霆哪都是加价吗?
17
宝马X5 40i 前轮胎和后轮胎的气压标准值是多少?
18
关于空调滤芯的问题
19
轮胎鼓包能不能要求质保
20
去4s做个例行保养工时费多少啊?
21
21款四驱豪华汉兰达 自带倒车影像车载摄像头不清晰咋办
22
新车磨合期多少公里算完毕
23
胎压显示 怎查看?
24
开了二年的轩逸竟然漏油了,这属于什么情况
25
雨刮胶条需要清洗保养吗
26
卡宴空调问题
27
倒车溜车问题
28
请问天籁轮毂是哪个牌子代工的?
29
迎宾踏板??
30
求教,x2怎么用u盘放视频啊
31
现在卡宴3.0的提车大家都加价多少?
32
19款探岳有没有颗粒捕捉器?
33
迈腾新车800多公里有问题
34
汽车空调系统管道是用什么清洗好
35
济南有没有专门改氛围灯的
36
汽车油路 燃油系统需要保养清洗吗
37
领动225 45 r17推荐轮胎有哪些 多少一只?
38
天热了,各位空调够用吗?
39
燃油宝有没有用的,新车要不要加?
40
【用车小知识】请问的排气管生锈是正常的吗?
41
秦dmi中控可以换鸿蒙系统吗
42
马上定车了,坐标重庆。325li耀夜 价格怎么样
43
询问长沙有没改装CHR自动空调的地方
44
关于雨刮器喷水泵的问题
45
这车哪个颜色最好看
46
锐界要涨价?
47
问问大家伙,这车2.5两驱的,市区开百公里几个油啊
48
金华地区glc260豪华现在基本都优惠多少?有最近定车的吗?
49
雅阁几月份出新款
50
安徽境内最近有没有打算提A6的团购会不会便宜点
51
混动如果电池废了,能当2.0自吸车开吗?
52
20款出厂时的机油是什么型号
53
沈阳最近有没有提车的
54
21款怎么设置行车自动落锁啊?
55
副驾驶的屏幕放电影声音可以用蓝牙耳机独立开吗?
56
漯河2豪什么价格落地
57
咨询车衣的问题
58
cs75plus远程启=长按遥控启动?给要买车的朋友提个醒
59
远程启动怎么用?
60
首保机油问题
61
顶配a5能刷大灯动态点亮吗
62
求15年之后四驱塞纳
63
你们有开空调异响吗?
64
全车一键升窗降窗问题
65
水箱被什么东西嘣了一个小坑
66
GL8陆地公务舱的油耗?
67
发现没有拿到保养手册
68
2018款~2020款3.0T在下大雨的时候天窗有没有漏水?
69
2018款~2020款途锐3.0T发动机有没有烧机油?
70
请问gl8刹车问题
71
不理解 ,为什么X3 原厂的脚垫 后排中间那一块没有?
72
5.27下线的,有没有已经提车了的?坐标重庆
73
上海325M 运动多少落地?明天去杀价格
74
宝马手动挡问题。
75
你们的缤智空调效果怎么样,开3档的情况下。
76
混动领先和豪华的音响是一样的吗
77
2019款55技术型用什么机油保养?
78
坐标深圳,车展延期,打算7月车展入手A6L,有没有小伙伴?
79
雷凌的安全座椅isofix接口在哪里里呀
80
凯美瑞和同价位车比都有哪些优缺点?
81
途岳加装360影像有改全息影像的吗?
82
2020款车身抖动问题,有没有解决了的大哥。
83
2021款智远运动,落地32.8万价格合适不?
84
新贴的车膜不让开车窗么?
85
汽车轮胎的气压标准是不是不一样呢?
86
宝马的喇叭按钮实在太重,能调节吗
87
发动机问题怎么解决,去修理店时发动机又正常了还查不出来什么问
88
请问:改变轮胎尺寸违法吗?
89
高尔夫7 1.6更换变速箱油后的问题
90
换下来的旧轮胎可以卖钱么?
91
这个膜价格怎么样
92
车顶加行李箱实用么?
93
轻度越野时后门有备胎会变形吗?
94
发动机皮带需要换吗
95
现在定车什么时候到?
96
难道奔奔国民版电车打开空调,车也会轻微抖?方向盘比较明显
97
智享可以换led灯嘛?,有没有功率,大神给个建议
98
各位大佬,请问吉利远景尊贵版有一键降窗功能吗?
99
要不要去给车漆面做个封釉呢?
100
如何判断烧机油