理清几个RIA的概念及技术的选择 (AIR,WPF,JAVA,FLEX,SLIVERLIGHT)

转帖自:http://blog.csdn.net/david_lv/archive/2008/03/05/2149377.aspx

 

首先申明:我不是adobe雇佣的枪手,我也从不认识adobe的人。我只是一名被C/S和B/S长期困扰希望寻找一套解决方案的人。

昨天去参加了adobe AIR 发布会

adobe是业界著名的客户端展现工具和展现设计工具 提供商。

展现工具:PDF、FLASH。展现设计工具:photoshop、Dreamwaver、FLASH。

很多人都疑问AIR有什么用。昨天在会场也有同学提出了这个问题。既然有了AJAX 纯的JS的客户端表现组件包,如最近刚获得金牛奖的ZK组件包,那为何要有AIR?

我给大家解释解释。大家都能看到现在的趋势:互联网软件在向客户端融合,客户端在向互联网融合。

互联网企业发源于WEB世界,那么它要延伸互联网,必须要基于现在自己的优势和根。JS技术,这种根植于网络世界的技术就是最理想的选择。使用惯了WEB应用软件的用户,对于本地安装一个软件,本地软件那样的操作习惯就感到很奇怪。

而对于习惯了使用本地软件的用户,现在开始有了互联网跨出局域网的业务需求了,怎么办?一种办法当然是给他们另外开发一套B/S企业管理软件,但他们怎么使用都不顺手。

于是AIR产生。让他们能满足互联网处理,又能像本地软件一样操作。

又有客官问了,听过微软也推出了一种客户端跨互联网处理的技术,叫WPF和WCF。微软是客户端的霸主,而且微软的开发工具也是一流的,adobe既不熟悉开发工具这行当,也没有客户端优势,微软在OS层面做点手脚,就像当年给netscape下点药做点限制一样,AIR就没前途了。

但是,但是。这个世界总有但是。

要知道,做企业管理软件应用,很重要的就是数据安全。要把自己的数据和业务处理放到公网上,就有担忧。但是企业发展必须跨互联网,有需求啊。那怎么办?用微软的?太不安全了。于是挑选了JAVA。但JAVA一直雄霸于服务器端,客户端JAVA也没有经验啊。从早期的 Applet,到Swing,都以失败告终。不能让JAVA的服务器端配合WPF的客户端吧?于是AIR出场了。

adobe也很聪明,知道微软这个长年想扩展到互联网却屡屡受挫的困兽,必然拼了老命也要推自己的WPF和WCF技术,这是微软未来的命啊。想在这个霸主的肩膀上吃肉,是比登天难。于是祭出微软最害怕的一招:开源、免费、基于开放技术标准、跨平台。

adobe不擅长开发工具的开发,那就不开发。况且这个世界上除了微软世界的visual studio工具外,微软的对立阵营就有最开放的eclipse。eclipse已经不仅仅是一个JAVA的开发IDE,现在Ruby、PHP、C++、 Python都在它上面有插件。于是adobe也把自己插在上面。跟着程序员大潮走,让程序员使用自己最熟悉的IDE开发AIR。

adobe一直擅长客户端表现,所以adobe也没有必要提供一个从服务器到客户端一整套技术方案。说白了,AIR 就是一个和AJAX组件包一个层次的解决方案。主要用于客户端表现。这点非常重要。许多同学没有看清这一点,和DELPHI比,和JAVA比,和.net 比。其实AIR就专注客户端表现。你的业务层完全可以用PHP、JAVA、C#来写。再说了,AIR技术,内在其实就是HTML+JAVAScript,只不过改进了一些,换了个名字,叫MXML和ActionScript。微软的WPF技术,也是这两个技术组成。大家都是一路子。

PDF抓住了PC时代,FLASH抓住了浏览器时代,AIR是要抓住浏览器和PC融合的时代。这也是adobe的命根,所以两家公司都拼了命。微软有其强大的现实客户和研究开发中心和营销手段,adobe则采用了最开放最联盟来对抗,让微软一家公司之力来对抗全球开放的程序员。

WPF仅限于微软平台,虽然sliverlight号称以后也要垮MAC和LINUX平台。但我说的比较是AIR和WPF,而非FLEX和Sliverlight这两种技术。

我对FLEX和Sliverlight这两种技术一直心存怀疑。他们到底是给什么用户用的呢?习惯于浏览器的用户?人家有AJAX组件包啊,优秀开源的N多,商业的也N多。习惯于本地运行软件的用户?人家有AIR和WPF这两种技术啊。

FLEX和Sliverlight这两种技术产生,我来解释一下我自己的观点。

adobe的AIR还没有炼成。FLASH是adobe现在的优势。要想走到目的地,FLASH必须是自己的跳板,于是FLEX必须作为过渡。

