??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲一线产品二线产品,亚洲精品中文字幕无码蜜桃,亚洲一区在线视频观看http://www.tkk7.com/yiqi801218/archive/2008/05/01/197668.htmlBlueSunshineBlueSunshineThu, 01 May 2008 11:57:00 GMThttp://www.tkk7.com/yiqi801218/archive/2008/05/01/197668.htmlhttp://www.tkk7.com/yiqi801218/comments/197668.htmlhttp://www.tkk7.com/yiqi801218/archive/2008/05/01/197668.html#Feedback0http://www.tkk7.com/yiqi801218/comments/commentRss/197668.htmlhttp://www.tkk7.com/yiqi801218/services/trackbacks/197668.html

Welcome, member!

<% } else { %>

Welcome, guest!

<% } %> 修正此类问题通常需要相当丰富的~程l验。尽通常?x)由十分_N页面布局和图形设计的设计人员来开发和l护 JSPQ但是同一面中的脚本~制元素出现问题Ӟ需要程序员的介入。这U状况将单个文g中代码的责Q分担l多人,因而得开发、调试和增强此类 JSP 面成ؓ(f)很麻?ch)的d。通过常用功能包装到定制标记库的标准集合中,JSTL ?JSP 作者可以减对~制脚本元素的需求,甚至可以不需要它们,q免了(jin)相关的维护成本? 回页? JSTL 1.0 JSTL 1.0 发布?2002 q?6 月,由四个定制标记库Q?core ?format ?xml ?sql Q和一寚w用标记库验证器Q?ScriptFreeTLV ?PermittedTaglibsTLV Q组成?core 标记库提供了(jin)定制操作Q通过限制?jin)作用域的变量管理数据,以?qing)执行面内容的P代和条g操作。它q提供了(jin)用来生成和操?URL 的标记。顾名思义Q?format 标记库定义了(jin)用来格式化数据(其是数字和日期Q的操作。它q支持用本地化资源束进?JSP 面的国际化?xml 库包含一些标讎ͼq些标记用来操作通过 XML 表示的数据,?sql 库定义了(jin)用来查询关系数据库的操作? 两个 JSTL 标记库验证器允许开发h员在?JSP 应用E序中强制用编码标准。可以配|?ScriptFreeTLV 验证器以?JSP 面中禁用各U类型的 JSP 脚本元素 ?scriptlet、表辑ּ和声明。类似地Q?PermittedTaglibsTLV 验证器可以用来限制可能由应用E序?JSP 面讉K的定制标记库集(包括 JSTL 标记库)(j)? 管 JSTL 最l将?x)成?J2EE q_的必需lgQ但目前只有数应用E序服务器包括它。JSTL 1.0 的参考实现可作ؓ(f) Apache 软g基金?x)(Apache Software FoundationQ的 Jakarta Taglibs 目Q请参阅 参考资料)(j)的一部分而获得。可以将该参考实C的定制标记库合ƈCQ何支?JSP 1.2 ?Servlet 2.3 规范的服务器Q以d?JSTL 的支持? 回页? 表达式语a ?JSP 1.2 中,可以使用?rn)态字W串或表辑ּQ如果允许的话)(j)指定 JSP 操作的属性。例如,在清?2 中,? 操作?name ?property 属性指定了(jin)?rn)态|而用表达式指定了(jin)?value 属性。这个操作的效果是将h参数的当前D予命名的 bean Ҏ(gu)。以q种形式使用的表辑ּ被称?h时属性|request-time attribute valueQ,q是构徏?JSP 规范中的用于动态指定属性值的唯一机制? 清单 2. 合ƈh时属性值的 JSP 操作 因ؓ(f)h时属性值是用表辑ּ指定的,所以它们往往有和其它脚本元素一L(fng)软gl护问题。因此,JSTL 定制标记支持另一U用于指定动态属性值的机制。可以用化的 表达式语aQELQ而不使用完整?JSP 表达式来指定 JSTL 操作的属性倹{EL 提供?jin)一些标识符、存取器和运符Q用来检索和操作ȝ?JSP 容器中的数据。EL 在某U程度上?EcmaScriptQ请参阅 参考资料)(j)?XML 路径语言QXML Path LanguageQXPathQؓ(f)基础Q因此页面设计h员和E序员都应该熟?zhn)它的语法。EL 擅长L对象?qing)其?gu),然后对它们执行简单操作;它不是编E语aQ甚至不是脚本编制语a。但是,?JSTL 标记一起用时Q它?yu)p使用单而又方便的符h表示复杂的行为。EL 表达式的格式是这L(fng)Q用元W号Q?Q定界,内容包括在花括号Q{}Q中Q如清单 3 所C? 清单 3. 说明 EL 表达式定界符?JSTL 操作 此外Q?zhn)可以多个表辑ּ与?rn)态文本组合在一起以通过字符串ƈ|来构造动态属性|如清?4 所C。单独的表达式由标识W、存取器、文字和q算W组成。标识符用来引用存储在数据中?j)中的数据对象。EL ?11 个保留标识符Q对应于 11 ?EL 隐式对象。假定所有其它标识符都引?限制?jin)作用域的变量。存取器用来(g)索对象的Ҏ(gu)或集合的元素。文字表C固定的??数字、字W、字W串、布?yu)(dng)型或空倹{运符允许Ҏ(gu)据和文字q行l合以及(qing)比较? 清单 4. l合?rn)态文本和多个 EL 表达式以指定动态属性? 回页? 限制?jin)作用域的变? JSP API 通过 操作允许?JSP 容器内的四个不同作用域中存储和检索数据。JSTL 通过提供用于指定和除去这些作用域中的对象的附加操作来扩展q一能力。此外,EL 提供这些对象作为限制了(jin)作用域的变量q行(g)索的内置支持。特别地QQ何出现在 EL 表达式中但不对应于Q?EL 隐式对象的标识符Q都被自动假定ؓ(f)引用存储在四?JSP 作用域的其中某个中的对象Q这四个作用域是Q? 面作用? h作用? ?x)话作用? 应用E序作用? (zhn)可能还记得Q只有在为特定请求处理页面期间才能检索存储在该页面作用域中的对象。如果对象是存储在请求作用域中的Q可以在处理所有参与处理某h的页面期间检索这些对象(譬如在对某个h的处理中遇到?jin)一个或多个 ? 操作Q。如果对象是存储在会(x)话作用域中的Q则在与 Web 应用E序的交互式?x)话期间Q可以由用户讉K的Q何页面检索它Q即Q直C该用户交互相兌?HttpSession 对象无效为止Q。可以由M用户从Q何页面访问存储在应用E序作用域中的对象,直到卸蝲 Web 应用E序本n为止Q通常是由于关?JSP 容器所_(d)(j)? 通过字W串映射为期望作用域中的对象来将对象存储到该作用域。然后,可以通过提供相同字符串来从该作用域检索该对象。在作用域的映射中查扑֭W串Qƈq回被映的对象。在 Servlet API 中,此cd象称为相应作用域?属性。但是,?EL 的上下文中,也将与属性相兌的字W串看作变量的名Uͼ该变量通过属性映的方式获得特定的倹{? ?EL 中,与隐式对象无兌的标识符被认为是存储在四?JSP 作用域中的名U对象。首先对面作用域检查是否存在这L(fng)标识W,其次对请求作用域、然后对?x)话作用域、最后对应用E序作用域依ơ进行这L(fng)(g)查,然后试该标识符的名U是否与存储在该作用域中的某个对象的名称匚w。第一个这L(fng)匚w作ؓ(f) EL 标识W的Dq回。通过q种Ҏ(gu)Q可以将 EL 标识W看作引用限制了(jin)作用域的变量? 从更技术的斚w来说Q没有映到隐式对象的标识符是用 PageContext 实例?findAttribute() Ҏ(gu)求值的Q该实例表示寚w面的处理Q在该页面上Q当前正在处理用于请求的表达式。标识符的名UC为参C递给q个Ҏ(gu)Q然后该Ҏ(gu)依次在四个作用域中搜索具有相同名U的属性。ƈ所扑ֈ的第一个匹配项作ؓ(f) findAttribute() Ҏ(gu)的D回。如果未在这四个作用域中扑ֈq样的属性,则返?null ? 最l,限制?jin)作用域的变量是四?JSP 作用域的属性,q些属性具有可以用?EL 标识W的名称。只要对限制?jin)作用域的变量赋予由字母数字l成的名Uͼ可以通过 JSP 中提供的用于讄属性的M机制来创建它们。这包括内置? 操作Q以?qing)?Servlet API 中的几个cd义的 setAttribute() Ҏ(gu)。此外,四个 JSTL 库中定义的许多定制标记本w就能够讄作ؓ(f)限制?jin)作用域的变量用的属性倹{? 回页? 隐式对象 ?1 中列Z(jin) 11 ?EL 隐式对象的标识符。不要将q些对象?JSP 隐式对象Q一共只有九(ji)个)(j)hQ其中只有一个对象是它们所共有的? ?1. EL 隐式对象 cd 标识W?描述 JSPpageContext PageContext 实例对应于当前页面的处理 作用域pageScope 与页面作用域属性的名称和值相兌?Map c? requestScope 与请求作用域属性的名称和值相兌?Map c? sessionScope 与会(x)话作用域属性的名称和值相兌?Map c? applicationScope 与应用程序作用域属性的名称和值相兌?Map c? h参数param 按名U存储请求参数的主要值的 Map c? paramValues 请求参数的所有g?String 数组存储?Map c? h头header 按名U存储请求头主要值的 Map c? headerValues 请求头的所有g?String 数组存储?Map c? Cookiecookie 按名U存储请求附带的 cookie ?Map c? 初始化参数initParam 按名U存?Web 应用E序上下文初始化参数?Map c? 管 JSP ?EL 隐式对象中只有一个公共对象( pageContext Q,但通过 EL 也可以访问其?JSP 隐式对象。原因是 pageContext 拥有讉K所有其它八?JSP 隐式对象的特性。实际上Q这是将它包括在 EL 隐式对象中的主要理由? 其余所?EL 隐式对象都是映射Q可以用来查扑֯应于名称的对象。前四个映射表示先前讨论的各U属性作用域。可以用它们来查扄定作用域中的标识W,而不用依赖于 EL 在缺省情况下使用的顺序查找过E? 接下来的四个映射用来获取h参数和请求头的倹{因?HTTP 协议允许h参数和请求头h多个|所以它们各有一Ҏ(gu)。每对中的第一个映返回请求参数或头的主要|通常是恰巧在实际h中首先指定的那个倹{每对中W二个映允许检索参数或头的所有倹{这些映中的键是参数或头的名称Q但q些值是 String 对象的数l,其中的每个元素都是单一参数值或头倹{? cookie 隐式对象提供?jin)对p求设|的 cookie 名称的访问。这个对象将所有与h相关联的 cookie 名称映射到表C那?cookie Ҏ(gu)的 Cookie 对象? 最后一?EL 隐式对象 initParam 是一个映,它储存与 Web 应用E序相关联的所有上下文的初始化参数的名U和倹{初始化参数是通过 web.xml 部v描述W文件指定的Q该文g位于应用E序?WEB-INF 目录中? 回页? 存取? 因ؓ(f) EL 标识W是作ؓ(f)隐式对象或限制了(jin)作用域的变量Q通过属性来实现Q解析的Q因此有必要它们{换成 Java 对象。EL 可以自动包装和解包其相应?Java cM的基本类型(例如Q可以在后台?int 强制转换?Integer c,反之亦可Q,但大多数的标识符成为指向完整的 Java 对象的指针? l果是,对这些对象的Ҏ(gu)或Q在对象是数l和集合的情况下Q对其元素的讉K通常是o(h)人满意的。就Z(jin)实现q种用途,EL 提供?jin)两U不同的存取器(点运符Q?. Q和Ҏ(gu)可符Q?[] Q)(j)Q也支持通过 EL 操作Ҏ(gu)和元素? 点运符通常用于讉K对象的特性。例如,在表辑ּ ${user.firstName} 中,使用点运符来访?user 标识W所引用对象的名?firstName 的特性。EL 使用 Java bean U定讉K对象Ҏ(gu),因此必须定义q个Ҏ(gu)的 getter Ҏ(gu)Q通常是名?getFirstName() 的方法)(j)Q以便表辑ּ正确求倹{当被访问的Ҏ(gu)本w是对象Ӟ可以递归地应用点q算W。例如,如果我们虚构?user 对象有一个实Cؓ(f) Java 对象?address Ҏ(gu),那么也可以用点运符来访问这个对象的Ҏ(gu)。例如,表达?${user.address.city} 会(x)q回q个地址对象嵌套?city Ҏ(gu)? Ҏ(gu)可符用来(g)索数l和集合的元素。在数组和有序集合(也即Q实C(jin) java.util.List 接口的集合)(j)的情况下Q把要检索的元素的下标放在方括号中。例如,表达?${urls[3]} q回 urls 标识W所引用的数l或集合的第四个元素Q和 Java 语言以及(qing) JavaScript 中一PEL 中的下标是从零开始的Q? 对于实现 java.util.Map 接口的集合,Ҏ(gu)可符使用兌的键查找存储在映中的倹{在Ҏ(gu)号中指定键,q将相应的g辑ּ的D回。例如,表达?${commands["dir"]} q回?commands 标识W所引用?Map 中的 "dir" 键相兌的倹{? 对于上述两种情况Q都可允许表辑ּ出现在方括号中。对嵌套表达式求值的l果被作ؓ(f)下标或键Q用来检索集合或数组的适当元素。和点运符一PҎ(gu)可符也可以递归应用。这使得 EL 能够从多l数l、嵌套集合或两者的Ll合中检索元素。此外,点运符和方括号q算W还可以互操作。例如,如果数组的元素本w是对象Q则可以使用Ҏ(gu)可符来检索该数组的元素,q结合点q算W来(g)索该元素的一个特性(例如 ${urls[3].protocol} Q? 假定 EL 充当指定动态属性值的化语aQEL 存取器有一个有的功能Q与 Java 语言的存取器不同Q,那就是它们在应用?null 时不抛出异常。如果应?EL 存取器的对象Q例如, ${foo.bar} ?${foo["bar"]} 中的 foo 标识W)(j)?null Q那么应用存取器的结果也?null 。事实证明,在大多数情况下,q是一个相当有用的行ؓ(f)Q不久?zhn)׃?x)?jin)解q一炏V? 最后,点运符和方括号q算W可能实现某U程度的互换。例如,也可以?${user["firstName"]} 来检?user 对象?firstName Ҏ(gu),正如可以?${commands.dir} 获取?commands 映射中的 "dir" 键相兌的g栗? 回页? q算W? EL q可以通过使用标识W和存取器,遍历包含应用E序数据Q通过限制?jin)作用域的变量公开Q或关于环境的信息(通过 EL 隐式对象Q的对象层次l构。但是,只是讉Kq些数据Q通常不以实现许?JSP 应用E序所需的表C逻辑? 最l,EL q包括了(jin)几个用来操作和比?EL 表达式所讉K数据的运符。表 2 中汇M(jin)q些q算W? ?2. EL q算W? cd q算W? 术q算W? ?- ?* ?/ Q或 div Q和 % Q或 mod Q? 关系q算W?= Q或 eq Q?!= Q或 ne Q?< Q或 lt Q?> Q或 gt Q?<= Q或 le Q和 >= Q或 ge Q? 逻辑q算W?& Q或 and Q?|| Q或 or Q和 ! Q或 not Q? 验证q算Wempty 术q算W支持数值的加法、减法、乘法和除法。还提供?jin)一个求余运符。注Q除法和求余q算W都有替代的、非W号的名Uͼ为的是与 XPath 保持一_(d)(j)。清?5 中显CZ(jin)一个演C算术运符用法的示例表辑ּ。对几个 EL 表达式应用算术运符的结果是该术q算W应用于q些表达式返回的数值所得的l果? 清单 5. 利用术q算W的 EL 表达? ${item.price * (1 + taxRate[user.address.zipcode])} 关系q算W允许比较数字或文本数据。比较的l果作ؓ(f)布尔D回。逻辑q算W允许合q布?yu)(dng)|q回新的布尔倹{因此,可以?EL 逻辑q算W应用于嵌套的关pL逻辑q算W的l果Q如清单 6 所C? 清单 6. 利用关系和逻辑q算W的 EL 表达? ${(x >= min) && (x <= max)} 最后一U?EL q算W是 empty Q它对于验证数据特别有用?empty q算W采用单个表辑ּ作ؓ(f)其变量(也即Q?${empty input} Q,q返回一个布?yu)(dng)|该布?yu)(dng)DC对表达式求值的l果是不?#8220;I?#8221;倹{求值结果ؓ(f) null 的表辑ּ被认为是I,x元素的集合或数组。如果参数是寚w度ؓ(f)零的 String 求值所得的l果Q则 empty q算W也返?true ? ?3 昄?EL q算W的优先U。正如清?5 ?6 所C,可以用圆括号对表辑ּ分组Q高于普通的优先U规则? ?3. EL q算W优先Q自到底,从左到右Q? [] , . () unary - ?not ?! ?empty * ?/ ?div ?% ?mod + 、binary - () < ?> ?<= ?>= ?lt ?gt ?le ?ge == ?!= ?eq ?ne && ?and || ?or 回页? 文字 ?EL 表达式中Q数字、字W串、布?yu)(dng)值和 null 都可以被指定为文字倹{字W串可以用单引号或双引号定界。布?yu)(dng)D指定?true ?false ? 回页? Taglib 伪指? 正如我们先前讨论的,JSTL 1.0 包括四个定制标记库。ؓ(f)?jin)演C?JSTL 标记和表辑ּ语言的交互,我们研I几个来?JSTL core 库的标记。和使用M JSP 定制标记库一P必须在?zhn)惌使用q个库标记的M面中包?taglib 伪指令。清?7 昄?jin)用于这个特定库的伪指o(h)? 清单 7. 用于 JSTL core ?EL 版本?taglib 伪指? <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> 实际上,对应?JSTL core 库的 taglib 伪指令有两种Q因为在 JSTL 1.0 中,EL 是可选的。所有四?JSTL 1.0 定制标记库都有?JSP 表达式(而不?ELQ指定动态属性值的备用版本。因些备用库依赖?JSP 的更传统的请求时属性|所以它们被UCؓ(f) RT库,而那些用表辑ּ语言的则被称?EL 库。开发h员用不同?taglib 伪指令来区分每个库的q两个版本。清?8 昄?jin)?core 库的 RT 版本的伪指o(h)。但是,׃现在我们讨论的重Ҏ(gu) ELQ所以首先需要这些伪指o(h)? 清单 8. 用于 JSTL core ?RT 版本?taglib 伪指? <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c_rt" %> 回页? 变量标记 我们首先要考虑?JSTL 定制标记? 操作。正如已l说明的Q限制了(jin)作用域的变量?JSTL 中v关键作用Q? 操作提供Z标记的机制来创徏和设|限制了(jin)作用域的变量。清?9 中显CZ(jin)该操作的语法Q其?var 属性指定了(jin)限制?jin)作用域的变量的名称Q?scope 属性表明了(jin)该变量驻留在哪个作用域中Q?value 属性指定了(jin)分配l该变量的倹{如果指定变量已l存在,则简单地所指明的Dl它。如果不存在Q则创徏新的限制?jin)作用域的变量,q用该值初始化q个变量? 清单 9. 操作的语? scope 属性是可选的Q其~省值是 page ? 清单 10 中显CZ(jin) 的两个示例。在W一个示例中Q将?x)话作用域变量设|成 String 倹{在W二个示例中Q用表达式来讄数|(x)页面作用域内名?square 的变量赋gؓ(f)名ؓ(f) x 的请求参数的值的qx? 清单 10. 操作CZ (zhn)还可以限制了(jin)作用域的变量的值指定ؓ(f) 操作的主体内容,而不是用属性。用这U方法,(zhn)可以重新编写清?10 中的W一个示例,如清?11 所C。此外,正如我们马上可以看到的, 标记的主体内Ҏ(gu)w也可以使用定制标记? M内生成的所有内定w作Z?String Dl指定变量? 清单 11. 通过M内容指定 操作的? CST JSTL core 库包含第二个用于理限制?jin)作用域的变量的标?? 。顾名思义Q? 操作是用来删除限制了(jin)作用域的变量的,它获取两个属性?var 属性指定待删除变量的名Uͼ scope 属性是可选的Q它表示待删除变量来自哪个作用域Q缺省ؓ(f) page Q如清单 12 所C? 清单 12. 操作CZ 回页? 输出 管 操作允许表辑ּl果赋给限制?jin)作用域的变量,但开发h员通常?x)希望只昄表达式的|而不存储它。JSTL 定制标记承担q一dQ其语法如清?13 所C。该标记对由?value 属性指定的表达式进行求|然后打印l果。如果指定了(jin)可选属?default Q那么,在对 value 属性的表达式求值所得结果ؓ(f) null 或空 String 的情况下Q? 打印其倹{? 清单 13. 操作的语? escapeXml 属性也是可选的。它控制当用 标记输出诸如“<”?#8220;>”?#8220;&”之类的字W(?HTML ?XML 中具有特D意义)(j)时是否应该进行{义。如果将 escapeXml 讄?trueQ则?x)自动将q些字符转换成相应的 XML 实体Q此处提到的字符分别转换?< ?> ?& Q? 例如Q假定有一个名?user 的会(x)话作用域变量Q它是一个类的实例,该类为用户定义了(jin)两个Ҏ(gu):(x) username ?company 。每当用戯问站Ҏ(gu)Q这个对象被自动分配l会(x)话,但直到用户实际登录后Q才?x)设|这两个Ҏ(gu)。假定是q种Ҏ(gu)Q请考虑清单 14 中的 JSP 片段。在用户d之后Q这个片D将昄单词“Hello”Q其后是他/她的用户名和一个惊叹号。但是,在用L(fng)录之前,p个片D는成的内容则是短语“Hello Guest!”。在q种情况下,因ؓ(f) username Ҏ(gu)还有待初始化,所? 标记{而打印出 default 属性的|卛_W串“Guest”Q? 清单 14. 带缺省内容的 操作CZ Hello ! 接下来,考虑清单 15Q它使用? 标记?escapeXml 属性。如果在q种情况下已l将 company Ҏ(gu)设|成 Java String ?"Flynn & Sons" Q那么,实际上该操作生成的内容将?Flynn & Sons 。如果这个操作是生成 HTML ?XML 内容?JSP 面的一部分Q那么,q个字符串中间的“&”W号最l可能被解释?HTML ?XML 控制字符Q从而妨了(jin)对该内容的显C或解析。但是,如果?escapeXml 属性D|成 true Q则所生成的内容将?Flynn & Sons 。浏览器或解析器不会(x)因在解释旉到这U内容而出问题。假?HTML ?XML ?JSP 应用E序中最常见的内容类型,所?escapeXml 属性的~省值是 true ׃ؓ(f)奇了(jin)? 清单 15. 用转义? 操作CZ 回页? 用缺省D|变? 除了(jin)化动态数据的昄之外Q当通过 讄变量值时Q? 指定~省值的能力也很有用。正?清单 11 所C,用来赋给限制?jin)作用域的变量的值可以指定ؓ(f) 标记的主体内容,也可以通过其值属性来指定。通过? 操作嵌套? 标记的主体内容中Q变量赋值就可以利用其缺省D力? 清单 16 中说明了(jin)q种Ҏ(gu)。外? 标记的行为非常简单:(x)它根据其M内容讄?x)话作用?timezone 变量的倹{但是,在这U情况下Q主体内Ҏ(gu)通过 操作生成的。这个嵌套操作的值属性是表达?${cookie['tzPref'].value} Q它?yu)试通过 cookie 隐式对象q回名ؓ(f) tzPref ?cookie 倹{( cookie 隐式对象?cookie 名称映射到相应的 Cookie 实例Q这意味着必须通过对象?value Ҏ(gu)用点q算W来(g)索储存在 cookie 中的实际数据。)(j) 清单 16. 合ƈ ? 以提供缺省变量? 但是Q请考虑以下情况Q用hW一ơ尝试用这D代码的 Web 应用E序。结果是Q请求中没有提供名ؓ(f) tzPref ?cookie。这意味着使用隐式对象的查扑ְq回 null Q在q种情况下整个表辑ּ返?null 。因为对 标记?value 属性求值的l果?null Q所? 标记?x){而输出对?default 属性求值的l果。在q里是字W串 CST 。因此,实际的结果是?timezone 限制?jin)作用域的变量设|成用户?tzPref cookie 中存储的时区Q或者,如果没有Q则使用~省时区 CST ? EL ?JSP 2.0 目前Q表辑ּ语言仅可用于指定 JSTL 定制标记中的动态属性倹{但 JSTL 1.0 表达式语a的一个扩展已l被提出Q会(x)把它包括?JSP 2.0 中去Q眼下正在进行最后评审。这个扩展将允许开发h员通过自己的定制标记来使用 EL。页面作者将可以在目前允怋?JSP 表达式的M地方使用 EL 表达式,譬如动态值插入模板文本中Q?

Your preferred time zone is ${timezone}

? q个 JSP 2.0 功能Q就?JSTL 本n一P(j)支持页面作者进一步减对 JSP ~制脚本元素的依赖,从而改q?JSP 应用E序的可l护性? 回页? l束? ELQ与四个 JSTL 定制标记库提供的操作l合hQ允?dng)R面作者不使用脚本元素卛_实现表示层逻辑。例如,Ҏ(gu)本文开?清单 1 中的 JSP 代码和清?17 中显C的通过 JSTL 实现的同样功能。(JSTL core 库中其余的标讎ͼ包括 ?qing)其子标讎ͼ在本系列的下一文章中讨论。)(j)管昄执行?jin)条仉辑Q但?JSTL 版本中没?Java 语言源代码,q且标记之间的关p(其是关于嵌套需求)(j)对于M_N?HTML 语法的h都应该是熟?zhn)的? 清单 17. 合ƈ ? 以提供缺省变量?

