论坛首页 Java企业应用论坛

OperaMasks:勇敢者的新世界vs失落的记忆

浏览 29081 次
该帖已经被评为良好帖
作者 正文
   发表时间:2007-08-14  
当你只需要用到某个框架的有限功能时,你可能不需要深入其中的细节,而当你要的超出了框架支持的范围,那么你需要深入了解是在所难免的。而一般来说,框架缺强大,越抽象,那么你要需要花费的精力就更多。
JSF目前就是这样的情况。因为默认的UI组件不能满足项目的需要,就需要自己去扩充。而它的抽象机制,又使得扩展的门槛变的很高。当我们不能因为这个而否定了JSF的进步,组件化的web开发,带来的开发效率很功能的提升,是值的肯定和进一步发展的。
0 请登录后投票
   发表时间:2007-08-14  
JavaVision 写道
hax 写道
Javaeye论坛又谈到红岗同志了:http://www.iteye.com/topic/110484

我就去看了一下OperaMasks的网站,看到了红岗和张勇的《勇敢者的新世界》。以下是我的comment。

看了前面的历史回顾,写得不错,我本对后面的java web framework部分充满希望,不料,第4节居然就寥寥几句,java世界如此多的开源和商业的web framework,居然作者提都未提,只说了servlet/jsp和古老的struts,连ASP.NET的描述也比它多。难道作者认为所有的读者都还停留在2001年?我看读者没有“审美疲劳”,是作者“记忆疲劳”了。

我不相信红岗和张勇你们没有看到过java世界web framework的欣欣向荣,仅仅列入Apache的就有webworks、tapestry、turbine,还有cocoon。也不用说像gwt、echo、dwr、rife、zk等,哪一个不是名声在外,连你们熟知的Spring都有Spring MVC来插一杠子,你们居然全都视而不见?我只能认为你们是有意略过。这就是所谓“选择性失忆”。其他领域我们不说,但对于技术人员来说,这是很不应该的。

然而不谈这些java领域的web framework,不把OperaMasks放在这样一个大舞台上与其他java web framework做做比较,你们就自夸OperaMasks是“from earth to the moon, and ready for Mars”,号称“在技术和思想上傲视群雄”,这就更未免有些可笑了。有自信是好事,但是不幸的是,我们不止一次看到自信沦为自大狂妄甚或无知。OperaMasks是不是也会如此?我不知道,我也不希望如此。

下面谈谈技术。

说老实话,OperaMasks要自夸,首先你要证明JSF技术的先进性。作为一个有超过8年经验的web开发者,我对于Sun官方的JSF,甚至Java社区众多的MVC框架和一些新兴框架,都有着深深的疑虑。众多企图抹平网络编程与桌面编程的鸿沟,企图让开发者完全不用了解B/S原理,企图服务器端掌控一切的所谓“简化”,实际上真的是web开发的方向吗?B/S的请求响应机制,HTTP作为无状态协议等,都是web编程的固有约束(参见著名的REST论文),而以ASP.NET和JSF为代表的技术方向,实际上是在背离和打破这一约束的道路上越走越远。掩盖web编程“复杂性”的“简化”事实上能真正简化问题吗?实际上为了掩盖复杂性,也许底层付出了更大的复杂性的代价。许多框架的前提是,开发者不需要陷入这些plumbing,可能对于许多应用来说确实如此,但是一旦开发者被迫陷入必须处理一些设计者故意忽略的问题,他可能会发现陷入了巨大的困境中。微软的winforms和ASP.NET就是这样一种模式的典型代表,如果默认提供的那些控件够用,一切ok,但是如果你想稍作改变,extends一下,就会发现陷入大麻烦了,只好去买第三方控件。而你去看看那些第三方控件,全部是自行实现的,没有一个是从默认控件继承出来的。而这些第三方控件与默认控件是否能和平共存互相协调呢,很有可能不行,或者是会产生一些奇怪的bug,这全赖于第三方是否对其底层有足够的经验和能力。也就是说,表面的简单,换回的是开发者对于系统内部复杂性的理解力的丧失和自行扩展系统能力的严重下降,开发者对于第三方控件,最终也只能“以貌取人”,面对的风险是极大的。

