HTML让我越来越郁闷,说实话,对于用html做web应用开发,本人已经觉得很累了!无穷的浏览器兼容问题,CSS与JS在不同环境下的不同表现,这些就够让人郁闷的!更因为,HTML做为一门文本标记语言,其发明的初衷只是用来格式化文本而已,而我们在这种变态的大环境下发明了用HTML表现客户端应用的N种方法,并且能够将其玩得转的高人还为此洋洋自得!而我要说,这不是王道!
曾经有段时间对CSS的hack技术感到无比牛X,在网上看了N多技术资料,并以能写出*html{}为荣。但当我在项目里写下越来越多的*html招数时,才发现原来这些让人如此厌倦!我们为这个混乱的web世界付出了太多努力,可是我们的努力却什么都没有换回!
如果看看这个世界,你会发现,无论何一种语言,都会提供健壮的语法,一致的实现。从C到vb,从java到汇编,当程序出中出现莫名其妙的错误的时候,程序员们无一不是对这语言或是编译器的公司破口大骂,或者转投别的语言或编译器。于是,迫于市场带来的压力,最终问题得到解决!而浏览器中的情况却不一而致,基本上构成web世界的三要素,HTML/CSS/JavaScript都每个浏览器里都能表现得千差万别!兄弟们,这是谁的错?你可曾遇到过你写的VB程序在计算1+1时在window98和window XP下一个等于2一个等于3的情况?为何明明一件很简单的事,却被市场的原因搞得千差万别?
如果没有netspace公司的liveScript,会有今天的ajax的辉煌吗?在web构成的世界里,每一项创新都可能把你推到世界的顶峰,这里实在有太多机会!所以商业公司都才如此的急于发布具有新功能的浏览器。开放的web世界接受一切,开放带了了web世界的强大,也带来了web世界的混乱!
W3C组织是如此“强而有力”,它制定了无数标准,可是浏览器制造商显然对此视若无睹!每一个标准的制定都带给人们希望,可是,这似乎永远都只是希望而已,web从神坛走向现实,还有多久的路要走?现今为止,做一个能在多个平台下正常显示的web应用的最佳方式仍然是用无穷的垃圾代码来堆砌!(我承认可以用div+css做出垃圾代码很少的web应用来,但相对于传统C/S开发方式而言,在界面交互设计方面,显得成本高昂而且进度缓慢)
我是如此钟爱fireFox,它带给我无数美梦!我以为它能改变这世界,然而,我却忘了,B/S模式的开发环境在B的方向是由客户掌握的!程序员们枉想改变世界,可是手里却没能握有一支锋利的剑!IT经理们站在路口,目光茫然!然而firefox仍然值得人们尊敬!它在混乱世界里尤如一道光芒,虽然不足以点亮夜空,但足以给人方向!
不知道还有多少个夜晚得浪费在无穷的JS代码调试与CSS兼容测试里!为了一个简单的tab分页效果我们付出多少努力?一个简单的div居中居然要为ie和firefox各准备一句代码!美工与交互设计师们不想过上写CSS的日子!我们需要一个所见即所得的界面开发环境!而不是在PS里画好图再切片再一个个写进代码里面!而不是在firefox的标准与ie6的野蛮之间求生存!
希望之光终于出现了,AIR腾空出世!adobe的Apollo/flex、MS的WPF/silverLight、sun的javaFX,新世界里的三剑客向我们走来!三者之中,无论何一种方案,都能提供统一的实现方案,不用再为不同的浏览器准备不同的代码了!美工终于可以真正专注于美工,而交互设计师再也不用因为某些浏览器不支持某功能而放弃某种交互设计了,这真让人高兴!而在B/S架构的B方面,我们终于可以用一个插件下载提示框温柔的影响我们的用户了,虽然可能让我们一某些客户郁闷,但好处显然更多!而且用户付出的成本非常之小,至少大部分人会接受!
在未来的时间里,网站仍然会被HTML统治着(HTML的强大缘于世界上任何一种浏览器都能良好的支持它)!然而如果你需要一个强大的数据展示与交互工具,那么AIR是你的不二之选!而在基于B/S架构的富互联网/局域网应用方面,AIR方案是当之无愧的王者!快速的开发模式与超酷表现形式,在开发者与用户两方面,都将极大的讨好!千万别忘了,HTML只是一门不具备扩展能力的格式化数据的基本语言,它不具有任何表现复杂数据结构与高级艺术效果的能力!如果离开JS和CSS,它早已被淘汰!HTML发展到如今,它的潜力已被发掘殆尽!人们急于将各种应用搬上web平台,而AIR利剑来得正是时候!
然而风险继续存在!MS的WPF/silverLight仍然只能在MS的操作系统+IE组合中运行!这让人感觉又回到旧世纪!任何一位对用户负责任的开放者都应抵制这种野蛮的行径!别忘了,三支利剑中选哪一支来做为我们称手的武器,得听我们的!千万也别忘了那些为不同浏览器准备不同版本代码的日子。
如果你要问AIR带给我们的好处有哪些,那么我们可以罗列以下几点:
- 所见即所得的开发环境(不信你就玩玩flex)
告别浏览器兼容问题(它曾让我恶梦连连)
更多可靠而且酷的数据展现形式
分工更明确!美工真正只做美工,交互更能大展手脚
一场新的交互革命!(只有AIR横行之时,我们才可以真正坐下来,认真的谈一谈交互!)
最后一点,不用加班了!(我老板最喜欢这一点,因为加班是双倍工资呀!)
Ajax、FLex、Silverlight 和 JavaFx 在 RIA(Rich Internet Application)世界中扮演着主流角色。
下面来看一组关于这些技术的比较:
| AJAX | Flex | Silverlight | JavaFx |
客户端引擎 | 浏览器内置 | Flash Player | Silverlight | Java SE/ME |
程序语言 | JavaScript | ActionScript+MXML | XAML+JavaScript | JavaFx Script |
组件库 | 无 | 内置,强大 | 有限 | 依赖 Swing |
多媒体支持 | 无 | 支持高清视频,FLV 格式, 支持 MP3 和 AAC 音频 | 支持高清视频 WMV 格式 | 依赖 JMF,不支持高清 HD264 |
IDE | Eclipse 等 | Flex Builder | Visual Studio | NetBeans |
IDE 可视化编辑 | 无 | 有 | 无 | 无 |
哪一种技术更好?这个问题很难一概而论。事实上,其中若干技术的组合使用将会带来更好的效果。
什么是RIA 技术?
RIA:Rich Internet Application ,富网络应用,最近比较火热。我和一个做视频会议的朋友联系,问他在关注什么,告诉我在关注RIA。那么什么叫RIA富网络应用呢? 1.RIA的定义 RIA是Rich Internet Applications的缩写,翻译成中文为富因特网应用程序(Macromedia中文网站翻译为Rich Internet应用程序)。 传统网络程序的开发是基于页面的、服务器端数据传递的模式,把网络程序的表示层建立于HTML页面之上,而HTML是适合于文本的,传统的基于页面的系统已经渐渐不能满足网络浏览者的更高的、全方位的体验要求了,这就是被Macromedia公司称之为的“体验问题”("Experience Matters"),而富因特网应用程序(Rich Internet Applications,缩写为RIA)的出现也就是为了解决这个问题。RIA(Rich Internet Application,富互联网应用系统)技术允许我们在因特网上以一种象使用Web一样简单的方式来部署富客户端程序。这是一个用户接口,它比用HTML能实现的接口更加健壮、反应更加灵敏和更具有令人感兴趣的可视化特性。无论将来RIA是否能够如人们所猜测的那样完全代替HTML应用系统,对于那些采用胖客户端技术运行复杂应用系统的机构来说,RIA确实提供了一种廉价的选择。 2. RIA的产生背景 基于HTML的应用程序之所以变得流行是由于应用系统的部署成本低、结构简单,且HTML易于学习和使用。很多用户和开发人员都乐于放弃由桌面计算机带来的用户界面改进,来实现对新数据和应用系统的快速访问。与丧失一些重要的UI功能相比,基于Web的方式所带来的好处要更大得多。 然而,某些应用系统并不完全适合采用HTML技术。复杂的应用系统可能要求多次提取网页来完成一项事务处理,在某些领域中,如医药和财务领域,这往往导致交互速度低得无法接受。让我考虑一个项目管理系统:我们可以将其实现为一个HTML应用系统,但是如果用户可以看到并且操作图表、进度表和各种层次结构,那么显然会工作得更好。 此外,虽然HTML开始走向简单,但是即使简单的交互活动也仍然需要用很多的脚本来完成。即使一个输入窗体经过仔细的布置和全面的脚本设计,它从浏览器所能发送的也仅仅是简单的"名字/值"对。如果一个HTML窗体能够以XML文档形式发送和接收更复杂的数据结构,那就好多了。 RIA利用相对健壮的客户端描述引擎,这个引擎能够提供内容密集、响应速度快和图形丰富的用户界面。除了提供一个具有各种控件(滑标、日期选择器、窗口、选项卡、微调控制器和标尺等)的界面之外,RIA一般还允许使用SVG(Scalable Vector Graphics,可伸缩向量图)或其他技术来随时构建图形。一些RIA技术甚至能够提供全活动的动画来对数据变化作出响应。 RIA的另一个好处在于,数据能够被缓存在客户端,从而可以实现一个比基于HTML的响应速度更快且数据往返于服务器的次数更少的用户界面。对于无线设备和需要偶尔连接的设备来说,将来的趋势肯定是向富客户端的方向发展,并且会逐渐远离基于文本的Web客户端。那些运行在膝上设备上的应用系统,可以被设计成以离线方式工作,或者至少当连接丢失的时候能基本上以离线的方式工作。 最开始的网页,都是html静态网页,浏览者只是看,内容有图片和文字,有超链接,相比书本而言强大百倍。但浏览者没法交互和反馈。后面脚本语言和CGI得到大量应用,就叫动态网页了。以.net,jsp,asp,php等技术为代表,结合css和数据库,ActiveX,Ajax,Flash等,使网页功能相当强大。 RIA技术,类似于单机版的应用程序,在很大程度上跳出了浏览器的限制,具有丰富美观的界面和交互能力,但它又是地地道道的网络程序,具有快速修改和部署的能力。它基于XMl,脚本语言和web service,可以产生丰富而强大的应用。在没有RIA的时代,要制作强大的界面,单机版应用程序很费力气,学过VC6.0的就知道,做个界面不容易。做花哨一点的界面更是费九牛二虎之力。网络上做界面相对容易,采用dreamweaver等工具布局,画出什么就是什么。但网络上的程序又不够强大,或受到某些安全限制。flash网页美观,功能也强。但用其做网页工作量还是挺大。 RIA技术,基于XML,界面上采用Flash等技术,用ActionScript脚本做动态响应。编写时和编写普通网页差不多,但最终界面却玄的多,会生成flash可以播放执行的swf文件。这代表了以后网络界面技术的方向。 现在,两家主要的RIA技术力量,一是Adobe的Flex,另一家是微软的silver light,银光。另外 javaFX 也支持,但java程序的单调界面没法和flash比,所以java爱好者认为基于java技术的RIA是用于工业应用的。Adobe是一家做图片和视频处理的超级厂商,其代表产品Adobe Photoshop和Adobe PDF reader成为人们离不开的产品。收购macromedia后,强强联合,网络图像处理的力量得到空前加强。基于 macromedia Flash的Flex,实力强劲,已经发布到4.0版。Flex基于eclipse开发,现在已经开源。但其企业版还是要600多美元。 silver light 是基于.net的,是.net的一个插件,支持跨平台和跨浏览器。支持高清视频(蓝光DVD,HD-DVD)播放。支持多种脚本语言如ruby,python,javascript,c#等。它采用微软提供的visual studio和expression studio(类似flash用来生成矢量图形界面的) 来编写。但也可直接用文本编辑器来编写,可以生成矢量图形。