Welcome, member!

Welcome, guest!

通过提供大多?Web 应用E序常用功能的标准实玎ͼJSTL 有助于加速开发周期。与 EL l合hQJSTL 可以不需要对表示层程序编写代码,q极大地化了(jin) JSP 应用E序的维护? 参考资? (zhn)可以参阅本文在 developerWorks 全球站点上的 英文原文. Sun ?JSP 标准标记库主|?jin)解关?JSTL 的更多信息的良好L(fng)? JSTL 1.0 规范是关?EL 和四?JSTL 标记库的最l权威文本? Jakarta Taglibs目?JSTL 1.0 参考实现的h? Shawn Bayern 所著的 JSTL in Action QManning Publications Co.Q?002 q_(d)(j)提供?jin)对所?JSTL 功能的精彩论qͼ作者是该参考实现的领导? David Geary ?Java 技术方面很受欢q的作者,他也写了(jin)一本关?JSTL 的书Q书名是 Core JSTL ? JSPTags.com?JSP 技术参考资料的目录Q它?yu)其专注于定制标记库? Sun ?Java Web Services Tutorial中包含了(jin)?JSTL 的讨论? “ Using JSPs and custom tags within VisualAge for Java and WebSphere Studio”Q?WebSphere 开发者园圎ͼ(j)是一?WBOnline 实用论文Q它演示?servlet、JSP 和定制标记库的用? 通过 Jeff Wilson _ֽ的文?#8220; 使用定制标记控制 JSP 面”Q?developerWorksQ?002 q?1 月)(j)?jin)解关于定制标记库的一切? Noel Bergman 的文?#8220; JSP 标记库:(x)着意设计的更好的可用?#8221;Q?developerWorksQ?001 q?12 月)(j)向?zhn)展示了(jin)声明性标记是如何帮助提高 JSP 面的可用性的? 有关 EcmaScript 的更多详l信息,请参?Sing Li ?#8220; 快速上?Java ~程”Q?developerWorksQ?001 q?7 月)(j)? ?developerWorksJava 技术专?可以扑ֈ多达数百的 Java 技术参考资料? 关于作? Mark Kolb 是一名在德克萨斯州奥斯汀工作的Y件工E师。他l常服务器?Java 主题在业界发表演Ԍq且与h合著?Web Development with JavaServer PagesQ第二版 一书。可通过 mak@taglib.com?Mark 联系?

