【程序思考】RIA 对于 java 在 web 开发领域是否是一个转机?

来源:互联网 发布:什么是网络事件营销 编辑:程序博客网 时间:2024/03/29 05:43
 

今天看了 dlee 在 csdn  发表的一篇文章  http://blog.csdn.net/mozilla/archive/2007/07/22/1702365.aspx  。 觉得很有意思。以前我在 javaeye 就看过他的很多文章, 很有见地。 最近他的很多言论都是围绕 rest 的, 把 rest 的地位抬的很高。 我个人倒是觉得 RIA  相对而言对于 web 开发更具革命性一些。

如果采用 RIA  开发网站,和传统 web 开发有两点很大的区别,一是:对于服务端 View 层的依赖就没有了, 二是: 不需要在 server 端保存 session  信息。 无论是 rails, 还是 php, python, java 的各种 web 框架,session 和 server view 都是必须的, 从上个世纪中期到现在10年多的时间里, web 的发展和 http 本身无状态的特点使得我们无法脱离这两点来开发网站, 几乎所有web 框架都会涉及到它们, 但是都会采用各自的方法来解决, 每个方案都没有本质的不同,却在形式上差别很大,服务端 view 技术可能是每个框架中最麻烦的部分。 REST 本身并没有改变这种开发现状,但是 RIA  却在试图打破这个局面。 一旦采用了 ria , 你会发现,各种框架其实在编写业务逻辑和服务方面(ORM 层, Router)并没有什么显著的不同,单从 Controller 和 Model方面考虑,脚本语言 web 框架还是有一定的敏捷优势的,但是 java 框架已经和它们相差不多了,但是 java 在纵向扩展性,执行效率,静态检查,组件等很多方面具备脚本语言所没有的优势。所以如果一旦未来的 java   web 框架简化到一定程度,java web 开发的优势就会显现出来,所以我个人感觉  RIA  的出现对于 java 可能是一个转机。 当然这要取决 RIA  的接受程度。 GWT 就是一个好的开端, 不过我更喜欢基于 flash  的解决方案。 成熟高效的 runtime, flash 插件庞大的市场占有率,跨平台,跨浏览器,Actionscript 已经发展到第三版, 优良的组件编程, 多媒体的支持。 所有这些似乎都预示着 flash ria 有着良好的前程,但是事实也不是这样的。对于一种新技术的采纳,并不是那么简单。 更多的人是在观望, flash ria 有学习成本,熟悉的人不多, 资料也少; 搜索引擎优化也是一个问题, 而且在开发效率上也不见的高(这的确需要实践一下)。

最近我打算开始研究一下 flex , 以前我总觉得 flex 是 Macromedia(adobe) 兜售的一种服务端技术,自从adobe 推出了 apollo 后,我觉得 flex 变成了一个开发客户端应用的平台。 http://pownce.com/ 网站上那个 apollo air 的小应用,让我看到了学习 flex 的必要。 本来 flex 是一个服务端应用技术, 现在 air 的出现, Adobe 又回到了客户端的老路上来了。 Macromedia,adobe 总是想把自己在桌面的优势发展到服务端,尽管推出了很多服务端产品,但是到了最后,它们又回归了客户端.

 dlee 在最后列举了几个从Java转到 Ruby有几个强有力的理由:(实际上这里他混淆了 rails 和 ruby)
1. Rails可以让单个开发者在开发效率方面接近自己能力的极限。我并不是一个完美架构的fans,热衷于不写一行代码,巨细无靡地分析各种架构优劣直到脑神经瘫痪。我热衷的是解决用户真正关心的问题,用技术改善他们的生活,与用户建立起良好的人际关系。
2. Rails框架对Ajax有更好的支持,通过使用RJS模板可以极大减轻一般情况下做Ajax开发的复杂性,提高开发的效率。
3. Rails框架对REST开发提供了最好的支持。REST在Web开发方面会越来越重要,全面支持REST就是未来所有语言Web开发框架发展的方向。
4. JRuby 1.0对Rails的支持已经很好,而且支持直接使用Java开发的资源,所以现在是从Java转到Ruby的一个适当的时机。

对于第一点: 我完全同意, 我一直认为面向解决方案,而不是面向编程语言,是一个开发人员应有的思路
对于第二点:正确, rails 的确简化了 ajax , 尽管我个人认为 ajax 只是一个过度的技术
对于第三点:部分认同,REST的确在Web开发方面会越来越重要,但是 Rails 是最早提供REST支持的框架,未必就是最好的,后来者居上的例子很多了,相信 java 在这方面还是有优势的。
对于第四点:Sun 支持 Jruby 只是吸引rails 开发人员将程序移植到 java 平台, 而不是反方向。 而且 jruby , jpython 等技术只是在集成上有优势, 对于 web 开发或者不打算将应用移植到 java 平台的人没什么吸引力。