Adobe AIR、Microsoft WPF和Mozilla Firefox三分天下

未来,Adobe AIR、Microsoft WPF和Mozilla Firefox将会“三分天下”;它们甚至会在用户的计算机中长期共存,同时为各种应用提供运行平台。

这是我对未来RIA应用趋势的看法。关于作出这一结论的理由,我想先抛开具体技术体系不谈,从自己作为一名普通用户(而不是开发人员,更非创业者)对互联网这个行业的期望说起。

1、感性(玩具为主的需求:闲聊、灌水、异性交往)到理性(工具为主的需求:高效率、更稳定、更安全、更丰富、更有现实意义)的需求转变前期

第一次接触互联网是97年。那年去武汉电信开通了拨号上网业务,拿到一个@public.wh.hb.cn的邮箱。虽然看起来很“笨重”而且还没有Web登录界面,但却是很少人能拥有的东西。这个邮箱也成为了我在互联网上最初的身份标识。

那时没有QQ,也没有百度,更别提国外的Google了,即便上了网,获取信息的渠道也非常有限:除了“武汉热线”,我不知道还有什么网站可以上。“命令与征服”的官方网站westwood.com是我第一个访问的国外网站:非常简陋的页面,没什么内容,更别提交互。

后来,有了中学论坛和QQ,更多的需求就是与人交流,更准确地说,是与人交往。一个在保守家庭接受应试教育十几年的孩子,加上本性内向的童年生活,让我觉得在互联网上与他人(尤其是异性)交流是一件如此愉悦的事情。无论如何,我可以肯定在那个年代,学生用户中99%的人都是冲着找异性聊天去的。在这样一个两性话题被如此禁锢的文化氛围中,互联网满足了数以万计人的本能需求:异性社交。然而,中国人毕竟以保守为主,于是大家都“曲线救国”,其实想跟异性讨个近乎,却要绕一大圈天文地理,那是一个闲聊泛滥的时代。也是造就“QQ神话”的时代。

随着信息的进一步开放,竞争的进一步激烈,除了一部分被网络游戏蚕食掉灵魂外,越来越多的人停止了闲聊。我认为,中国的互联网已经不满足于这样一个雏形,即将进入新的时代,那个时代的标志是MSN“趁虚而入”,高调地宣扬自己“白领专用”,这是一个多么明显的推广技巧,却让MSN被无数人奉为“白领身份”的象征。然而无论如何,放弃闲聊而冷静地思考如何利用互联网为自己创造真实价值是一件非常有意义也非常有意思的事情。人们之间交流话题也不再是“你多大了,你家在哪”这样的内容了。

然而,跑在浏览器里的单调内容,让上网效率非常低下。常常一上午泡在网上却没干什么事。就在这个时候,开始出现了搜索引擎(北大的天网)和分类社区(例如校园BBS、行业BBS),人们检索信息的速度更快了。

随着互联网的普及,尤其随着客户端应用(C/S)与浏览器端应用(B/S)相比之下的“麻烦和笨重”,越来越多基于浏览器技术的Web应用开始出现。当C++程序员还在嘲笑那些改人家HTML代码的“浮躁的计算机初学者”连TCP/IP协议是什么都搞不清楚的时候,Web Developer(Web Designer)这个团体正在悄悄地形成。当.com风暴将真金白银带给互联网从业人员的时候,那些传统软件开发人员傻眼了。虽然之后的互联网行业遇到了泡沫遭受了重创,但我认为那并非一件坏事:一方面,老用户开始仔细思考互联网产品究竟能为自己带来什么;另一方面,大洪水的洗礼让行业中许多粗糙产品逐渐消亡。又适逢电信利用ADSL疯狂地扩张宽带接入点,更多的人们开始上网,这些非计算机类专业人士的涌入,让互联网彻底有了活力!原来那些只有“专业人士”才能理解的“表单”、“菜单”、“按钮”在大众面前显得未免过于唐突。普通网民更喜欢动画、图形、影视这些多媒体的展现方式。