BlueSunshine 2008-05-01 19:57 发表评论
]]>
O’Reilly总裁提姆-奥莱理:(x)什么是Web 2.0http://www.tkk7.com/yiqi801218/archive/2008/03/05/183878.htmlBlueSunshineBlueSunshineWed, 05 Mar 2008 02:50:00 GMThttp://www.tkk7.com/yiqi801218/archive/2008/03/05/183878.htmlhttp://www.tkk7.com/yiqi801218/comments/183878.htmlhttp://www.tkk7.com/yiqi801218/archive/2008/03/05/183878.html#Feedback0http://www.tkk7.com/yiqi801218/comments/commentRss/183878.htmlhttp://www.tkk7.com/yiqi801218/services/trackbacks/183878.html 

O’Reilly总裁提姆-奥莱理:(x)什么是Web 2.0

译者序QWeb 2.0q一概念Q由O(jin)’Reilly媒体公司总裁兼CEO提姆·奥莱理提出。他是美国IT业界公认的传奇式人物Q是”开放源?#8221;概念的缔造者,一直倡导开放标准,q活跃在开放源码运动的最前沿?/p>

q篇由提?#183;奥莱理亲自执W、创作于上个月由他主办的Web 2.0?x)议前夕的文章,一l发出就引发?jin)热烈的讨论Q被视ؓ(f)Web 2.0q今为止的经怹作?/p>

Web2.0的一个关键原则是用户多Q服务越?/strong>

作者|提姆·奥莱?Tim O’Reilly) 译作者|玄伟?/p>

2001q秋天互联网公司Qdot-com)泡沫的破灭标志着互联|的一个{折点。许多h断定互联|被q分炒作Q事实上|络泡沫和相l而来的股?jng)大衰退看v来像是所有技术革命的共同特征。股?jng)大衰退通常标志着蒸蒸日上的技术已l开始占领中央舞台。假冒者被驱逐,而真正成功的故事展示?jin)它们的力量Q同时h们开始理解了(jin)是什么将一个故事同另外一个区分开来?/p>

“Web 2.0″的概念开始于一个会(x)议中Q展开于O’Reilly公司和MediaLive国际公司之间的头脑风暴部分。所谓互联网先驱和O’Reilly公司副总裁的戴?#183;多尔?Dale Dougherty)注意刎ͼ同所谓的”崩溃”q然不同Q互联网比其他Q何时候都更重要,令hȀ动的新应用程序和|站正在以o(h)人惊讶的规律性涌现出来。更重要的是Q那些幸免于当初|络泡沫的公司,看v来有一些共同之处。那么会(x)不会(x)是互联网公司那场泡沫的破灭标志了(jin)互联|的一U{折,以至于呼?#8221;Web 2.0″的行动有?jin)意义?我们都认同这U观点,W(xu)eb 2.0?x)议由此诞生?/p>

在那个会(x)议之后的一q半的时间里Q?#8221;Web 2.0″一词已l深入h?j),从Google上可以搜索到950万以上的链接。但是,至今关于Web 2.0的含义仍存在极大的分歧,一些hWeb 2.0贬低为毫无疑义的一个行销炒作口号Q而其他一些h则将之理解ؓ(f)一U新的传l理c(din)?/p>

本文是来尝试澄清Web 2.0本来意义?/p>

在我们当初的头脑风暴中,我们已经用一些例子,公式化地表达?jin)我们对Web 2.0的理?/p>
Web 1.0 Web 2.0
DoubleClick Google AdSense
Ofoto Flickr
Akamai BitTorrent
mp3.com Napster
大英癄全书在线QBritannica OnlineQ?/td> l基癄全书QWikipediaQ?/td>
个h|站 博客(blogging)
evite upcoming.org和EVDB
域名投机 搜烦(ch)引擎优化
面览?/td> 每次点击成本
屏幕抓取Qscreen scrapingQ?/td> |络服务Qweb servicesQ?/td>
发布 参与
内容理pȝ l基
目录Q分c? 标签Q?#8221;分众分类”QfolksonomyQ?/td>
_?/td> 聚合

q个列表q会(x)不断l箋下去。但是到底是什么,使得我们认定一个应用程序或一U方式ؓ(f)作所?#8221;Web 1.0″Q而把另外一个叫?#8221;Web 2.0″呢?Q这个问题尤为紧q,因ؓ(f)Web 2.0的观念已l传播的如此q泛Q以至于很多公司正在这个词加到他们的行销炒作中,但却没有真正理解其含义。同时这个问题也ؓ(f)困难Q因多嗜好口L(fng)创业公司昄不是Web 2.0Q而一些我们认为是Web 2.0的应用程序,例如Napster和BitTorrentQ甚至不是真正适当的网l程序!Q我们首先来探讨一些原则,q些原则是通过Web 1.0的一些成功案例,以及(qing)一些最为有的新型应用E序来体现的?/p>