而微软呢?VISTA本来就是微软最寄予希望的操作系统,原生的.net framework 3.0,而且全部用.net重写,一流的面向service的操作系统,圆了当年微软COM之梦。而且.net framework 3.0最主要的技术WPF、WCF,还有一个夫死胎中的WF,其实都是很有未来前瞻的技术,但由于技术难度太大,当然也由于太多人看透了微软在互联网战略的陌生和迟疑和旧有EXE技术思想,所以都跑到了纯正的互联网公司,给VISTA形成了难产。微软希望能无缝且毫无体验差异的整合互联网和本地。但是这个过程太漫长了。眼看着adobe利用FLASH做跳板,以占领自己未来想占领的位置,自己能不能到达目的地还不好说,于是在急匆匆中推出了 sliverlight。其实微软本来没有sliverlight研究计划,希望借助VISTA一举掀开未来大幕,但VISTA不争气,没掀好,于是必须应急。

所以,奉劝开发惯了网站的程序员,继续拿起你们的AJAX,因为你们不理解人们为什么要用AIR。

对于开发惯了EXE的程序员,继续使用AIR或WPF来开发你们的下一代产品,别想着用FLEX。习惯用微软技术的就用WPF,习惯用非微软技术的,就选择AIR。就这么简单。

我给大家列了一个对比列表,大家可以理解这个新技术和过去技术的相似和关联。

AIR runtime=.net framework=JVM

AIR=WPF=JAVA Application

FLEX=Sliverlight=JAVA Applet

至于Google Gears,是互联网向桌面融合的产物,而我们今天讨论的是桌面向互联网融合。虽然Google Gears、JAVA JSF、Adobe AIR/FLEX、微软WPF/Sliverlight都是RIA的解决方案。但都是各自从各自的优势出发发展的技术方案

最后结尾总结关键几句:

1 AIR是给习惯开发EXE程序员准备的非微软技术的互联网解决方案。习惯微软技术的请离开,习惯网站的请离开

2 AIR工作在表现层。AIR只是一个客户端表现,和AJAX是一样的。都是HTML+JAVASCIRPT。不要奢望它能做各种业务处理和运算。你的业务可以包装成webservice,也可以是PHP或JSP或asp.net页面,调用方式可以是webservice,可以是httpservice,可以是remoting。这样你的业务层就可以和表现层AIR交流数据了

3 AIR IDE只是HTML+AVACRIPT设计和调试工具,所以你也别奢望AIR IDE能象JAVA和C#的IDE环境那样强大。你过去怎么设计和调试HTML+JAVASCRIPT,那么你现在仍然保持那种心态。

 4 AIR不是FLASH。他们是两种不同的应用目的和技术发展方向。不要用FLASH开发企业管理软件,也不要用AIR开发多媒体。虽然能,但不擅长(就如你拿C来开发WEB)。AIR不需要运行在浏览器中,不需要使用FLASH容器。AIR有自己的容器和运行环境。AIR和你的EXE是一样的安装和执行。

5AIR和WPF都处于不成熟期,可以作项目,但不要把宝押在他们上面做下一代产品线(预计下下版应该可以进行企业下一代产品线开发,一般都是软件3个版本后才强壮稳定起来,按照竞争的激烈程度,这个第三个正式版本时间会在明年的上半年)。不过你也不要等待他们成熟后再做再研究,这样的等待就如同2001年等待JAVA成熟一样。现在JAVA是成熟了,但是你还有机会么?

6不要怀疑AIR和WPF是不是未来。业界早有共识,这就是未来。不要在GOOGLE WEBOS和客户端OS之间选择来选择去,如果你是网站开发人员,安心研究你的GOOGLE RIA技术。不要怀疑是跟微软还是跟adobe。如果你一直在微软的技术圈子中行走,那么你安心用你的WPF好了,都是未来。

7有许多人问起来了SEO在AIR和FLEX上的缺陷。说slivelight支持SEO和搜索友好。我想说的一句是:开发企业管理软件,怕的就是搜索,怕的就是企业数据被搜索引擎搜索到。不能搜索到才好呢

8AIR为过去的EXE程序员提供了自动版本检测和自动升级的API,这是让C/S程序员非常兴奋的一件事。回想当年,客户端版本不一致,出了不少怪异的事情。AIR也提供了离线后暂时保存数据到本地内嵌在AIR runtime中的sqlite(操作和平常SQL一样),继续操作软件,连线后同步数据。OK

9 你如果没有开发过MVC架构,没有用过COM多层开发,那么你不会明白业务层和表现层的分工和通讯的。你会一直想弄清楚怎么在AIR中写SQL语句或 JAVA语句。你也一直会想在servlet中写JAVASCRIPT和HTML代码。你还处在浆糊代码阶段,建议给自己的代码技术升升级。

想问我为什么关注AIR吗?

因为我一直战斗在行业管理软件的开发上。我对于开发一套C/S,一套B/S,这样极耗费开发成本开发时间和维护成本的开发方式烦透了,要让两者操作习惯和功能都保持一致,难。如果有了BUG,两个产品是两个开发团队,BUG都出在不同的地方,分别修改。让一个公司维护两套人马两个产品,在中国大部分都是小软件作坊的现状下,哪个都做不好。不如做一个既是C/S又是B/S的软件。

那是多么美好的事情啊。

 

你可能感兴趣的:(java)