前言
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 サイトにアクセスする必要がなくなります。」 「ウェブの世界で次に大きなことは、家族 (または相続) ポータルの作成です。そこでは、家族のメンバーや相続人が集まって家族の Web サイトを作成し、家族の名前、財産、情報を保存する家族情報を管理します。この方法では、地球規模の気候によって家族全員の記憶が破壊されたり消去されたりすることはありません。記憶は冗長サーバーに安全に保存され、「家族保管庫」ページに保管されます。家族とメンバーの相互関係の巨大なデータ プール。家族が同じ町、州、国、さらには同じ地球に住んでいるかどうかにかかわらず、写真やプロフィールのリンクから直接関連情報を入手できるのは素晴らしいことです。口腔綿棒を送って一致する家族の DNA 配列を取得し、DNA 比較などの緊急事態に備えてこの情報を保存する有料サービスを確立することができます..."
}
Cleverpig のアイデア:
1. この種の XMTP は、XML と集約の送信用に特別に設計されており、データ送信における HTTP のボトルネックを突破し、より安全です。「
」2. ブラウザーのメーカー。 「XML シリアル化/逆シリアル化」を開発します。「標準」: 主流のブラウザーは、XML を受信した後、XML を解析し、JavaScript または他のブラウザー スクリプト言語をサポートするオブジェクトに XML を逆シリアル化し、クライアントがサーバーによってプッシュされたデータを直接読み取ることができるようにします。ユーザーのリクエストがサーバーに送信されるシーケンス。
3. サブスクリプション モデルは「プッシュ」モデルに変換されます。アグリゲーターはもはや単調な定期クエリ サーバーではなく、サーバー上で維持される一連のユーザー サブスクリプション リストであり、時間の経過とともに確認できるようになります。ブラウザが開いていれば、自分のサブスクリプション情報を得るには、ブラウザといつでもどこでもインターネットにアクセスできる機能があれば十分です。これらのメッセージはサーバーの更新後にクライアントにプッシュされるため、情報の適時性が効果的に確保されます。上記の FeedMesh 上に集約サーバーを構築し、特に情報の取得、購読、プッシュを提供し、構造化ブログによって送信された新しい情報を受け取ります。
4. ブラウザはよりインテリジェントになります。デバイス範囲をモバイル デバイスや電化製品に拡張するだけでなく、よりインテリジェントになる必要があります。たとえば、冷蔵庫に食品を入れるとRFIDでバーコードをスキャンし、賞味期限を記録し、在庫が少なくなったら自動的に通知するリマインダー機能を開発するなど、冷蔵庫の購入戦略を設定できます。オーナーの確認後に食料品店に注文します。