1. 互联|作为^?/strong>

正如许多重要的理念一PW(xu)eb 2.0没有一个明的界限Q而是一个重力核?j)。不妨将Web 2.0视作一l原则和实践Q由此来把距L?j)或q或q的|站l成Z个类似太阳系的网l系l,q些|站或多或少C现着Web 2.0的原则?/p>

?为Web 2.0?#8221;模拟?#8221;Q该图是在名?#8221;O’Reilly的朋?#8221;QF(tun)riend Of O’Reilly, FOOQ的?x)议的一个研讨会(x)上生的。这个图基本上仍处于演化阶段Q但已经描绘Z(jin) 从Web 2.0核心(j)理念中衍生出的许多概c(din)?/p>

例如Q在2004q?0月的W一ơWeb 2.0的会(x)议上Q约?#183;巴特利(John BattelleQ和我在我们各自的开场白中列举了(jin)一l初步的原则?/p>

q些原则中的W一条就?#8221;互联|作为^?#8221;。这也曾是Web 1.0的宠儿网景公司(Netscape)的战斗口P而网景在同微软的大战中陨落了(jin)。此外,我们早先的Web 1.0的楷模中的两个,DoubleClick和Akamai公司Q皆是将|络当作q_的先驱。h们往往不认是一U网l服务,但事实上Q广告服务是W一个被q泛应用的网l服务,同时也是W一个被q泛应用的؜合处理(mashupQ,如果用另一个近来流行的词来说的话。每个旗帜广告(banner ad)都是用来在两个网站之前无~合作,向位于另外一台计机上的读者传递一个整合好的页面?/p>

Akamai也将|络看作q_Qƈ且在一个更深入的层ơ上Q来搭徏一个透明的缓存和内容分发|络Q以侉K低宽带的拥塞E度?/p>

虽然如此Q这些先驱提供了(jin)有益的对比,因ؓ(f)后来者遇到同样问题的时候,可以先׃的解x案进一步g伸,从而对新^台本质的理解也更为深M(jin)?DoubleClick和Akamai都是Web 2.0的先驱,同时我们也可以看刎ͼ可以通过引入更多Web 2.0的设计模式,来实现更多的应用?/p>

让我们对q三个案例中的每一个都作一番深IӞ来探讨其间的一些本质性的差别?/p>

Netscape ?Google

如果Netscape可以UCؓ(f)Web 1.0的旗手,那么Google几乎可以肯定是Web 2.0的旗手,只要看看他们的首ơ公开上市(jng)QIPO)是如何地揭示?jin)各自的时代清楚?jin)。所以我们就从这两个公司和其定位的差别入手?/p>

Netscape以传l的软gҎ(gu)来勾勒其所?#8221;互联|作为^?#8221;Q他们的旗舰产品是互联网览器,一个桌面应用程序。同Ӟ他们的战略是利用他们在浏览器?jng)场的统d位,来ؓ(f)其昂늚服务器品徏立v?jng)场。从理论上讲Q在览器中控制昄内容和程序的标准Q赋予了(jin)Netscape一U市(jng)场支配力Q如同微软公司在个h计算机市(jng)Z所享受的一栗很像当?#8221;自行的马?#8221;Qhorseless carriageQ将汽R描绘ZU熟知事物的延QNetscape曾推销一U网l桌面(webtopQ来替代传统的桌面(desktopQ,q且计划借助信息更新Q以?qing)由购买了(jin)Netscape服务器的信息提供者来推送的各种程序,来开发推q这U网l桌面?/p>

最l,览器和|络服务器都变成?#8221;日用?#8221;Q同时h(hun)值链条也向上UdC(jin)在互联网q_上传递的服务?/p>

作ؓ(f)Ҏ(gu)QGoogle则以天生的网l应用程序的角色问世Q它从不出售或者打包其E序Q而是以服务的方式来传递。客户们直接或间接地为其所使用的服务向 Google付费。原有Y件工业缺陯然无存。没有了(jin)定期的Y件发布,只需要持l的改善。没有了(jin)许可证或销售,只需要用。没有了(jin)Z(jin)让用户在其设备上q行软g而不得不q行的^台迁U,只需要搭建宏大的、由众多个h计算机组成的、可伸羃的网l,其上q行开源操作系l,?qing)其及(qing)自行研制的应用E序和工P而公怹外的M人则永远无法接触到这些东ѝ?/p>

在其底层QGoogle需要一UNetscape从未需要过的能力:(x)数据库管理。Googleq远不只是一个Y件工L(fng)集合Q它是一个专业化的数据库。没有这些数据,那些工具毫无用武之圎ͼ没有q些软gQ数据也无可控制。Y件许可证制度和对应用E序接口QAPIQ的控制–上一个时代的法宝–已经毫不相关?jin),因?f)Google的Y件只需要执行而从不需要分发,也因为如果不具备攉和管理数据的能力QY件本w就没有什么用处了(jin)。事实上QY件的价值是同它所协助理的数据的规模和活性成正比的?/p>

Google的服务不是一个简单的服务器,虽然其服务是通过大规模的互联|服务器集合来传递的Q其服务也不是一个浏览器Q虽然这U服务是被用户在览器中体验到的。Google的旗C?#8211;搜烦(ch)服务Q甚至不托管它让用户来搜ȝ内容。很像一个电(sh)话通话q程Q不仅发生在通话的两端,而且发生在中间的|络上。作为用户和其在U体验的一个中介,Google作用于浏览器、搜索引擎和最l的内容服务器之间的I间中?/p>

虽然 Netscape和Google都可以被描述Y件公司,但显然Netscape可以归到LotusQMicrosoftQOracleQSAPQ以?qing)其他发源于上个世纪八十q代软g革命的那些公司所l成的Y件世界。而Google的同伴们Q则是像eBayQAmazonQNapsterQ及(qing)?DoubleClick和Akamaiq样的互联网公司?/p>

DoubleClick对Overture和AdSense

同GooglecMQDoubleClick是一个名副其实的互联|时代的孩子。它把Y件作ZU服务,在数据管理方面具有核?j)竞争力Qƈ且正如上文所qͼ它是一个早在连|络服务的名字还不曾有的时候,已然开始其服务的先驱。然而,DoubleClick最l还是被其商业模式局限住?jin)。它所贯彻的是?ji)十q代的互联网观念。这U观念围l着出版Q而不是参与;围绕着q告客户Q而不是消费者,来进行操U;围绕着规模Q认Z联网?x)被如MediaMetrix {网l广告评公司尺度下的所谓顶U网站所l治?/p>

l果是,DoubleClick得意地在其网站上引用道:(x)”过2000U的成功应用”。而相Ҏ(gu)的是QYahoo!公司的搜索市(jng)场(从前的OvertureQ和Google的AdSense产品Q已l在为几十万的广告客h务?/p>

Overture和Google的成功源自于对克里斯·安d(Chris AndersonQ提到的所?#8221;长尾”的领(zhn),即众多小|站集体的力量提供了(jin)互联|的大多数内宏VDoubleClick的品要求一U签订正式的销售合同,q将其市(jng)场局限于很少的几千个大型|站。Overture和Google则领?x)到如何广告放|到几乎所有网上。更q一步地Q它们回避了(jin)发行商和q告代理们所喜爱的广告Ş式,例如旗帜q告和弹出式q告Q而采用了(jin)q扰最的、上下文敏感的、对用户友好的文字广告Ş式?/p>

Web 2.0的经验是Q有效利用消费者的自助服务和算法上的数据管理,以便能够触角g伸至整个互联|,延臛_个边~而不仅仅是中?j),延至长而不仅仅是头部?/p>

毫不奇怪,其他Web 2.0的成功故事也昄着同样的轨qVeBay扮演着一个自动的中间媒介的角Ԍ使个体之间发生的几个元的偶然性的交易成ؓ(f)可能。NapsterQ虽然已l出于法律原因而关闭)(j)其|络建立在一个集中的歌曲数据库之上,但是它让每一个下载者都成ؓ(f)一台服务器Q从而其网l逐渐扩大?/p>

Akamai ?BitTorrent

同DoubleClickcMQAkamai的业务重炚w向网l的头部Q而不是尾部;面向中心(j)Q而不是边~。虽然它服务于那些处于网l边~的个体的利益,Z们访问位于互联网中心(j)的高需求的|站铺^?jin)道路,但它的收入仍然来自从那些位于中?j)的网站?/p>

BitTorrentQ像P2P风潮中的其他倡导者一P采用?jin)一U激q的方式来达C联网M?j)化Qinternet decentralizationQ的目的。每个客L(fng)同时也是一个服务器Q文件被分割成许多片D,从而可以由|络上的多个地方提供Q透明地利用了(jin)|络的下载者来为其他下载者提供带宽和数据。事实上Q文件越行下蝲得越快,因ؓ(f)有更多的用户在ؓ(f)q个文g提供带宽和各个片Dc(din)?/p>

BitTorrent由此昄出Web 2.0的一个关键原则:(x)用户多Q服务越好。一Ҏ(gu)Akamai必须增加服务器来改善服务Q另一Ҏ(gu)BitTorrent用户各自的资源贡献l大家。可以说Q有一U隐性的”参与体系”内置在合作准则中。在q种参与体系中,服务主要扮演着一个智能代理的作用Q将|络上的各个边缘q接hQ同时充分利用了(jin)用户自n的力量?/p>

2. 利用集体智慧

在诞生于Web 1.0时代q且存活?jin)下来,而且要l领导Web 2.0时代的那些巨人的成功故事的背后,有一个核?j)原则,是他们借助?jin)网l的力量来利用集体智慧:(x)

  • 链接是互联网的基。当用户d新的内容和新的网站的时候,被限定在一U特定的|络l构中,q种|络l构是由其他用户发现内容q徏立链接的。如同大脑中的神l突触,随着彼此的联p通过复制和强化变得越来越强,而作为所有网l用L(fng)所有活动的直接l果Q互联的|络有机地成长?
  • Yahoo!是第首例伟大的成功故事,诞生于一个分cȝ录,或者说是链接目录,一个对C甚至数百万网l用L(fng)最_ֽ作品的汇怅R虽然后来Yahoo!q入?jin)创Z花八门的内容的业务,但其作ؓ(f)一个门h攉|络用户们集体作品的角色Q依然是其h(hun)值核?j)?
  • Google在搜索方面的H破在于PageRank技术,该技术o(h)其迅速成为搜索市(jng)Z毫无争议的领D。PageRank是一U利用了(jin)|络的链接结构,而不是仅仅是使用文的属性,来实现更好的搜烦(ch)效果的方法?
  • – eBay的品是其全部用L(fng)集体zdQ就向网l自w一PeBay随着用户的活动而有机地成长Q而且该公司的角色是作Z个特定环境的?j)成者,而用L(fng)行动发生在q种环境之中。更重要的是QeBay的竞争优势几乎都来自于关键性的大量的买家和卖家双方Q而这正是q一点得后面许多竞争者的产品的吸引力显著减低?
  • Amazon销售同Barnesandnoble.com{竞争者相同的产品Q同时这些公总卖方获得的是同样的品描q、封面图片和目录。所不同的是QAmazon已然~造出?jin)一门关于激发用户参与的U学。Amazon拥有比其竞争者高Z个数量以上的用戯P以及(qing)更多的邀(g)h让用户以五花八门的方式,在近乎所有的面上进行参与,而更为重要的是,他们利用用户的活动来产生更好的搜索结果?Barnesandnoble.com的搜索结果很可能指向该公司自q产品Q或者是赞助商的l果Q而Amazon则始l以所?#8221;最行?#8221;打头Q这是一U实时计,不仅Z销售,而且Z其他一些被Amazon内部人士UCؓ(f)围绕着产品”动”QflowQ的因素。由于拥有高出对手一个数量的用户参与, Amazon销售额出竞争Ҏ(gu)也就不为奇?jin)?

