前言
2006年即将过去,这一年被广泛地看作是:在线投资新浪潮的一年;更新的web技术和技巧兴起和成长年;在采用web标准上增长年;从未这样采用web能量的新商务模式的兴起(和衰落)的一年。
从SitePoint和Ektron这两家组织提供的调查报告预览版中,其中的数据照射出在技术进化进程中的一丝亮光。大家不妨跟随作者一起放眼遥望一下亮光周围的风景,也许你会听到自己的惊呼,请加入到对“未来”的预言中吧!尝试一下网络对趋势的影响力!
关于SitePoint和Ektron进行的2006/2007 web开发现况调查
2006/2007 Web开发现状调查是在十年间致力于积极倡导和帮助web开发者、设计者和其它在线专业人员的SitePoint和Ektron共同进行的一项研究成果。
SitePoint是一家快速兴起的在线媒体公司和面向web专业市场(尤其在web开发和设计领域)的信息提供者。其网站:sitepoint.com,目前在全球web设计和开发>新闻和媒体分类的网站中排名列第一位,根据Alexa.com数据表明,其网站在全球排名位于前300名之内。Sitepoint.com的日访问量可与一些主流媒体集团的网站所匹敌。
SitePoint论坛具有超过135000名注册用户,其新闻每月到达50万份订阅。SitePoint公司具有遍布于174个国家的70000名客户、试用产品的注册用户高达620000名,具有五大收入来源:广告、赞助关系、基于内容的产品(包括在线和零售产品)、近来非常流行的视频订阅、分类列表和产业报告。
同样,Ektron有限公司成立于1998年,作为以CMS400.NET和eWebEditPro产品线为依托的web内容管理软件和web写作工具的技术和市场领导者,这些软件已经授权给千分之十的web专业人士,使他们更加高效地把web作为通讯和交互的有效平台。
SitePoint和Ektron两者之间成熟的合作关系以及他们对web专业人士社团的支持,导致了在2006年初的idea:衡量在这两个组织周边的web开发者和其他web从业人士这个大众群体,以便找出一个“时间快照”(snapshot in time)、量化web开发工具状况、技术、技巧和趋势。
在2006年6月15日至7月15日之间对5000名web从业人士进行了此项调查。我们相信这可能是有史以来最大规模的一次web开发者调查,这次调查的深刻意义之一就是反映当前现实状态和将要发生的变化。
Web标准的依从现状
CSS——轻舞飞扬的页面布局
图-1 采用CSS进行布局的分布图
评论:CSS布局不但对页面具有减肥的效果,而且对于统一风格、代码重用、浏览访问、打印颇有益处:
1.加快下载速度:
CSS现在比表格更快:因为浏览器在显示表格内容前读取它们两次,第一次完成它们的结构,第二次才确定它们的内容。
表格不能被部分地显示,直到整个表格被下载和渲染完成后才被显示出来。
通常,CSS代码量少于笨重的表格。
所有的布局代码都可以保存到一个外部CSS文件中,在用户的浏览器中仅被调用一次而后被缓存;而表格布局则必须在每个HTML文档中保存,并且在每次刷新时被重新下载。
使用CSS可以控制CSS项的下载顺序,这使在慢速的图片下载完成之前用户就可以阅读内容。
2.被更广泛地访问:
通过手持设备的浏览web用户数量正在与日俱增。在2008年PDA销售量将达到5千8百万(数据来源于eTForecast),世界三分之一的人口将拥有一台无线设备(数据来源于ClickZ)。而你可以编写专用于手持设备、额外的CSS文档——这个CSS文档内容可以取自以往的CSS文档。
有关内容可以参考:j2mepolish 的CSS for J2ME文档。
3.对搜索引擎更加友好:
搜索引擎在CSS驱动的页面中爬行要比在简单的HTML代码来得更容易。这样,搜索引擎可以对web页面进行更加有依据的猜测(比如:猜测页面的内容),所以使用CSS布局的web页面能够在搜索排行中拥有更高的排行。
有关内容可以参考:SE在线杂志。
4.打印友好:
当用户选择打印页面时,另一套可选的CSS文档可以被调用,这个文档可以规定格式、图片、隐藏导航、校正显示在打印版本中的页面内容。
验证HTML代码——多重浏览器标准的穿越者
图-2 应用web页面验证的分布图
评论:服从web标准将引领web站点走向成功,更友好地与搜索引擎“协作”、快速load页面、减轻Server负载、兼容众多浏览器、吸引更广泛的浏览量。
什么是HTML 验证(HTML validate)?
它是通过与标准HTML规则进行比较的方式,分析HTML文档、标记出错误和非标准代码的处理过程。Web页面使用HTML进行渲染,而HTML本身采用了HTML规范作为其规则和标准。
这里推荐两个权威的HTML验证在线服务:W3C的validator、WDG的validator。当然,在开发工具中的验证工具更不胜枚举:Dreamweaver内置验证器、Eclipse的WSVT等。
1.Web站点访问性:
验证HTML代码帮助你找出那些微小的不规范之处,从而防止它们妨碍搜索引擎爬虫或者浏览者。这样使你的站点获得更多的浏览者、更广泛的访问设备范围(手持设备、文本浏览器、搜索引擎等)。
2.对搜索引擎友好:
清晰、明快的代码可以使搜索引擎更快、更完整地页面中爬行。
3.更快速的装载:
如果你的页面包含了HTML错误,它将花费搜索引擎比较长的爬行时间,因此其排行位置也会变低。更加直观的是——如果你的页面在10秒内没有装载完毕,那么浏览者可能会离开。
4.减少服务器负载:
简明的代码不会像复杂的代码或者包含内嵌表格的代码那样让你的服务器负担加重。级联CSS将减少代码量,降低对web服务器空间的需要和对带宽的占有量、节省服务器的内存。
5.易于更新和维护站点:
无错的页面代码利于修改,这对于站点设计者来讲意味着节省时间和维护经费。
6.浏览器兼容性:
验证代码取保你的站点与当前的浏览器相兼容。既然我们无法预见未来的浏览器标准,那么验证代码就是把握未来浏览器标准的最佳方式。
7.更多的访问者:
保证了浏览器兼容性,也就赢得了大量的浏览者,从而获得更多的收益。
开发技术应用趋势
XP技术——潜力无限,业已成为技术热点
图-3 在web开发工作中进行实践的技术分布图
评论:OOP仍然是主流技术,尽管MVC占有不少的份额,但“用户体验才是产品的价值所在”这句话仍然得到了验证。无论任何技术理论(包括MVC、Ajax、RoR等),凡是能够高效地应用在快速开发、提高用户体验上的才是好技术。
Code review和Unit Testing都是极限编程(XP)中的概念,从图表中的比例来讲,让我感到欣慰:在开发技术中XP结对编程的方法得到了比较广泛的应用,希望国人也能更多的接受、应用它们。
什么是Code Review:在起始开发阶段对源代码语法检测,以期发现和修正错误、提高代码质量的活动,常称之为结对复查(peer review)。Code review经常可以发现和去除一些常见安全漏洞,比如格式化字符串攻击、竞争条件、缓冲区溢出,因此提升了软件的安全性。
什么是Unit Testing:单元测试是一种用来验证源代码的某个模块是否工作正常的活动。而每个测试实例都彼此独立;假对象(mock object)可以用于在隔离的环境下辅助测试某个模块。这样做目的在于把程序的每个部分分割开来、验证独立的部分是否正确。
采用结对编程可以在QA测试之前捕捉、修正错误,但不仅如此:
1.它使最终的错误内容下降到让人满意的程度,这源于采用持续的code review。
2.采用头脑风暴(brainstorm)和结对轮换(pair replay)使设计更加完善、代码长度更短。
3.依靠结对轮换团队解决问题更加迅速。
4.团队成员能够学习到关于系统和软件开发的更多知识。
5.项目结束时,多个团队成员能了解系统的每个部分。
6.成员在一起相互学习、谈话,提供了更好的信息流动和团队动力。
7.成员更加享受他们的工作,更加拥有成就感。
这种方式尤其适用于缺少人手或者短缺昂贵的专业测试系统和QA的开发团队。
工具流行趋势
Dreamweaver——web开发工具中的王者
图-4 web开发中采用的工具分布图
评论:DW能力十足,无论对于web设计者还是开发者来讲都是很顺手的工具,但其语法自动提示能力实在有限。而且对于开发者而言,DW的超强编辑能力也注定了它overkill的宿命,这也是Text Editor和它平分秋色的原因之一。
VS功能强大,但其受到微软语言的制肘,无法伸展开有力的上臂来拥抱各种开源语言。
这里我要遗憾地感叹一下Eclipse WTP,它提供的HTML 编辑器用上去还算可以,但相比之下相形见绌,不免有些鸡肋之嫌,还需要进一步完善:
1.Eclipse WTP的优点:
在同一个IDE中支持Java, javascript和ActionScript等多种语言。
“All In One”的发布模式是它易于安装。
概要视图(Outline View)对方法和变量进行很好的组织。
对javascript function提供了代码提示。
提供了对web页面的验证功能。
2.Eclipse WTP的缺点:
缺少本地或者在线文档,甚至连说明文件也没有,非常不利于初学者使用。
语言支持(比如ASP)有限,扩展能力弱。使之支持其它语言就必须手工添加,也许这是HTML编辑器的通病。
概要视图(Outline View)并不支持javascript的方法和类。
WTP没有提供良好的页面设计视图。
WTP对页面进行验证性能不佳。
Web开发技术流行趋势
PHP——高效、稳定的圣殿轻骑兵
图-5 web开发语言平台分布图
评论:很欣慰地看到作为“开源常青树”的PHP获得如此殊荣。由于PHP的高效、全能、强适应能力、强扩展能力,所以获得了众多开发者的青睐。
同时作为传统语言的ASP和JSP依然在势均力敌的博弈,而春风得意的后生Ruby可谓潜力无限,当然这也得益于RoR的流行。但是从Ruby占5.31%的比例来看,RoR还不是企业应用开发的主流。
PHP何以如此红火?
1.高效性:
基于C语言的特性已经使其具备了高效的潜质,再加上支持页面模板技术的smart引擎、提供代码重用能力的PEAR、可替代循环的正则表达式等,使其在服务器端执行效率得到了加强。
2.应用范围广:
服务端脚本——这是PHP的传统领域,也是最主要的目标领域;
命令行脚本——可以编写一段 PHP 脚本,并且不需要任何服务器或者浏览器来运行它;
桌面应用——编写可以利用PHP-GTK来编写桌面应用程序。
3.强适应能力:
使用PHP开发时不但可以自由地选择操作系统和web服务器,而且可以根据需要选择使用面对过程和面对对象,或者两者混和的方式来开发。
4.强扩展能力:
PHP 最强大最显著的特性之一,是它支持很大范围的数据库。
PHP 还支持利用诸如 LDAP、IMAP、SNMP、NNTP、POP3、HTTP、COM(Windows 环境)等不计其数的协议的服务。
而且它具有极其有效的文本处理特性,支持从 POSIX 扩展或者 Perl 正则表达式到 XML 文档解析。
如果将 PHP 用于电子商务领域,会发现其Cybercash、CyberMUT、VeriSign Payflow Pro等支付方式以及 MCVE 函数对于在线交易程序来说是非常有用的。
另外,eweek网站完成的《2006年10大应该学习语言》,也值得大家作为学习的参考:
1. PHP
2. C#
3. AJAX (Asynchronous javascript and XML)
4. javascript
5. Perl
6. C
7. Ruby and Ruby on Rails(RoR)
8. Java
9. Python
10. VB.Net (Visual Basic .Net)
聚合推动web运转的车轮
图-6 当前web应用项目的技术分布图
评论:由此可见,经过仅仅2、3年的发展,聚合技术已经撑起了web前进的舵盘,随之兴起的AJAX、javascript、Blog、Wiki、Podcast也依靠聚合技术传遍了世界每个角落。Flash虽然份额不小,但其也缓慢地转向客户端脚本的方向以进一步提高优雅的用户体验。
回到我前面的原理:“用户体验决定了技术发展方向,而不是理论。”,聚合技术的兴起必定带动客户端和服务端的技术提升。我相信未来几年web属于结构化blog和Feed网络:
结构化Blog(Structured Blog):
一种新兴的、实验性的Blog,它最终把信息传送到语义网(Semantic web)。尤其是它提供了自描述内容,这种自描述内容可以被轻松地植入到web站点或者Blog中,提供给Blog作者建立和聚合结构化信息(比如评论、事件、媒体)的工具。
在传统Blog记录和结构化Blog记录之间的不同之处——后者发布的内容是计算机可读取的格式,其它的聚合服务可以理解它们,使用它们来生产事件日历(calendars of events)、任务板(job boards)、书籍评论(book reviews)或者影视投票。当然,结构化Blog也遵循RSS和Atom标准。结构化Blog通常处理结构化的内容格式,比如微内容(microcontent)。
注:语义网(Semantic web):是在万维网上,通过放置计算机可处理的文档来进行信息交换最终建立一个全球媒介的项目。目前语义网在万维网协会Tim Berners-Lee先生的指导下,正通过使用标准、标记语言和相关的处理工具对web进行着扩展。
注:微内容(microcontent):微内容是一种以短小形式发布的信息,它的长度受到了话题长度的限定和软件的技术限制。
Feed网络(FeedMesh):
FeedMesh是一组用来建立“结对网络(peering network)”、完成对分散的web更新通知和内容发布的技术。采用web聚合的在线服务商,包括PubSub、Feedster、Technorati、Bloglines、Yahoo共同参加制定了一项共享weblog更新通知服务(“pings”时常见的一种更新通知服务方式)的标准。
它使blog作者和聚合发布者从中获益:更快速的内容发布、可靠的可升级的通知服务。而对于在线服务的客户来讲,好处则是带宽的节省和低延迟。
Ajax成为开发者未来一年的学习趋向
图-7 web开发者希望从web或者出版物获得技术的分布图
评论:从分布图来看,47%被调查的web开发者通过web或者出版物来希望获得更多的AJAX知识,而将近34%和29%的被调查者希望获得XHTML/CSS和PHP的web文章或者书籍。
本人认为:"Web2.0之所以如此精彩,这正是web聚合(syndication)作用的结果。Blog、Wiki都被广泛地应用在web写作领域,而Blog比Wiki更流行,真是由于其更加易于聚合、推广。聚合技术所依仗的便是RSS、Atom之类的标准,而这些标准的技术支持便是XHTML/CSS/XML,而AJAX为Blog、Wiki提供了完成优良的用户体验。"
在web业界的下一件重大事件将是什么?
图-8 在未来每个人都会在15分钟成为大明星?
不妨让我们了解一下SitePoint&Ektron调查报告中的大众观点,也许看过之后,你也想说说自己idea:
{
—“实时虚拟3D视图和站点导航,你的鼠标指针不仅可以在x、y轴上移动,而且还可以在网站的内部(z轴)移动。”
—“我想象不出下一件大事是什么,而在向标准靠拢的趋势下,利用有依据的技术和语义将帮助我们在资源之间建立更加紧密牢靠地关系。”
—“我认为我们将继续看到优雅性、功能性占有统治地位。我认为那些现在‘热’的东西将像时尚一样过去,只有真正有功能的、可访问的、具有市场的、有用的才会存在。”
—“你将不必为获取信息而搜索web。只要定义你想要的和收集这些东西所用的web就可以坐等其成了,比如:我作为一名消费者,定义了我想购买的一台显示器。这个信息将被潜在的商品提供商所发布或者收集。而他们会提供给我产品信息,使我轻松地购买他们的产品。”
—“以我的观点看,未来(web3.0时代?)会关注内容、非功能性。这个站点可以提供给访问者到达最深层内容的最轻松的访问。而其它任何网站,包括复制其它站点做法的跟风(copy-cat)站点将继续走老路。”
—“Fragrant网站采用XHTML2.5来驱动安装在手机和PDA的USB棒或者植入到SD卡中的信息素散发器。在数码相机上安装可捕捉味道的扩展卡,拍照的同时还捕捉到了味道,这难道不是为网络上的图片又增加了一个新特性吗?在看食物图片的同时,闻一下味道如何?然后在餐厅预定一下位置?哇,全新的平面+嗅觉广告!”
—“我相信现在网络连接的速度这么快,像video这样的东西可以应用在电子商务网站和服务网站。直接和你的顾客面对面地交流、赢得他们的信任,让他们知道你是谁。”
—“搜索引擎将代替web和web的内容!越来越多的搜索引擎和目录会保存web站点的内容,这样就没有人需要去真正的网站。”
—“在web领域的下一件大事是建立家族(或者继承)的门户(portal),家族成员或者继承人在那里一起建立一个家族站点。这些站点维护家族信息——以数字格式保存家族成员姓名、财产、相片等。这样,全球气候不会破坏或者抹去整个家族的记忆——它将被安全地保存在冗余服务器上,并供奉在‘家族拱顶’页面上。你将拥有关于自己家族和成员之间相互关系的巨大数据池。无论这个家族是否都居住在同一座城镇、州县或者同一个国家、甚至同一个星球上,通过照片和简介上的链接可以直接获得相关信息。很cool吧!另外,可建立一个收费的服务:通过发送的口腔采样药签(mouth swabs)来获得与之匹配的家族成员的DNA序列。并且保存这些信息用来进行DNA比对等不时之需…”
}
cleverpig的Idea:
1.XM传输协议取代传统的HTTP:“老旧的HTTP已经完全过时,它会被XMTP(eXtensible Markup Transport Protocol)所替代。这种XMTP是专为传输XML和聚合而设计,在数据传输上突破了HTTP的瓶颈,而且更加安全。”
2.浏览器厂商制定“XML序列化/反序列化”标准:主流的浏览器将在接收XML后进行解析,将XML反序列化为支持javascript或者其它浏览器脚本语言的Object,使client直接读取服务器push过来的数据,并将用户的请求序列化发送到服务器。
3.订阅模式将转变为“推送”模式:聚合程序不再是单调的周期性查询服务器,而是服务器上面维护一系列用户订阅列表,只要打开浏览器便可以及时看到自己的订阅信息,无论何时何地,具备浏览器和访问网络能力即可。并且这些消息会跟随服务器的update而被push到client,有效地保证了信息的及时性。建立上文提到的FeedMesh之上的聚合服务器,专门提供信息检索、订阅、推送,接收结构化Blog提交的新信息。
4.浏览器更加智能:不但应有设备范围被扩充到移动设备、电器,而且更加智能。比如可以通过设置电冰箱的购买策略,使其在食品放入时通过RFID扫描其条形码,记录过期时间,并制定提醒功能,而在库存量不足时在通过主人确认后自动发送给杂货店的订货单。