互联网已由一个技术平台悄悄转变为媒体。遗憾的是,许多人不愿意承认这一点。而且,有越来越多的专家开始指责互联网对年轻人的影响。其实这种指责中所包含的许多问题,是只有互联网本身才可以解决的。RSS和SNS类产品的出现,让人们可以花比之前更短的时间完成同样复杂的任务。而在我看来,未来的互联网一定是要让人们在最短的时间里离开互联网回到线下。这一点,Google是伟大的,它们一直信守类似的理念:让用户在最短的时间内找到想要的信息,然后离开Google。那些靠欺诈点击来欺骗PV和眼球的二流新闻站、下载站如果想在互联网的发展中生存下来,长远之计显然是去切实为用户提供便利。

于是,我们有了DiggFlickr、Delicious、Netvibes、Wikipedia、YoutubeWordPress等等这些完全免费但又令人无比振奋的服务。无论是什么行业的人,都能从中获益。

总结:这个阶段,B/S蓬勃发展,仿佛一夜之间,到处都是“网站制作”的需求;即便是泡沫之后,Web2.0仍在不断提醒人们,B/S架构的重要性和“商业前景”。而依靠传统C/S业务发大财的Tencent,则非常及时地拿下了“qq.com”这个域名,实在是非常成功的战略决策。

2、技术平台的发展

然而,这些仅仅基于浏览器的应用在大众面前终究是低效的:并不是不来自产品设计人员创意的干涸,而是源自浏览器本身。例如我有一段视频要上传到Youtube,还得点击“浏览”,然后点击“确定”,如果我传到一半停电了,就会前功尽弃。更可怕的是,如果我有100张图片要上传到Flickr,我必须点一百次“浏览”、“确定”……

当用户需要“更快、更稳定、更丰富”的服务时,仅凭现在的IE6、Firefox2显然不够:单调乏味的界面、相互的不兼容性、标准的争议、渲染能力的瓶颈、种种安全性限制导致对本地宝贵资源的无能为力:例如,需要保存数据到本地、需要在网络连接断开后不会导致任何数据丢失。

“更快更稳更丰富”的需求必然在未来更加强烈,于是,AdobeMicrosoft和Mozilla开始提供各自的解决方案,而我(个人)将这种类型的应用称为“基于互联网技术的客户端富展现应用”(姑且叫做“Rich Internet Application on Desktop” – “RIA-D”吧):与普通的Web应用相比较,它的功能更加强大,但又无需C++、Delphi、Java这些传统而复杂的开发技术介入,只需利用现有的Web技术进行“组合”再调用各类运行平台提供的API即可。

它并不是的C++或者Delphi写出来的桌面软件,而是通过Web技术向桌面过渡的一种轻量应用程序。往往可以以核心的Web技术为开发基石,例如XHTML1,JavaScript1,CSS2,ActionScript2/3甚至未来的XHTML2,HTML5等等……