现在Q具备了(jin)q种z察力,q且可能?x)将之g伸开来的那些创新型的公司Q正在互联网上留下他们的印迹?/p>

l基癄全书QWikipediaQ是一U在U百U全书,其实现基于一U看g可能的观c(din)该观念认ؓ(f)一个条目可以被M互联|用hdQ同时可以被 其他M人编辑。无疑,q是对信ȝ一U极端的实验Q将埃里?#183;雯PEric RaymondQ的DQ源自开放源码Y件的背景之下Q:(x)”有够的眼球Q所有的E序~陷都是肤浅?#8221;Qwith enough eyeballs, all bugs are shallowQ运用到?jin)内容的创徏之中。维基百U全书已焉居世界网站百Z列,q且许多为它不久将位列十强。这在内容创建方面是一U深q的变革?/p>

像del.icio.usQ美味书{)(j)和Flickrq样的网站,其公司已l在q期获得?jin)广泛的xQƈ且已l在一U被Z成ؓ(f)”分众分类”QfolksonomyQ有别于传统分类法)(j)的概念上成ؓ(f)先行者?#8221;分众分类”是一U用用戯由选择的关键词对网站进行协作分cȝ方式Q而这些关键词一般称为标{(tags)。标{֌q用?jin)像大脑本n所使用的U多重的、重叠的兌Q而不是死板的分类。D一个经典的例子Q在 Flickr|站上,一q小狗照片可能被加上”狗”?#8221;可爱”q样的标{,从而允许系l依照用戯为所产生的自然的方式来进行检索?/p>

协作式垃圾信息过滤品,例如CloudmarkQ就聚集?jin)?sh)子邮件用户们对于”一邮件是或者不是垃N?#8221;的众多相互独立的决策Q从而胜q了(jin)依赖于分析邮件本w的那些pȝ?/p>

伟大的互联网成功者ƈ不主动地到处推销其品,q几乎成为公理。他们采?#8221;病毒式营销”Qviral marketingQ的方式Q也是_(d)一些推介会(x)直接从一个用户传播到另外一个用戗如何一个网站或产品依赖q告来进行宣传,你几乎可以断定它不是Web 2.0?/p>

即便许多互联|基设施本nQ包括在大多数网l服务器中用到的LinuxQApacheQMySQLQ以?qing)PerlQPHP或Python代码Q也都依靠开放源码的对等生Qpeer-productionQ的方式。其中包含了(jin)一U集体的、网l赋予的智慧。在SourceForge.net|站上列有至?0万种开放源码Y仉目。Q何h都可以添加一个项目,M人都可以下蝲q用项目代码?/p>

同时Q由于作为用户用的l果Q新的项目从边缘q移C?j)。一个对软g的有机的接受q程几乎完全依靠病毒式营销。同Ӟ作ؓ(f)用户应用的结果,新的目从边~迁Ud中心(j)Q这是一U几乎完全依靠病毒式营销的,有机的Y仉用过E,?/p>

l验是:(x)源于用户贡献的网l效应,是在Web 2.0时代中统d(jng)场的关键?/p>

q_L打|应用E序

在过Lơ同Ҏ(gu)的竞争中Q微软都成功地打用了(jin)q_q张牌,打|?jin)即便是最占主导地位的应用E序。Windowsq_让微软以Excel取代?Lotus 1-2-3Q以Word取代?jin)WordPerfect,Q以Internet Explorer取代?jin)Netscape览器?/p>

不过q次Q冲H不是在q_和应用程序之_(d)而是在两U^C间。每个^台皆有一U截然不同的商业模式Q一斚wQ一个独立Y件商hq泛的用户基q且应用程序接口和操作pȝ紧密集成Q从而对E序设计模式予以控制Q另一斚wQ是一个没有所有者的pȝQ由一l协议、开放标准和对合作的p来连l到一赗?/p>

Windowspȝ代表?jin)由软gE序接口来进行专有控制的高峰。Netscape曑ְ试用微Y当初对付其对手所使用的手D,来同微Yq行争夺Q但是失败了(jin)。然而拥有互联网开放标准的Apache却已l繁荣了(jin)h。此番上演的战局Q已l不再是实力(zhn)殊的^台对军_立的软g?jin),而是变成?jin)^台对军_^台。问题在于,哪个q_Q或者更p地来说哪个体p,以及(qing)哪个商业模式Q最能适应未来的机遇?/p>

Windows对于早期的PC时代的问题是一U卓的解决Ҏ(gu)。它l一?jin)程序开发者的竞技场,解决?jin)很多困扰这个领域的问题。但q种由单一供方控制的一刀切的Ҏ(gu)Q已l不再是适宜的解x案,而成Z(jin)一U问题。面向交的pȝ需要协同性,互联|作Z个^台当然也是如此。除非供方可以控制每一例交互的两个l端Q这U通过软g的程序接口来锁定用户的可能性微乎其微?/p>

M企图通过控制q_来推销应用E序的Web 2.0提供商,从定义上Ԍ已经丧失?jin)这个^台的优越性?/p>

qƈ不是说锁定和竞争优势的机?x)不复存在?jin)Q而是说我们相信这U机?x)不是通过控制软gE序接口和协议来取得的。新的游戏规则正在Q现。那些能够理解这些新的游戏规则,而不是企囑֛到PC软g时代旧有规则的公司,才有可能在Web 2.0时代获得成功?/p>

博客和大众智?/strong>

Web 2.0时代一Ҏ(gu)受追捧的Ҏ(gu)就是博客的兴v。个Z从互联|早期就已经存在?jin),而个人日记和每日发表观点的专栏就更渊源久q了(jin)Q那么到底有什么让人大惊小怪的呢?

归根底地Q博客只是一U日记Ş式个人网c(din)但正如里奇·斯格仁塔QRich SkrentaQ指出的Q博客的按时间顺序来排列的结?#8221;看v来像是一个微不道的变化Q但却推动着一个E然不同的分发、广告和价值链?#8221;

其中一大变化就是一称为RSS的技术。RSS是自早期计算机高手们认识到CGIQ公qx口)(j)可用来创Z数据库ؓ(f)基础的网站以来,在互联网Ҏ(gu)l构斚w最重要的进步。RSS使h们不仅仅链接C个网,而且可以订阅q个|页Q从而每当该面产生?jin)变化时都?x)得到通知。斯g塔将之称?#8221;增量的互联网”Qincremental webQ。其他h则称之ؓ(f)”鲜活的互联网”Qlive webQ?/p>

当然Q现在所?#8221;动态网?#8221;Q即h动态生的内容的、由数据库驱动的|站Q取代了(jin)十年前的?rn)态网站。而动态网站的zd不仅在于|页Q而且在链接方面。一个指向网l博客的链接实际上是指向一个不断更新的|页Q包括指向其中Q何一文章的”固定链接”QpermalinksQ,以及(qing)每一ơ更新的通知。因此,一个RSS是比书签或者指向一个单独网늚链接要强大得多?/p>

RSS同时也意味着|页览器不再只是限于浏览网늚工具。尽诸如Bloglines之类的RSS聚合器(RSS aggregatorsQ是Z|络的,但其他的则是桌面E序Q此外还有一些则可以用在便携讑֤上来接受定期更新的内宏V?/p>

RSS现在不仅用于推送新的博客文章的通知Q还可以用于其他各种各样的数据更斎ͼ包括股票报h(hun)、天气情c(din)以?qing)图片。这cd用实际上是对RSS本源的一 U回归:(x)RSS诞生?997q_(d)是如下两U技术的汇合Q一U是戴夫·温纳QDave WinerQ的”真正单的聚合”QReally Simple SyndicationQ技术,用于通知博客的更新情况;另一U是Netscape公司提供?#8221;丰富站点摘要”QRich Site SummaryQ技术,该技术允许用L(fng)定期更新的数据流来定制Netscape主页。后来Netscape公司失去?jin)兴,q种技术便由温U的一个博客先驱公司Userland承接下来。不q,在现在的应用E序实现中,我可以看Z者共同的作用?/p>

但是QRSS只是令博客区别于同普通网늚一部分原因。汤?#183;U特斯(Tom CoatesQ这栯论固定链接的重要性:(x)

“现在它可能看上去像是一Ҏ(gu)普通通的功能Q但它却有效地将博客从一个易于发布(ease-of-publishingQ的现象Q进一步{变ؓ(f)互相交叉的社区的一U对话式的参与。这是首ơ得对其他人的|站上的很特定的帖子表态和谈论变得如此地容易。讨论出C(jin)Q聊天也出现。同Ӟ其结果是出现?jin)友谊或者友谊更加坚定了(jin)。固定链接是W一ơ也是最为成功的一ơ在博客之间搭徏桥梁的尝试?#8221;

在许多方面,RSS同固定链接的l合Qؓ(f)HTPPQ互联网协议Q增M(jin)NNTPQ新ȝ的网l新d议)(j)的许多特性。所?#8221;博客?#8221;QblogosphereQ,可以其视作一U同互联|早期的、以对话方式来灌水的新闻l和公告牌相比来_(d)新型的对{(peer-to-peerQ意义上的等L(fng)象。h们不仅可以相互订阅网站ƈ方便地链接到一个页面上的特定评论,而且通过一U称为引用通告QtrackbacksQ的机制Q可以得知其他Q何h链接C(jin)他们的页面,q且可以用相互链接或者添加评论的方式来做出回应?/p>