JSF或者说OperaMasks会不会这样呢?这很难说,但是我不太乐观。因为我深知web客户端编程的复杂性,直接的客户端Ajax开发框架如prototype、dojo、YUI、ext等尚在努力,而服务器端连这一层都要掩盖。掩盖复杂性不是做不到,但是要把这多层复杂性以优雅的方式隐藏起来,并且还能在需要接触内部的时候,优雅的显露出来,简直是mission impossible,到目前为止,我还没有看到成功的。OperaMasks可以吗?存疑。这里有篇blog:http://canonical.iteye.com/blog/106766,对于JSF有这样的结论:“所有问题的一个集中体现就是增加一个新的JSF组件绝对不是一件平凡的事情。”

我们再看看Render kit。说起来只要更换一套render kit,就可以Ajax enabled。理论上似乎可行,但是这很可能只是具有一点Ajax的皮毛效果而已。实际上,开发者丧失了许多控制,特别是架构上的控制。比如JSF能支持REST架构么?不仅是现实中,在理论上就存在困境。因为JSF的语义可能就与REST架构不匹配。

当然对于偶尔做web开发,以java编程为主的开发者来说,JSF是有吸引力,特别对于企业内部应用来说,也有一定实用性的。但是以web开发为主,特别是做大规模web开发的人来说,应该对JSF抱有警惕。因为,这种类型的开发简化,很可能是以各个部分之间的紧耦合为代价的。

我再摘录一段文字:“同样,这个世界还存在许多Ajax Framework,譬如dojo。我们并不否认这些Ajax开发框架的优秀,但是,与它们的优点同样明显的局限之处是:dodo之类的Ajax开发框架仅仅解决了客户端的问题,对任何服务器端逻辑,dojo无能为力。J2EE是一个整体,它不仅需要解决表现层问题,也要解决数据层和逻辑层的问题,JSF 是JavaEE 5.0的一个重要组成部分,这就使得Apusic OperaMasks不仅可以创建丰富的客户端体验,同时可以和JavaEE应用服务器结合,从而建立强大的服务器端逻辑绑定。”

事实上,你们所认为的局限性恰恰可能是我们认为的优点。为什么JavaEE要解决所有问题呢?会不会所谓解决整体的方案,实际上会把问题搞砸呢(最著名的例子是EJB)?如果把JavaEE限制在数据层和逻辑层,以web services(无论SOAP还是Restful的形式)提供出来,而由纯浏览器端技术来解决表现层,是否可能是一种更好的方案呢?比如REST架构所体现出来的松耦合、语义透明性、极高的可伸缩性,纯浏览器端Ajax框架所体现出来的高交互的用户体验、灵活性、以及不依赖於服务器端的互操作性。

对于JSF的忧虑或质疑,不是我个人,而是社区内普遍的声音,像是 What's wrong with JSF 之类的讨论已经不稀奇了,宣称 JSF is dead 甚至 officially dead 也随处可见。国外如此,国内也是如此。

最后,我赞赏OpearMasks的GPL开源和社区路线(但现在要更换协议,令人有点担忧)。Native Ajax支持确实也略有新意。但是这还远远不够,目前为止,说OperaMasks思想和技术有什么领先处,实在无法令人信服。我所看到的只是令人遗憾的选择性失忆。

有机会的话你去看看, sap visual composer 或者webdynpro
更本不用你考虑web客户端啊, server端



标准组件,标准交互方式是SAP屏蔽web和server的前提
0 请登录后投票
   发表时间:2007-08-14  
JavaVision 写道
JJYAO 写道
JavaVision 写道
hax 写道
Javaeye论坛又谈到红岗同志了:http://www.iteye.com/topic/110484

我就去看了一下OperaMasks的网站,看到了红岗和张勇的《勇敢者的新世界》。以下是我的comment。

看了前面的历史回顾,写得不错,我本对后面的java web framework部分充满希望,不料,第4节居然就寥寥几句,java世界如此多的开源和商业的web framework,居然作者提都未提,只说了servlet/jsp和古老的struts,连ASP.NET的描述也比它多。难道作者认为所有的读者都还停留在2001年?我看读者没有“审美疲劳”,是作者“记忆疲劳”了。

我不相信红岗和张勇你们没有看到过java世界web framework的欣欣向荣,仅仅列入Apache的就有webworks、tapestry、turbine,还有cocoon。也不用说像gwt、echo、dwr、rife、zk等,哪一个不是名声在外,连你们熟知的Spring都有Spring MVC来插一杠子,你们居然全都视而不见?我只能认为你们是有意略过。这就是所谓“选择性失忆”。其他领域我们不说,但对于技术人员来说,这是很不应该的。