下面,我简单分享一下我对这“三分天下”的三家的看法:

  1. Adobe AIR
    利用Macromedia当年FlashPlayer积累下的绝对优势来向外“辐射”AIR应用:一方面,RIA-D产品能做到无缝安装,体验流畅;另一方面,开发者资源是Adobe最大的优势:Web Developer(HTMLCSSAJAX等)和ActionScript Developer的结合是一股强大的势力,不容忽视。想到这里,我不禁回想起当年Macromedia被收购时,曾有一位Adobe的高管表示它们买的就是Flash。我觉得更可以说,他们买的是FlashPlayer这个在大众计算机上极强的渗透力和Macromedia对开发者、设计师极强的社区粘度(这一点,国内知名WPF设计师Allan也有提到)。
    总结优势:极大的FlashPlayer覆盖率,即便是初次安装Adobe AIR,也能做到“无缝”的感觉:用户不会被强硬的“下载”过程所干扰。此外,绝大多数设计师都是Flash、PhotoShop的忠实用户,我们都知道,让设计师改变使用习惯比让程序员要困难得多,这恐怕也是微软头痛的地方:你招一个不用Adobe Flash做动画,不用Adobe Photoshop做设计的设计师恐怕会比较困难。
  2. Microsoft WPF
    微软是一部巨大的商业机器。他们似乎永远都不缺钱和赚钱的方法。这一部赚钱机器投入到RIA-D应用,利用本身的平台优势进行“辐射”是非常迅猛的。在水木清华的WebGeek版看到一组数据表明,在微软与一些互联网/传媒巨头(NBC、AOL、Nokia、Baidu、Tencent、DoubleClick等)进行合作的大背景下,每天装机量已经达到150万次!
    总结优势:强大的商业机器,强大的资金支持以及度天独厚的平台支撑。毕竟现在Windows操作系统还是主流中的主流。你可以主观地讨厌它,但你永远不能忽略它。
  3. Mozilla Firefox(3及后续版本)
    Mozilla?没错,就是做Firefox的那个Mozilla!
    Mozilla的背后是开源社区的支持,或者说是一个逐渐成长的生态系统。令微软更头疼的,这一群对IE恨之入骨的Web Geek在Web 2.0舆论导向中的作用毫不逊色于各类机构媒体(比如在Digg和Browse Happy,可以看到不同背景的人对IE表示“极大的失望”)。今年3月,AOL正式宣布了Netscape死亡,这也许加速了所有对IE有情绪的人更加坚定地加入到“Mozilla Firefox阵营”。现在把Mozilla Firefox和Adobe AIR、Microsoft WPF相比也许还有些“奇怪”,但我认为他们之间功能的重复竞争是迟早要爆发的:Firefox作为一款独立开源的浏览器,在Web和桌面之间的平衡位置非常难得,再加上没有垄断问题所带来的法律麻烦。一些简单的产品肯定是比Adobe AIR和WPF有更快速的“抵达率”的。说了这么多,来一个具体的例子也许大家会有点感觉:比如TwitterFox(基于Firefox) 和Twhirl(基于Adobe AIR)之间的关系,就颇有点这个意思。
    总结优势:忠实、甚至“病态忠实”的使用者。他们对一切非HTML、JavaScript的展现怀有偏见。于是,开源社区的支持,以及极端意识形态者的舆论导向,再加上本身作为一款浏览器平台,同样装在用户的电脑里,Firefox想要自己干点什么出来,比FlashPlayer还是方便百倍的。

后附:观察国内的情况,Firefox情况并不像美国、印度那么乐观。百度贴吧中的许多网友已经把“火狐”认定为十恶不赦的流氓软件,而中国的“开源社区”更是只有去年王开源冲上Bill Gates的讲台呐喊给大多数人留下了一点印象(且不论好坏)。在中国,大多数人上网还是去满足感性(或者生理)需求:聊天、看小说、泡妞。做这些事情,Firefox比IE没有什么太大的优势。相反,其安装、上手成本倒成了最大的壁垒。附一组数据作证,去年到今年我的Blog(仅含www.awflasher.com数据)访问者中浏览器的分布情况如下:

  1. 89.38% – Internet Explorer 1,733,472
  2. 9.58% – Firefox 185,826
  3. 0.56% – Opera 10,833
  4. 0.21% – Safari 3,985

而这些访问者中,来自美国的浏览器分布情况如下:

  1. IE 14057
  2. Firefox 6908
  3. Opera 155

可以看到在美国用户中,Firefox较之IE的优势是非常明显的。

PS:请任何看到我将中国数据和美国数据对比就开口大骂的无素质人士不要在我这个“崇洋媚外”的Blog上浪费时间。

蓝色理想经典论坛开设RIA专区

因为时间的原因,一直以来没有去Blueidea,今天去了之后,发现收到一条消息,说是把我曾经写过的一些AS3教程转到了“新版面”。结果过去一看,发现多了一个“RIA设计与应用”专区,下属四个版面:Flash 8 及之前版本Flash CS3 及 AS3silverlight 专版Director 专栏

蓝色理想经典论坛不愧是国内Web开发的先行社区,包括之前及时推出前台制作与脚本专栏WEB标准化专栏用户体验综合版这些板块,很多之前不为重视的领域:web前端开发、用户体验、用户交互设计都被提到了关注点上。

感谢蓝色理想,在中国互联网如此浮躁不堪的大局之中,为我们打来了如此融洽、干净的讨论氛围。

创建基于Flash技术弹性布局的Web应用程序

转载请保留出处:http://www.awflasher.com/blog/archives/822