有趣的是Q这U双向链接(two-way linksQ曾是象Xanadu之类的早期超文本pȝ的目标。超文本Ua(b)已然将引用通告颂扬为向双向链接q进?jin)一步。但需要注意的是,引用通告不是一个真正的双向链接Q确切地讲是一U(潜在圎ͼ(j)实现?jin)双向链接效果的对称式单向链接。其间的区别看v来可能很l微Q但实际上却是巨大的。诸?Friendster, Orkut和LinkedIn那样的社交网l系l(social networking systemsQ,需要接受方做出认以便建立某种q接Q从而缺像互联|架构本w那L(fng)可׾~性。正如照片共享服务Flickr|站的创始h之一卡特里纳·费克QCaterina FakeQ所指出的,注意力仅在碰巧时才礼往来。(F(tun)lickr因此允许用户讄观察列表Q即M用户都可以通过RSS来订阅其他所有用L(fng)照片。注意的对象会(x)被通知Q但q不一定要认可q种q接。)(j)

如果Web 2.0的一个本质是利用集体智慧Q来互联网调试ZU所谓的全球的大脑,那么博客圈就是前脑中喋喋不休的呓语,那种我们整个头脑中都能听到的声音。这可能q不反映出大脑的往往是无意识的深层结构,但却是一U有意识的思考的{h(hun)物。作ZU有意识的思考和注意力的反映Q博客圈已经开始具有强有力的媄(jing)响?/p>

首先Q因为搜索引擎用链接结构来辅助预测有用的页面,作ؓ(f)最多和最?qing)时的链接者,博客们在修整搜烦(ch)引擎l果斚w充当着一U不成比例的角色。其ơ,?为博客社区是如此多地自相引用Q关注其他博客的博客们开阔了(jin)他们的视野和能力。此外,评论家们所批判?#8221;回音?#8221;Qecho chamberQ也是一U放大器?/p>

如果只是一U放大器Q那么撰写博客将?x)变得无。但是像l基癄全书一P博客集?智慧用作一U过滤器。被詹姆?#183;苏瑞奥维奇(James SurioweckiQ称?#8221;大众智慧”Qthe wisdom of crowdsQ的规律起了(jin)作用Qƈ且就像PageRank技术所产生的结果胜q分析Q何单一文档一P博客圈的集体x?x)筛选出有h(hun)值的东西?/p>

虽然L媒体可能个别的博客视ؓ(f)竞争者,但真正其紧张的是同作Z个整体的博客圈的竞争。这不仅是网站之间的竞争Q而且是一U商业模式之间的?争。Web 2.0的世界也正是?#183;吉尔默(Dan GillmorQ的所?#8221;个h媒体”QWeQthe media)的世界。在q个世界中,是所?#8221;原本的听?#8221;Q而不是密实里的少数几个hQ来军_着什么是重要的?/p>

3. 数据是下一个Intel Inside

现在每一个重要的互联|应用程序都׃个专门的数据库驱动:(x)Google的网l爬? Yahoo!的目录(和网l爬虫)(j)QAmazon的品数据库QeBay的品数据库和销售商QMapQuest的地图数据库QNapster的分布式歌曲库。正如哈?#183;瓦里安(Hal VarianQ在d的私人对话中谈到的,”SQL是新的HTML”。数据库理是Web 2.0公司的核?j)竞争力Q其重要性得我们有时候称q些E序?#8221;讯g”QinfowareQ而不仅仅是Y件?/p>

该事实也引出?jin)一个关键问题:(x)谁拥有数据?

在互联网时代Q我们可能已l见C(jin)q样一些案例,其中Ҏ(gu)据库的掌控导致了(jin)对市(jng)场的支配和巨大的l济回报。当初由国政府的法令授权给 Network Solutions公司Q后被Verisign公司收购Q的对域名注册的垄断Q曾l是互联|上的第一个摇钱树(wi)。虽然我们在争论通过控制软g的API来Ş成商业优势在互联|时代会(x)变得困难得多Q但是对关键数据资源的控制则不同Q特别是当要创徏q些数据资源非常昂贵Q或者经ql效应容易增加回报的时候?/p>

注意一下由MapQuest, maps.yahoo.comQmaps.msn.comQ或者maps.google.com{网站提供的每张地图下面的版权声明,你会(x)发现q样一行字 “地图版权NavTeqQTeleAtlas”Q或者如果用的是新的卫星图像服务,则会(x)看到”囑փ版权Digital Globe”的字栗这些公司对其数据库q行?jin)大量的投资。(仅NavTeq一Ӟ公布投?.5亿美元用于创建其街道地址和\U数据库?Digital Globe则投?亿美元来启动其自有卫星,来对政府提供的图像进行改q。)(j)NavTeq竟然已做?jin)很多模仿Intel的耳熟能详的Intel Inside标识的事Q例如带有导航系l的汽R带?#8221;NavTeq Onboard”的印记。数据是许多此类E序事实上的Intel InsideQ是一些系l的唯一的信息源lgQ这些系l的软g体系多数是开放源码的Q也有商业化的?/p>

当前竞争火热的网l?地图Qweb mappingQ领域显C着Q对拥有软g核心(j)数据的重要性的疏忽大意Q将最l削弱其竞争C。MapQuest?995q率先进入地N域,随后?Yahoo!Q再后来是MicrosoftQ而最qGoogle也决定挺q这一?jng)场Q他们可以轻村֜通过对同一数据的授权来提供一个具有竞争力的程序?/p>

然而,作ؓ(f)Ҏ(gu)的是Amazon.com的竞争地位。像Barnesandnoble.comq样的竞争者一P其原始数据库来自于ISBN注册? R. Bowker。但是同MapQuest不同QAmazon大力增强其数据,增加出版商提供的数据Q例如封面图片,目录Q烦(ch)引,和样张材料。更重要的是Q他们利用了(jin)其用h评注数据Q以至于十年之后Q是Amazon而不是BowkerQ成为图书文献信息的主要来源Q一个学者、图书管理员和消费者的参考书目来源。Amazonq引入了(jin)其专有的标识W,即ASINQ该标识W在ISBN存在时与之对应,而当产品不带有ISBNӞ创建出一个等L(fng)命名I间?Amazon从而有效地”吸收和拓展了(jin)”其数据提供商?/p>

设想如果MapQuest也已做了(jin)同样的事情,利用他们的用h评注地图和\U,d新的价值层面。那么对仅仅通过授权使用基础数据来进入这一?jng)场的其他竞争者,造成q远大得多的困难?/p>

q期Google地图的引入,为应用程序销售商和其数据提供商之间的竞争Q提供了(jin)一个活生生的实验室。Google的轻量型~程模型已经引发?jin)不计其?的增值服务的出现Q这些服务以数据混合的方式,Google的地囑֐其他可以通过互联|访问的数据源相l合。保|?#183;拉特马赫QPaul RademacherQ的housingmaps.com是这U؜合的一个上佌例,其网站将Google的地囑֐Craigslist的公寓出U,以及(qing)住宅购买数据相结合,来创ZU交互式的房屋搜索工兗?/p>

目前Q这些؜合大多是q序高手们实现的创新性的实验产品。但是企业行动将紧随其后。ƈ且,Z已经可以从至一cd发者中发现q一炏VGoogle已经数据源提供者的角色从Navteq那里Qƈ且将自己定位Z个o(h)人喜q中介者。在以后几年里,我们会(x)看到数据提供商和E序销售商之间的斗争,因ؓ(f)两大阵营都认识到?jin),特定的数据类别在作?f)搭徏Web 2.0E序的积木时是多么的重要?/p>

q场竞赛已经涉及(qing)到拥有特定类别的核心(j)数据Q位|、n份、公׃件日历、品标识和命名I间{。在许多情况下,在那些创建数据需要巨额成本的地方Q也可能存在一U如同Intel Inside方式一样凭借单一数据源来所有作为的机遇。其他情况下Q胜者将是那些通过用户聚合来达C(f)界规模,q且聚合的数据融入pȝ服务中的公司?/p>

比如Q在w䆾标识领域QPayPalQAmazon的一键式Q以?qing)拥有数百万用户的交系l,都有可能成ؓ(f)创徏整个|络范围的n份标识数据库的正当竞争者。(关于此,Google最q用手机号码作为Gmail账号标识的尝试,可能是朝借鉴和拓展电(sh)话系l所q出的一步。)(j)同时Q像Sxipq样的创业公司,正在探烦(ch)联合w䆾标识的可能性,以寻求一U?#8221;分布一键式”Q从而提供一个无~的Web 2.0标识子系l。在日历领域QEVDB则是通过l基式参与体pL搭徏世界上最大的׃n日历的一U尝试。虽然评判者尚在观望着M一个特定创业公司或方式的成功是否,但很昄Q这些领域的标准和解x案,有效地将某些数据转变?#8221;互联|操作系l?#8221;Qinternet operating systemQ的可靠的子pȝQƈ促(j)成下一代的应用E序?/p>

关于数据Q必L意一个进一步的斚wQ那是用户兛_(j)光U和对自q数据的权限。在许多早期的网l程序中Q版权只被松散地执行。例如,Amazon宣称对Q何提交到其网站的评论的所有权Q但却缺强制性,Z可以同L(fng)评论转脓(chung)到其他Q何地斏V然而,随着很多公司开始认识到Q对数据的掌控有可能成ؓ(f)他们首要的竞争优势来源,我们会(x)看到在此cL制方面强度更大的试?/p>

正如专有软g的增长而导致自pY件运动一P在下一?0q中我们?x)看C有数据库的增长将D自由数据q动。在像维基百U全书这L(fng)开放数据项目、创作共用(Creative CommonsQ、以?qing)像GreasemonkeyQ让用户军_如何在其计算Z昄数据Q这L(fng)软g目中,我们可以看到q种Ҏ(gu)势头的前兆?/p>

参与的体p?/strong>

一些系l被设计为鼓励参与。在?#183;布莱克林QDan BricklinQ的论文”q的丰?#8221;QThe Cornucopia of the CommonsQ中Q他指出有三U创建大型数据库的方式。第一U,已经由Yahoo!来体C(jin)Q就是付费给Z来实现。第二种Q由开放源码社区的l验启发而来Q就是让志愿者来完成同样的Q务。开攄录项目(Open Directory ProjectQ,一个Yahoo的开放源码竞争者,是该方式的产物。但是Napster体现?jin)第三种方式。因为Napster其默认讄动ؓ(f)M已经下蝲的音乐服务,M用户都自动地帮助建立׃n数据库的价倹{同L(fng)方式已经被其他所有P2P文g׃n服务所采用。Web 2.0时代的一个关键经验在于:(x)用户增加价倹{但是只有很一部分用户?x)有意来Z的程序增加h(hun)|而不怕麻?ch)。因而,W(xu)eb 2.0公司均进行了(jin)q样的默认设|,即作为程序通常使用方式的副产品Q来聚合用户数据q创造h(hun)倹{正如上面所指出的,他们在搭建那U用戯多则效果好的系l?/p>

c_?#183;卡普?dng)(Mitch KaporQ曾l指?#8221;体系是策?#8221;。参与是Napster的本质,其根本体pȝ一部分?/p>

同更l常被引用的所?#8221;吸引志愿_”的原因相比,q种体系l构上的z察力可能更能抓住对开放源码Y件成功的本质。互联网、万l网QWorld Wide WebQ、以?qing)像Linux、Apache和Perlq样的开放源码Y仉目的体系l构Q均是这样一U设计,使得作ؓ(f)一U自动生的副品,谋求其自w利益的用户们创建着集体的h(hun)倹{这些项目中的Q何一个都有一个很的核心(j)、一U设计良好的扩展机制、和一U让M人来dM合乎规定的组件的方式Q不断增长着被Perl语言的创始h拉里·沃尔QLarry WallQ称?#8221;z葱?#8221;Qthe onionQ的外部层面。换句话_(d)q些技术通过他们本来的设计方式,体现着|络的效应?/p>

4. 软g发布周期的终l?/strong>

如上文在对Google和Netscape的比较中谈到的,互联|时代Y件的代表性特征就是它应该被作为服务来交付。这U事实导致这cd司的商业模式上很多根本性的变化?/p>