然而不谈这些java领域的web framework,不把OperaMasks放在这样一个大舞台上与其他java web framework做做比较,你们就自夸OperaMasks是“from earth to the moon, and ready for Mars”,号称“在技术和思想上傲视群雄”,这就更未免有些可笑了。有自信是好事,但是不幸的是,我们不止一次看到自信沦为自大狂妄甚或无知。OperaMasks是不是也会如此?我不知道,我也不希望如此。

下面谈谈技术。

说老实话,OperaMasks要自夸,首先你要证明JSF技术的先进性。作为一个有超过8年经验的web开发者,我对于Sun官方的JSF,甚至Java社区众多的MVC框架和一些新兴框架,都有着深深的疑虑。众多企图抹平网络编程与桌面编程的鸿沟,企图让开发者完全不用了解B/S原理,企图服务器端掌控一切的所谓“简化”,实际上真的是web开发的方向吗?B/S的请求响应机制,HTTP作为无状态协议等,都是web编程的固有约束(参见著名的REST论文),而以ASP.NET和JSF为代表的技术方向,实际上是在背离和打破这一约束的道路上越走越远。掩盖web编程“复杂性”的“简化”事实上能真正简化问题吗?实际上为了掩盖复杂性,也许底层付出了更大的复杂性的代价。许多框架的前提是,开发者不需要陷入这些plumbing,可能对于许多应用来说确实如此,但是一旦开发者被迫陷入必须处理一些设计者故意忽略的问题,他可能会发现陷入了巨大的困境中。微软的winforms和ASP.NET就是这样一种模式的典型代表,如果默认提供的那些控件够用,一切ok,但是如果你想稍作改变,extends一下,就会发现陷入大麻烦了,只好去买第三方控件。而你去看看那些第三方控件,全部是自行实现的,没有一个是从默认控件继承出来的。而这些第三方控件与默认控件是否能和平共存互相协调呢,很有可能不行,或者是会产生一些奇怪的bug,这全赖于第三方是否对其底层有足够的经验和能力。也就是说,表面的简单,换回的是开发者对于系统内部复杂性的理解力的丧失和自行扩展系统能力的严重下降,开发者对于第三方控件,最终也只能“以貌取人”,面对的风险是极大的。

JSF或者说OperaMasks会不会这样呢?这很难说,但是我不太乐观。因为我深知web客户端编程的复杂性,直接的客户端Ajax开发框架如prototype、dojo、YUI、ext等尚在努力,而服务器端连这一层都要掩盖。掩盖复杂性不是做不到,但是要把这多层复杂性以优雅的方式隐藏起来,并且还能在需要接触内部的时候,优雅的显露出来,简直是mission impossible,到目前为止,我还没有看到成功的。OperaMasks可以吗?存疑。这里有篇blog:http://canonical.iteye.com/blog/106766,对于JSF有这样的结论:“所有问题的一个集中体现就是增加一个新的JSF组件绝对不是一件平凡的事情。”

我们再看看Render kit。说起来只要更换一套render kit,就可以Ajax enabled。理论上似乎可行,但是这很可能只是具有一点Ajax的皮毛效果而已。实际上,开发者丧失了许多控制,特别是架构上的控制。比如JSF能支持REST架构么?不仅是现实中,在理论上就存在困境。因为JSF的语义可能就与REST架构不匹配。

当然对于偶尔做web开发,以java编程为主的开发者来说,JSF是有吸引力,特别对于企业内部应用来说,也有一定实用性的。但是以web开发为主,特别是做大规模web开发的人来说,应该对JSF抱有警惕。因为,这种类型的开发简化,很可能是以各个部分之间的紧耦合为代价的。

我再摘录一段文字:“同样,这个世界还存在许多Ajax Framework,譬如dojo。我们并不否认这些Ajax开发框架的优秀,但是,与它们的优点同样明显的局限之处是:dodo之类的Ajax开发框架仅仅解决了客户端的问题,对任何服务器端逻辑,dojo无能为力。J2EE是一个整体,它不仅需要解决表现层问题,也要解决数据层和逻辑层的问题,JSF 是JavaEE 5.0的一个重要组成部分,这就使得Apusic OperaMasks不仅可以创建丰富的客户端体验,同时可以和JavaEE应用服务器结合,从而建立强大的服务器端逻辑绑定。”