在James O’Reilly出看到《Creating Liquid GUIs with Flash》一文,颇有感慨。其实很早我就考虑用Stage.onResize来实现动态布局的应用程序设计了,只不过一直没有系统地考虑过如何设计一些细节。James给出的类固然很强大,但是也觉得有点儿复杂,就简化了一下。

我把基本的功能封装成了一个“Liquid” 类,配以静态方法和静态属性,一来我觉得一个应用程序基本上都是在_root级进行模块划分,另一方面也算是为了和“Stage”类“遥相呼应”。再者,这里写的太复杂我想也会增加阅读的难度,毕竟我是想简述一个设计思想。最完美的解决方案我认为是模仿XHTML/CSS那样,任何MC都可以有自己的top、padding这种属性。但目前看来要用ActionScript写一套这个太麻烦了。等Apollo吧,反正快出来了。

OK,言归正传,首先简述一下Flash的内置类:Stage。Stage类有一些静态属性,其中最重要的就是align、scaleMode以及width和height,这四个属性配合onResize事件广播,就能完美地部署应用程序界面了。其原理就是,当swf在渲染层的尺寸改变的时候,Stage类会广播一个“onResize”事件,只要一个对象具有onResize方法,或者一个MovieClip具有onResize函数;更简单地,当前时间轴有一个函数onResize,这个方法、函数就会执行。而通过函数体中对Stage.width, Stage.height的引用,就能针对性地定位MovieClip了。值得一提的是,需要预先将align和scaleMode两个属性的值分别设置成“TL”和“noScale”后,应用程序就不会因为外界swf的拉伸而变形,而且基准中心永远在左上角,即左上角的坐标永远是(0,0),这对于我们定位其他资源是非常有意义的。

我将这些逻辑封装成Liquid类,来完成一些基本的设置。在时间轴上,调用一次Liquid的_init方法,让align和scaleMode预设置为以上提到的“TL”和“noScale”,然后将Stage的listner指向Liquid类的另一个静态方法onResize;另一方面,有addMC方法来保存所有需要绝对定位的MovieClip,开发者传入MovieClip的实例引用和一个绝对定位描述对象,并将这个描述对象最为这个MovieClip的一个实例属性,就能将这个“预定位置了的”MovieClip加入Liquid类的一个监听对象集合。

而在onResize中,去遍历这个集合,能得到MovieClip的实例指向和它的位置描述,这样每次外界舞台尺寸变化的时候,就可以重新按照预定的位置描述来分配位置了。

这里公布的Liquid类,只能算作抛砖引玉,可以针对诸如“边距”一类的属性(margin)再做一些扩展,当然,还是期待Apollo能轻松实现这些定位(基于CSS描述的MovieClip,不知道是不是YY了一点儿)。此外,Flex2是否有相应的package,由于我没有深入接触Flex,不得而知,如果有现有的package,拿过来直接用也不错。

Liquid类源码: Continue reading “创建基于Flash技术弹性布局的Web应用程序”

转载蓝色专访 与 Adobe 面对面

专访-与 Adobe 面对面 – 出处 蓝色理想 原文- http://www.blueidea.com/news/soft/2006/3852.asp

我的个人总结如下:
1、Flex要成为Adobe的重点产品(对我而言中性)
2、Fireworks是否能够存活并不取决于Adobe(对我而言是好消息)
3、Adobe太高估国内的互联网行业了(对我们而言是坏消息)

2006 年7月25日,在 位于国贸中心的Adobe 公司会议室里,Adobe公司亚太区市场总监Mark Phibbs先生接受了蓝色理想网站与程序员杂志两家技术媒体的专访。

为了这次难得的和Adobe面对面访谈,论坛里事先专门收集了大家的问题,我们整理了一下,大致分为三类,一类是对特定产品感兴趣的,希望了解Adobe对于这些产品会采取什么样的策略?一类是关心Adobe的产品价格的,希望了解Adobe在中国市场是否会采取不同的价格策略?还有一类就是关心Adobe在中国会有什么样的营销举措来强化和用户群体的沟通?我想把蓝色理想社区中用户的这些关注传递给Adobe公司,也要把 Adobe公司的一些理念和想法客观地反馈给关心Adobe的用户。

Mark Phibbs先生作为Adobe公司亚太区市场总监,在IT行业拥有10多年的资深从业经验,现在领导着Adobe公司在亚太地区市场发展战略,全面负责拓展Adobe产品在传统创意产业,以及互联网应用产品在企业级市场的应用。采访伊始,我们尚未开口提问,Mark却首先向我们抛出了一个问题:“RIA 在中国是不是一个热点话题,业内是怎么看待RIA的呢?”看来RIA确实是Adobe关注的一个中心,于是采访便从RIA这个话题开始了。
Continue reading “转载蓝色专访 与 Adobe 面对面”

准备写一套新Flash涂鸦系统并开源

目前工作压力挺大,但是Flash项目仍然不够刺激。

为了给以后的复杂项目作铺垫并让某人服我~准备抽写一套新涂鸦系统。不用纯2.0也不用3.0。还是用我擅长的1.0+Functions。其实用什么都是次要的,关键是算法。我看到过很多写纯2.0的垃圾作品。效率将高于原来给56的涂鸦系统。由于商业原因,我也正好换个算法。利用cachAsBitmap提高效率,onPress还是得保留……采用onPress配合onMouseMove节省效率

届时将开源核心部分

数据存储将采用“绘图包元”的概念,一个“绘图包元”即一个对象(Object)。

已经写好了对应的Array->String 和 String->Array部分:
(参见下面的函数$join, $split分别对应join、split

function $join(obj:Object, str1:String, str2:String):String
{
var _s:String = "";
for (var prop in obj)
{
_s += prop + str1 + obj$[$prop$]$ + str2;
}
return _s;
}
var myObj:Object = new Object();
myObj._a = "aw";
myObj._b = "awflasher.com";
myObj._c = "myawflasher.com";
var j = ($join(myObj, ":",";"));
function $split(str:String, str1:String, str2:String):Object
{
var _o:Object = {};
var _to:Array = str.split(str2);
for (var prop in _to) { var _ta:Array = _to[prop].split(str1); _o[_ta[0]] = _ta[1]; } return _o; } m = $split(j, ":", ";"); for (var p in m) { trace("prop: "+p+" "+m[p]); }

关于Flash涂鸦

最近很多人问我涂鸦相关的东西。确实,一年前,我曾经参与了56涂鸦的制作。并独立地完成了Flash客户端开发。不过现在代码都没有了,而且我也一年没有做过类似的项目了。

其实我在五一武汉博客聚会的时候也同帝国的Thor谈到过涂鸦的相关话题。Thor说他并不看好当前的各种涂鸦应用。原因是Flash的若干限制阻碍了一个真正手写板涂鸦高手所能发挥的水平。尤其是笔触功能,现在最好的Flash涂鸦(azure作品)也不可能达到Painter那种水平。我理解Thor对技术的完美追求,但我同样也认为,Flash涂鸦目前还是占到其网络涂鸦应用的绝对优势的地位。因为JavaApplet的涂鸦系统笨重而且非常难以安装。

我在56做的涂鸦可能是国内最早的涂鸦商业项目之一(当时应该只有国内flash届的前辈newfish率领的flashinn.com在做)。之前80s团队、KingLong、闪鹰也只做过,但都没有能实现商业项目整合。当然,我并不是“自吹自擂”,我更应该感谢80s团队、KingLong、闪鹰所做的杰出工作。但我却是从这个项目中收获了很多。要不是他们完成的作品和无私的帮助,我肯定不可能“独立”完成56涂鸦客户端。

Flash涂鸦最重要的是什么,当然是用户体验。我个人认为Flash涂鸦本身就是一个用户体验很强的产品。因此在制作、规划涂鸦客户端用户体验的时候,我们更需要“锦上添花”的功能,而非“雪中送炭”的功能。什么是锦上添花,什么又是雪中送炭呢。个人以为,充分发挥Flash本身潜能的功能,比如贴图印章、图层选择、任意变形。而“雪中送炭”则并非通常所说的雪中送炭。这里我觉得文本编辑就是一个典型的“雪中送炭”。首先,Flash对文本的支持本身就特别弱智,其次,涂鸦本身的风格就和输入的正规文本不符合。现在加一个渲染、可编辑性很差的文本功整合到涂鸦系统中, Continue reading “关于Flash涂鸦”

理性思考Flash与Ajax相关问题[原创]

此文写于购《交互设计之路-让高科技产品回归人性》、《Ajax in Action》两书之后。 – 转载请保留出处
http://www.awflasher.com/blog/archives/503

我实在是不愿冠以这样一个标题,但危机已经来临。之前(2005-04-28-时隔一年)我曾经翻译过国外某blog上的文章和评论:
http://www.awflasher.com/blog/archives/216
该文荣幸得到了Adobe中国的7yue的推荐。现在回首再看那时的争论,呵呵,有些不寒而栗,那时Ajax不过是DHTML的一个新名词罢了,看看今天……

作为一个纯粹的产品创作者(比如产品经理)或者开发人员(比如交互式设计工程师、原型开发工程师)而言,这么说似乎显得不近理性,甚至可以成为被上级辞退的一条理由。但作为一个从Flash中受益,与Flash共同成长的Flash的用户,我不得不为Flash本身感到深深的担忧。

Flash固然是工具,但我毕竟不是一个冷血的商人,使用它,我感受到了乐趣。之前有很多朋友分析、对比过Flash和它的竞争对手,尤其最近Luar两篇文章《2006-Flash的未来未有来》「從Flash走到AJAX--使用者經驗與開發者經驗的二三事」講義下載更是把Flash的位置推及到悬崖边缘。相比已经投身Ajax的Luar,我也想发表一些自己的观点,当然,我无论是从经验,还是技术,都无法与Luar相提并论,但我争取理智地得出每一个结论。
Continue reading “理性思考Flash与Ajax相关问题[原创]”

[原创]Flash投票系统(Updated@0309)

熬夜到2点,终于完工了。

-Updated@060309
·增加了边界判断
·增加了不计结果投票
·优化了代码结构(以免日后开源被大家贻笑大方)
·优化导航条
·支持限制重复投票功能
·动态加载图形
·暂时不支持浏览大图
·由于前后台均由我一人在领导的压迫下一夜完成,所以整个作品比较垃圾,望大家理解,呵呵

附:Flash+ASP代码 开源 点此下载
对于Flash与外埠交互和MovieClipLoader的使用都有涉及:)