1. q营必须成ؓ(f)一U核?j)竞争力。Google或者Yahoo!在品开发方面的专门技术,必须同日常运营方面的专门技术相匚w。从软g作ؓ(f)刉品到Y件作为服务的变化是如此地Ҏ(gu)Q以至于软g不再能完成dQ除非每日加以维护。Google必须持箋抓取互联|ƈ更新其烦(ch)引,持箋滤掉链接垃圾和其他媄(jing)响其l果的东西,持箋q且动态地响应数千万异步的用户查询Qƈ同步地将q些查询同上下文相关的广告相匚w?/p>

所以,Google的系l管理、网l、和负蝲均衡技术,可能比其搜烦(ch)法更被严加看管Q也׃ؓ(f)奇了(jin)。Google在自动化q些步骤上的成功是其同竞争者相比更有成本优势的一个关键方面?/p>

同样也不ؓ(f)奇的是,像Perl、Python、PHP、和当前的Rubyq样的脚本语a在Web 2.0公司中扮演着重要角色。Sun公司的第一个网哈?#183;施罗PHassan SchroederQ曾对Perl有一个著名的形容Q?#8221;互联|的道胶带”Qthe duct tape of the internetQ。事实上Q动态语aQ常常被UCؓ(f)脚本语言Qƈ被Y件制品时代的软g工程师所贬低Q,是系l和|络理员,以及(qing)创徏可经常更新的动态系l的E序开发者们所喜爱的工兗?/p>

2. 用户必须被作为共同开发者来对待Q这是从对开放源码开发实늚一U反思中得出的(即便所涉及(qing)的Y件不太可能以开放源码授权方式来发行Q。开放源码的D “早发布ƈ常发?#8221;Qrelease early and release oftenQ事实上已经演变成一U更为极端的定位”永远的测试版”Qthe perpetual betaQ。其中品在开攄态下开发,新的功能以每月、每周、甚x天的速度被加入进来。Gmail、Google Maps、Flickr、del.icio.usQ和其他cM的服务,可能?x)在某个阶段打着试版的标识多年?/p>

故此Q实时地监测用户行ؓ(f)Q来考察哪些新特性被使用?jin),以?qing)如何被用的Q将成ؓ(f)另外一U必ȝ核心(j)竞争力。一位工作于一个主要在U服务网l商的开发者评论道Q?“我们每天在网站的某些部分提供两到三个新的Ҏ(gu),而且如果用户不采用它们,我们将其撤掉。如果用户喜Ƣ它们,我们将其推q到整个|站?#8221;

Flickr的d发师卡尔·亨d(Cal HendersonQ,q来透露?jin)他们是如何在短x半个时部|一个新版本的。显而易见,q是同传l方式有天壤之别的开发模式。虽然不是所有的|络E序都以像Flickrq样的极端方式来开发,但几乎所有网l程序都有一个同MPC或者客?服务器时代截然不同的开发周期。正因如此,ZDnet杂志才论断Microsoft不会(x)打|GoogleQ?#8221;Microsoft的商业模式依赖于每个人在每两Cq都升他们的计环境。Google的模式则依靠M人每天在其计环境中自行探烦(ch)Cѝ?#8221;

虽然Microsoft已经体现?jin)从竞争中学习(fn)ƈ最l做得最好的强大能力Q但是毫无疑问这一ơ的竞争要求MicrosoftQ可以扩展到M现存的Y件公司)(j)来成ZU在深入层面上显著有别的公司。天生的Web 2.0公司在n受自然而然的优势,因ؓ(f)它们不需要去摆脱陈旧的模式(?qing)其相应的商业模式和营收来源Q?/p>

5. 轻量型编E模?/strong>

一旦网l服务的观念深入人心(j)Q大型公司将以复杂的|络服务堆栈来加入到U争之中。这U网l服务堆栈被设计用来为分布式E序建立更可靠性的~程环境?/p>

但是Q就像互联网成功正是因ؓ(f)它推M(jin)许多文本理ZPRSS以完的设计来取代简单的实用MQ已l因其简单性而成为大概是应用最q泛的网l服务,而那些复杂的企业|络服务未能实现广泛的应用?/p>

cM圎ͼAmazon.com的网l服务有两种形式Q一U坚持SOAP(Simple Object Access ProtocolQ简单对象访问协议)(j)|络服务堆栈的Ş式主义;另一U则单地在HTTP协议之外提供XML数据Q这在轻量型方式中有时被UCؓ(f)REST QRepresentational State TransferQ代表性状态传输)(j)。虽然商业h(hun)值更高的B2Bq接Q例如那些在Amazon和一些像ToysRUsq样的零售伙伴之间的q接Q?SOAP堆栈Q但是根据Amazon的报道,95%的用来自于轻量型REST服务?/p>

同样的对易性的要求Q可以从其他”朴实?#8221;|络服务中见到。Googleq来的Google地图的推出就是一个例子。Google地图的简单AJAXQJavascript和XML的结合)(j)接口q速被E序高手们破译,被随卌一步将其数据؜合到新的服务之中?/p>

地图相关|络服务已经存在?jin)一D|_(d)例如像ESRI那样的GISQ地理信息系l)(j)Q以?qing)从MapQuest和Microsoft?MapPoint。但是Google地图以其z性而让世界兴奋h。虽然从前销售商所支持的网l服务都要求各方之间的正式约定,但Google地图的实现方式数据可以被捕P于是E序高手们很快就发现?jin)创造性地重用q些数据的方法?/p>

q里有几条重要的l验Q?/p>

  1. 支持允许松散l合pȝ的轻量型的编E模型。由企业开发的|络服务堆栈的复杂设计是用来?j)成紧密l合的。虽然这在许多情况下是必LQ但是许多最重要的应用程序可以事实上保持松散l合Q甚x脆弱的结合。Web 2.0的理念同传统的IT的理念E然不同?
  2. 考虑聚合QsyndicationQ而不是协调(coordinationQ。简单的|络服务Q例如RSS和基于REST的网l服务,是用来向外聚合数据,但ƈ不控制其辑ֈq接的另外一端时发生的事情。这U想法是互联|本w的基础Q一U对所谓端到端原则的反映?
  3. 可编E性和可؜合性设计。像最初的互联|一PRSS和AJAXq样的系l,都有此共同点Q重用的障碍非常低。许多有用的软g事实上是开放源码的Q而即便它不是Q也没有许多东西来保护其知识产权。互联网览器的”查看源文?#8221;选项Q得许多用户可以复制其他Q何用L(fng)|页QRSS被设计得使用戯够在需要的时候查看所需要的内容Q而不是按照信息提供者的要求Q最成功的网l服务,是那些最Ҏ(gu)采纳未被服务创徏者想到的新的方向。同更普遍的”保留所有权?#8221; Qall rights reservedQ相比,随着创作qU定而普?qing)?#8221;保留部分权利”QSome Rights ReservedQ一词成Z个有益的指\牌?

装配中的创新

轻量型商业模型是对轻量型~程和轻量型l合的一U自然物。Web 2.0的理念善于重用。一U像housingmaps.comq样的新服务Q是通过两个现存服务抓取到一h单地创徏h的?Housingmaps.comq没有商业模式(目前为止Q,但对于许多小规模的服务,Google的AdSenseQ或Amazon?associates fees计划Q或者两者都是)(j)为同cL务提供了(jin)营收模式?/p>

q些案例为Web 2.0的另外一个关键原则提供了(jin)启发Q我们将之称?#8221;装配中的创新”。当商品lg充裕Ӟ你可以通过以新颖的或者有效的方式来装配这些组件来创徏价倹{很像PC革命为硬件商品装配提供了(jin)许多创新的机?x),其中像Dellq样的公司创造了(jin)q种装配的科学,q从而打败了(jin)那些商业模式上要求品开发方面的创新的公司,我们怿Web 2.0为各个公司提供了(jin)Q通过在利用和整合由其他h提供的服务方面逐渐完善Q来赢得竞争的机?x)?/p>

6. 软g越单一讑֤

另外一个值得一提的Web 2.0Ҏ(gu)是Web 2.0已经不再局限于PCq_q样一个事实。在对Microsoft的告别徏议中Q长期的Microsoft开发者戴?#183;斯塔兹(Dave StutzQ指出:(x)”越单一讑֤而编写的有用软g在未来很长一D|间里获得更高的利?#8221;?/p>

当然QQ何的|络E序都可被视单一讑֤的Y件。毕竟,即便是最单的互联|程序也涉及(qing)臛_两台计算机:(x)一个负责网l服务器Q而另一个负责浏览器。而且如我们已经探讨q的Q在网l作为^台的开发中Q把q个概念拓展到由多台计算机提供的服务而组成的合成应用E序中?/p>

但是如同W(xu)eb 2.0的许多领域一P在那些领域中”2.0版的事物”Q?.0-nessQƈ不是全新的,而是对互联网q_真正潜能的一U更完美的实玎ͼ软g越单一讑֤q一说法赋予我们为新q_设计E序和服务的关键性的z察力?/p>

q今为止QiTunes是这一原则的最佌例。该E序无缝C掌上讑֤延到巨大的互联|后収ͼ其中PC扮演着一个本地缓存和控制站点的角艌Ӏ之前已l有许多互联网的内容带C备的试Q但是iPod/iTunesl合却是q类应用中第一个从开始就被设计用于跨多U设备的。TiVo则是另外一个不错的例子?/p>

iTunes和TiVo也体C(jin)Web 2.0的其他一些核?j)原则。它们本w都不是|络E序Q但都利用了(jin)互联|^台的力量Qɾ|络成ؓ(f)其体pM无缝q接的、几乎不可察觉的一部分。数据管理显然是它们所提供的h(hun)值的核心(j)。它们也是服务,而非打包的程序(虽然对于iTunes来说Q它可以被用作一个打包的E序来仅仅管理用h地的数据Q。不仅如此, TiVo和iTunes都展CZ(jin)一些集体智慧的方兴未艾的应用。虽然对于每个情况,其实验都是同|络IP入口的周旋。iTunes中只有有限的参与体系Q虽然近来增加的播客QpodcastingQ将q一规则规律性了(jin)不少?/p>

q正是我们希望看C大变革的Web 2.0领域中的一个,随着来多的设备正q接到这个新的^C来。当我们的电(sh)话和汽R虽不消费数据但却报告数据Ӟ可能?x)出C么样的程序呢Q实时的交通监、快闪暴走族Qflash mobsQ、以?qing)公民媒体,只不q是新^台的能力的几个早期警C?/p>

一Web 2.0的投资论?/strong>

风险投资家保|?#183;Ud|斯基(Paul Kedrosky Q写道:(x)”关键在于d找一U你p相左的,h可操作性的投资”。有的是,我们注意到Web 2.0的每个方面都涉及(qing)到同p的分歧:(x)每个人都在强调保持数据隐U的重要性,而Flickr/Napster{等Q却使其公开化。这q只是Z(jin)分歧而分歧(比如q求宠物食在U)(j)Q而是在可以从中创建出一些东西的地方发生分歧。Flickr~造了(jin)C֌QNapster创造了(jin)收藏的广度?/p>