事实上,你们所认为的局限性恰恰可能是我们认为的优点。为什么JavaEE要解决所有问题呢?会不会所谓解决整体的方案,实际上会把问题搞砸呢(最著名的例子是EJB)?如果把JavaEE限制在数据层和逻辑层,以web services(无论SOAP还是Restful的形式)提供出来,而由纯浏览器端技术来解决表现层,是否可能是一种更好的方案呢?比如REST架构所体现出来的松耦合、语义透明性、极高的可伸缩性,纯浏览器端Ajax框架所体现出来的高交互的用户体验、灵活性、以及不依赖於服务器端的互操作性。

对于JSF的忧虑或质疑,不是我个人,而是社区内普遍的声音,像是 What's wrong with JSF 之类的讨论已经不稀奇了,宣称 JSF is dead 甚至 officially dead 也随处可见。国外如此,国内也是如此。

最后,我赞赏OpearMasks的GPL开源和社区路线(但现在要更换协议,令人有点担忧)。Native Ajax支持确实也略有新意。但是这还远远不够,目前为止,说OperaMasks思想和技术有什么领先处,实在无法令人信服。我所看到的只是令人遗憾的选择性失忆。

有机会的话你去看看, sap visual composer 或者webdynpro
更本不用你考虑web客户端啊, server端



标准组件,标准交互方式是SAP屏蔽web和server的前提

没看董


也就是说你也无法很容易的去改变SAP组件的显示方式,交互行为,它都帮你定死了。而LZ事实上想说明的是如何处理web复杂多变的需求
0 请登录后投票
   发表时间:2007-08-15  
多做几天Web的人都知道,复杂页面有框架不如无框架。
但这并不妨碍我们用框架解决90%的简单页面问题,至少可以提高规范性。

论坛上对JSF是一棍子打死的态度,这不可取。因为你们对JSF并不精通,以WebWork的思维定式来评判JSF,这相当不公道。每种技术都有其独特的技术思维,不深入实际使用是很难评判的。
JSF用了两年,大多数简单页面还是很容易做的,推荐初学者使用。

老袁的OperaMasks简单试用感觉还是很不错的,大家不要轻下决断。想深究的可以好好使用实践一下再评论不迟。
不服气的大可在你们热爱的框架上也扩展一套出来公布到开源社区,也让大家评判一下如何?
0 请登录后投票
   发表时间:2007-08-15  
每一件事情,都是有重有轻,为了达到一定的目的,付出了对于另一方面沉痛的代价.
asp.net/Jsf 是想开发者拖一个控件就完事,是想开发者容易开发,它付出了"绑定"的代价.
其它类似的框架它要成为王道,结果是一大堆的配置,它付出了"复杂"的代价.
开发什么样需求的系统,用合适的武器.
lgx522: 总是关注你的发言,jdon javaeye
0 请登录后投票
   发表时间:2007-08-20  
很多人用都没有用到jsf,在这里发表评论,有意义吗?
0 请登录后投票
   发表时间:2007-08-21  
LZ 的这句话
"但是如果你想稍作改变,extends一下,就会发现陷入大麻烦了,只好去买第三方控件。而你去看看那些第三方控件,全部是自行实现的,没有一个是从默认控件继承出来的。"

值得商榷,建议你多熟悉熟悉ASP.net WebControl 或者Web Components。
0 请登录后投票
   发表时间:2007-08-22  
to poko:
官方站上已有说明,要用tomcat6。

JSF的确是在用Swing的方式做Web,目前已经解决了很多基础问题,这是应该肯定的。
太复杂的页面问题,其实主要是企业内部应用,这时候真不如用JApplet或者干脆JFrame。
0 请登录后投票
   发表时间:2007-08-23  
OperaMasks客户端用的就是extjs,只是封装成了jsf
0 请登录后投票
   发表时间:2007-08-24  
weiqingfei 写道
当初就对asp.net的winforms深恶痛绝,所以看到java社区搞了一个什么jsf,就更没什么好印象了.

我觉得asp.net还是不错的,当然前提是配合VS.NET.

我不知道是不是JSF的组件模型本身的缺陷,为什么JSF出现好多年了,可是JSF的开发工具还都跟玩具一样的.做个复杂点的HelloWorld还行.一遇到复杂的需求就很难用了.

也许问题不是出在JSF上,而是出在J2EE上.J2EE的复杂度太高了使得JSF的复杂度降不下来.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics