ria big bang = {flash/air/flex .vs. html5}_chriswang
2010年09月05日
RIA BIG BANG = {Flash/Air/Flex .VS. HTML5}
---
这是一篇探讨关于下一代基于互联网应用程序(Rich Internet Application,下面简称RIA)的文章,虽然这一概念早已不是什么新鲜话题,但也不能表明就目前看RIA发展的很好,或者说RIA已经成为主流。不过有一点很明确,RIA正成为一种趋势,基于操作系统级别的应用程序正处于艰难转型中。
介绍GUI和CLS
------------
关于图形用户界面(Graphics User Interface,下面简称GUI):
回答GUI是什么其实很容易:我们开机之后看到的一切都是GUI,没有GUI电脑只是漆黑一片+一大堆命令行。GUI的发展大概有三十年了,1981年施乐的实验室中诞生了第一个视窗,之后纷纷被 苹果,微软,IBM等公司模仿。GUI是现代操作系统的重要组成部分。操作系统的GUI一定基于一套成熟、强大的组件库系统。
关于组件库系统(Components Lib System,下面简称CLS),CLS并不是一个正式概念,很多人都明白,或许有很多叫法,也有人叫他部件工具箱(widget toolkits)。CLS应该是SDK的核心子集。CLS应该是GUI的开发基础,CLS面向开发者,GUI面向终端用户。这有点像吊车和楼房的关系。典型的CLS包括 MS-MFC、QT 、Java的 AWT/SWING/SWT 等等。
CLS是一个庞大的系统工程,其内部每一个组件都类似一个“活物”,它维护自己的生命周期,并对外界和内部组件进行感知。举一个例子:在一个应用程序中,界面上有100个组件,包括,表格,图表,按钮,输入框,树等。这些组件大体要维护自己的生命周期包括:初始化,运行期,销毁,这三个过程。组件允许被嵌套、布局,当外部组件大小或者位置等状态被调整,他将传递给自己内部的附属组件进行相应的改变。当然组件也允许与外界环境传递消息。当然,真正强大的CLS还还不只包括这些,它应支持更复杂的应用,例如:画图程序,自定义图表,等等。
WEB-Based GUI&CLS 大战
----------------------
WEB-Based GUI&CLS是指基于WEB的GUI和CLS,它独立于操作系统,并跨浏览器。
很多人都相信RIA会成为未来的应用程序的主流,但事实上,RIA发展的并不理想,SAAS似乎也营养不良。原因是,我们很少有一套真正成熟的且可以运行在所有浏览器的GUI&CLS。
为了真正的RIA,业界前仆后继的尝试+创新。首先看到的是SUN,sun的applet在那个年代看上去相当前卫,几乎所有的RIA特性都能满足。但由于开发方式和界面的原因至今没能发展起来。Mozilla社区也有自己的尝试,但他的应用只能运行在FireFox中,失去了跨浏览器的特性。另外,传统的基于JS/Ajax的CLS实际上更不能承担重任,比如:某些应用,需要画图,这些JS/AJAX做不到。最重要的是,JS/Ajax每次都要把资源加载到本地,这让富客户端富的有点慢。基于JS/Ajax的RIA只是业界的一个尝试,终有一天它将变的非主流。微软也意识到这个问题了,他全力推出了silverlight,但是几乎做的是和Adobe一模一样的事,凭借雄厚的实力微软也分到了一杯羹。
在RIA领域,Adobe占据着95%以上的浏览器份额,成熟、强大的GUI/CLS已经把竞争对手远远的甩在了后面。事实上Adobe通过Flash在这块市场已经经营了十余年,推出Air/Flex已经有6年时间。提到RIA目前还没有哪家公司能够与Adobe竞争。Adobe已经越来越被推上了风口浪尖。
一个超级垄断者诞生了,新的问题接踵而来。Adobe是一家公司,他的Flex是必源的,专利技术为一家持有,看来一个时髦的想法是,GUI&CLS不仅要跨浏览器,还需要跨越任何一家商业公司。因此人们看到了HTML5。
HTML5,作为业界的标准,在2007年被W3C组织所接纳。这就意味着,任何一家公司使用HTML5都不会带来法律上的专利纠纷。在HTML5中,有一种最为激动人心的标准叫Canvas(绘图)。Canvas就像一个舞台,你可以做游戏,你也可以在上面画画,当然,也可以开发一套属于自己的 GUI&CLS。这是一个巨大的挑战,毕竟Adobe的flash/air/flex 平台已经经营了十多年。目前还没有在新闻上看到哪家公司在GUI&CLS上有所计划。不过我留意到,大名鼎鼎的ExtJS已经开始行动,他们推出Sencha Touch产品是基于HTML5并运行在手机上的CLS,这是他们的一个很好的切入点。可以预见到的是,HTML5将为RIA注入巨大的活力。可以肯定的是,有一大批IT公司正在HTML5上-埋头苦干。
在Flex问题上,首先揭竿而起的是苹果的乔布斯,乔布斯宣布IPHONE/IPAD不会支持Flex,未来会大力开发HTML5。微软前阵子也宣布支持HTML5。这点Google也是相当明确。但号称不作恶的google还是决定在Android2.2 平台上支持Adobe。
这就引申出一个有趣的现象,Flex不仅可以跨越任何浏览器,还能跨越移动设备。随着目前Tablets/Andorid的发迹,Flex是否也能借着这股东风。成为第一个能够一次编写,跨越所有PC、MAC和主流Tablets的 GUI&CLS 呢?这站在Adobe的角度是一个巨大的挑战。站在开发者角度也是一个挑战。要知道Tablets是触摸屏幕,没有鼠标,屏幕大小也是不固定的。
RIA BIG BANG
------------
前些天一个同事告诉我,BIG BANG是指大爆炸。RIA BIG BANG是要说:基于互联网的应用程序大量涌现。但前提是需要一个时间点和一些特定的条件,是一个量变到质变的过程。“WEB-Based GUI&CLS 大战”会为RIA BIG BANG带来一个可能性,只要竞争足够激烈,发展足够成熟,就会触发走向质变。随着Flex和Flex的竞争者的成熟,我们已经看到越来越多的优秀的RIA程序在出现。随着HTML5的加入,这种趋势变得越来越明显并逐渐呈加速。另外 RIA的大量应用也会为SAAS和云计算打开局面,那将是一个脱离操作系统的真正的互联网时代。