另外一U看待这U现象的方式Q就是成功的公司都放弃了(jin)一些昂贵但被认为重要的东西Q以便免费获得一些有价值的曄昂贵q的东西。例如,l基癄全书攑ּ?jin)集中的~审控制Q以作ؓ(f)寚w度和广度的回报。Napster攑ּ?#8221;目录?#8221;的想法(列出所有销售商正在销售的歌曲Q,q因此获得了(jin)q度。Amazon 攑ּ?jin)用于一个实体店面的xQ却从而服务于整个世界。Google攑ּ?jin)大宗用P开始的时候)(j)Q却得到?0%的,其要求从前未被满的用户。下面的说法很有一些合气道Q借力打力Q的_Q?#8221;你知道,你是对的–整个世界的h都绝对可以更新这文章。而且你猜怎么着Q这对你是个坏消?#8221;?/p>

–内森·托克英顿QNat TorkingtonQ?/p>

7. 丰富的用户体?/strong>

最早可以追溯到1992q魏_(d)Pei WeiQ开发的Viola览器,互联|就被用来在|页览器中传?#8221;程?#8221;QappletQ和其他一些活动内宏V?995qJava的引入就是围l着q样的小E序的传送。JavaScript和后来的DHTML都被作ؓ(f)轻量型方式引入,来ؓ(f)客户端提供可~程性和丰富的用户体验。几q以前, Macromedia~造出”丰富的互联网应用E序”QRich Internet ApplicationsQ一词(该词也被Flash的竞争者开放源码的Laszlopȝ使用Q,以便凸显Flash不仅可传送多媒体内容Q而且可以?GUIQ图形用L(fng)面)(j)方式的应用程序体验?/p>

然而,互联|传递整个应用程序的潜能在Google引入Gmail之前Q一直没有成Z,紧接着是Google地图E序Q一些基于互联网的带有丰富用L(fng)面以?qing)PCE序{同的交互性的应用E序。在|络设计公司 Adaptive Path的耶希?詹姆?加莱特(Jesse James GarrettQ的一个讨Z(x)论文中,Google所使用的这l技术被命名为AJAX。他写道Q?/p>

Ajax不是一Ҏ(gu)术。它其实是几Ҏ(gu)术,每项技术自w都很繁荣,它们以强有力的全新方式结合v来。Ajax늛Q?/p>

  • q用XHTML和CSS实现Z各种标准的展C?
  • q用文档对象模型QDocument Object ModelQ实现动态显C和交互?
  • q用XML和XSLT实现数据交换和操作?
  • q用XMLHttpRequest实现异步数据(g)索?
  • JavaScript所有这些绑定到一赗?

AJAX也是Web 2.0E序的一个关键组Ӟ例如现在归属Yahoo!的FlickrQ?7signals的程序basecamp和backpackQ以?qing)其?GoogleE序Q例如Gmail和Orkut。我们正在步入一个史无前例的用户界面创新阶段Q因Z联网开发者们l于可以创徏Q像本地ZPC的应用程序一样丰富的|络E序?jin)?/p>

有趣的是Q许多现在正被探索的功能已经存在?jin)很多年了(jin)?0q代后期QMicrosoft?NetscapeQ都对现在终于被认识到的那些功能有所z察Q但是它们对于所要采用的标准的争斗,使得实现跨浏览器的应用程序变得困难。仅在当?Microsoft定无疑地赢得了(jin)览器之战的时候,而且那时事实上只需要针对一个浏览器标准Q编写这U程序才成ؓ(f)可能。同Ӟ虽然Firefox在浏览器?jng)场中重新引入?jin)竞争Q但臛_在目前我们还没有看到对互联网标准的破坏性的争夺以至于我们倒退?0q代?/p>

在接下来的几q中Q我们会(x)看到许多新的|络E序Q不仅确实是新颖的程序,而且是对PCE序丰富的网l再现。到目前为止Q每个^台的变革也都为改变那些在旧^C占主导地位的E序的领导地位创造了(jin)Z(x)?/p>

Gmail已经在电(sh)子邮件中提供?jin)一些有意思的创新Q将互联|的力量Q随处可讉K、深层的数据库能力、可搜烦(ch)性)(j)与在易用性方面同PC界面接近的用L(fng) 面相l合。同Ӟ PCq_上的其他邮gE序Q正在从另一端通过增添IM和呈现能力,来蚕食着q一领域。我们离集成通信客户端有多少q呢Q这些集成通信客户端应是整合了(jin)?sh)子邮g、即旉信和手机,q且应用VoIP以便向网l程序的丰富功能中添加语韌力。这U竞赛已l开始?/p>

我们也很Ҏ(gu)?到Web 2.0是如何重新打造地址的。一个Web 2.0风格的地址薄将把PC或电(sh)话上的本地地址,仅仅当作一U你昑ּ要求pȝ记忆的联pMh的缓存。同Ӟ一个基于互联网的Gmail风格的异步代理,保存发送或者接收的每个消息Q每个电(sh)子邮件地址和每个用过的电(sh)话号码,q且创造出C交|络的启发性算法,来决定当一个答案不能在本地~存中找到时Q应该提供哪个作为替代。在~少{案的情况下Q该pȝ?x)查询更qK的社交网l?/p>

一个Web 2.0的字处理E序会(x)支持l基风格的协作编辑,而不仅仅是处理独立的文档。但是该E序也会(x)支持我们期望在基于PC的字处理器中得到的U丰富格式。Writely是这U程序的一个优U范例Q虽然它?yu)未引vq泛x?/p>

此外QW(xu)eb 2.0革命不会(x)局限于PCE序。例如,在CRMq样的企业应用E序中,Salesforce.com展示?jin)网l是如何被用来以服务的方式来传递Y件的?/p>

Ҏ(gu)的进入者来_(d)竞争Z(x)在于充分开发Web 2.0的潜能。成功的公司创建可以向其用户学?fn)的E序Q利用可供参与的体系来徏立一U决定性的优势Q不仅在软g的界面方面,而且在共享数据的丰富E度斚w?/p>

Web 2.0公司的核?j)竞争?/strong>

在探索上qC大原则的q程中,我们已经?jin)Web 2.0的一些主要特性。我们探讨的每一个例子都体现着q些原则中的一个或多个Q但是可能不满其他的原则。因此,让我们通过ȝ我们认ؓ(f)是Web 2.0公司核心(j)竞争力的一些方面,来结束本文?/p>

  • 服务Q而不是打包的软gQ具有高成本效益的可伸羃性?
  • 控制独特的、难以再造的数据源,q且用户多内容丰富?
  • 把用户作为共同开发者来信Q?
  • 利用集体智慧?
  • 通过客户的自服务来发挥长力量?
  • 软g越单一讑֤?
  • 轻量型用L(fng)面、开发模式、和商业模式?

今后一个公司要宣称?#8221;Web 2.0″Q就要将其特性同上述列表相测试。越W合p名副其实。不q要CQ在某一个领域的卓越表现Q可能会(x)比对七大原则中的每个都浅则止,要更为有效?/p>

Web 2.0的设计模?/strong>

?#8221;模式语言”QA Pattern LanguageQ一书中Q克里斯多夫?亚历山大QChristopher AlexanderQؓ(f)_描述对于体系l构问题的解x案,开?jin)一U格式上的处斏V他写道Q?#8221;每个模式都描q着一U在我们的环境中一遍又一遍地出现的问题,q因此描qC(jin)对该问题的核?j)解x案。以此方式你可以使用该方案上百万ơ,而从不需要重复作同样的事情?#8221;

1. 长尾

型|站构成?jin)互联网内容的大部分内容Q细分市(jng)场构成了(jin)互联|的大部分可能的应用E序。所以,利用客户的自服务和算法上的数据管理来延到整个互联网Q到达边~而不仅仅是中?j),到达长尾而不仅仅是头部?/p>

2. 数据是下一个Intel Inside

应用E序来多地由数据驱动。因此:(x)得竞争优势,应设法拥有一个独特的Q难于再造的数据资源?/p>

3. 用户增添价?/p>

对互联网E序来说Q竞争优势的关键在于Q用户多大程度上?x)在你提供的数据中,d他们自己的数据。因而,不要你?#8221;参与的体p?#8221;局限于软g开发。要让你的用户们隐式和显式地Z的程序增Mh(hun)倹{?/p>

4. 默认的网l效?/p>

只有很小一部分用户?x)不嫌麻烦(ch)地Z的程序增Mh(hun)倹{因此:(x)要将默认讄得聚合用户的数据,成ؓ(f)用户使用E序的副产品?/p>

5. 一些权力保?/p>

知识产权保护限制?jin)重用也ȝ了(jin)实验。因而,在好处来自于集体智慧而不是私有约束的时候,应确认采用的门槛要低。遵循现存准则,q以可能少的限制来授权。设计程序之具备可~程性和可؜合性?/p>

6. 永远的测试版

当设备和E序q接C联网ӞE序已经不是软g作品?jin),它们是正在展开的服务。因此,不要各U新Ҏ(gu)都打包到集大成的发布版本中Q而应作ؓ(f)普通用户体 验的一部分来经常添加这些特性。吸引你的用h充当实时的测试者,q且记录q些服务以便?jin)解Z是如何用这些新Ҏ(gu)的?/p>

7. 合作Q而非控制

Web 2.0的程序是建立在合作性的数据服务|络之上的。因此:(x)提供|络服务界面和内容聚合,q用其他h的数据服务。支持允许松散结合系l的轻量型编E模型?/p>

8. 软g越单一讑֤

PC不再是互联网应用E序的唯一讉K讑֤Q而且局限于单一讑֤的程序的价值小于那些相q接的程序。因此:(x)从一开始就设计你的应用E序Q光成跨手持设备,PC机,和互联网服务器的多种服务?/p>

奥莱理媒体公司(O’Reilly Media Inc.) d兼CEO 提姆·奥莱理(Tim O’ReillyQ授权刊?国密西根大学资pY件分析师玄伟剑提供全文翻译?/strong>

节略版请参见1121期杂?/strong>



BlueSunshine 2008-03-05 10:50 发表评论
]]>
վ֩ģ壺 һ24޹˾| Ѹ| պѸƬ| ѵƵ| aëƬƵ| þþWWW˳ɾƷ| йһػƵƬ| ձ18| yellowվ| AVѹۿ| ƷѸ߹ۿ| ĻӰӰԺ߹ۿƵ| òƵѹۿ| 97Ƶѹۿ2| һ| ߹ۿAVƬ| ˬִ̼߳Ƶ| Ʒѿþþ| ĻAV߾Ʒѹۿ| **ëƬֱ߲| ձ޹һ| AVպAVþþ| ޶Ƶ߹ۿ| ޸һ| Ʒһ߹ۿ| ޾޴hdѿ| ѹվ߹ۿ| һƵ| Ƶһ| www޾Ʒٸһ | պëƬƵѿ| Ʒ˳վ| 51ƵƷȫ| һɫþһ| ޹Ʒ| þþž޾Ʒ| ۺϾƷ| Ʒվ | ޾Ʒ1ҳ| ޹Ʒþ| ɫҹƵ|