注意,是个轻量级的case:

·不支持管理
·不支持多问题投票

地址 – http://www.awflasher.com/byhhvote

Flash做的操作系统

http://www.ifizzle.com/ifizzlepb.html – 模仿Mac ! 太牛了!

http://www.pc2n.com – 朋友做的PC2N(Personal Computer to Network),还不错。不过我觉得应叫做“富互联网操作系统”(RIOS)比较好……这位朋友不但有技术,更难能可贵的是在这么早就看中了这个趋势,确实不容易。

keso关于WebOS的讨论:
http://blog.donews.com/keso/archive/2006/03/22/779907.aspx

keso的blog的价值,不光在于其文章,更在于其后之评论,特别是反面观点,比如:
http://spaces.msn.com/enterprisebeing/blog/cns!1D3811D0695B6887!149.entry?_c11_blogpart_blogpart=blogview&_c=blogpart#permalink

[酷站+原创瞎掰]全世界最长的网站+awDIY-RIA

@系统已经搞定,明天去见毕设小组成员。希望导师不要对我再一次失望,我已经很令她不满了。
@已经到武汉了。导师还没见,系统也挂了。多谢各位的评论,等我系统好了立即更新 PS:我前天晚上写代码的时候确实有蚊子:)此外,某人居然破解我的swf,哼哼~

要回武汉了,心情激动!在某blog(昏,忘了,知道得赶紧告诉我-_-)那里看到了这个网站
除了优秀,我还能说什么呢?
但是,我觉得要是配上Flash,就是完美主义
于是自己DIY做了一个,我顶着广州凶悍的蚊子的轮番轰炸;冒着被导师骂我不好好准备项目还自己瞎掰的危险,花了1个小时完成的一个小Flash-RIA作品,绝对不可错过哦;)

单击显示

longestwebsite.swf

相比HTML浏览的方式,我的优点: CPU耗用小、流畅、用户体验好。当然,版权和创意我沾不上边:)

你也可以加入他们,继续完成这幅大作!

@2.28Updated
+增加导航栏
+去掉了可能产生的锯齿缝隙