Sunday, March 25, 2007

RIA数据服务之利器 - Livecycle Data Services 2.5 测试版发布

  据悉,Adobe® LiveCycle Data Services 2.5测试版已公开发布。新的LiveCycle Data Services是Adobe下一代企业级数据服务产品,起初是为Flex 2.0量身定做的(名为Flex Data Services 2.0),后来为了满足更广大的Ajax应用开发需求,进行了长足的扩展,进而成功地开启了新一代RIA数据服务产品的“蓝海”!

  从名字上来看,新的LDS应属于LiveCycle产品线的组成部分之一。LDS的发布方式和之前的FDS一样,即通过标准Java EE应用部署包的形式,也可以说是Java应用服务中间件之上的针对Flex和Ajax应用的数据服务中间件。采用这一方式在最大程度上减少了平台差异性,保证了产品的通用性。也正像技术评论文章“Adobe SOA platform launches Data Services”所分析的那样,Adobe这艘大船在SOA的演变进程中扮演着务实靠拢者的角色,并不时地展现了其出色的解决方案和出众的预见力。

  另根据官方的介绍,LiveCycle Data Services 2.5有以下主要特色:
  • A new Flex SDK (which will be released currently with Data Services 2.5), which includes updates the client-side Web Services library.
  • Server-side PDF generation capabilities for RIA applications generates properly formatted PDF documents that include graphical assets from Flex applications, such as graphs and charts.
  • Runtime configuration of data destinations in Data Services eliminates the need for a compile-time dependency between clients and the Data Services server configuration.
  • Support for WSRP portal deployment of Flex applications, which makes it easy for developers to deploy a Flex application as a portlet in a portal server without having to do any portal specific programming.
  • Per Client Messaging quality of service (QoS) allowing Flex clients to select custom data access policies for real- time data.
  • Ajax Data Services, enabling Ajax applications to take advantage of the data management and messaging capabilities available in Data Services.
  • The Flex-Ajax Bridge (FABridge), which is a small library that can be inserted into a Flex application, a Flex component, or even an empty SWF file to expose it to scripting in the browser without any additional coding.
  • Improved off-line message queuing, supporting future Apollo development, which allows Flex applications using Data Services to queue outbound messages locally when the client is offline and manage exactly what is sent to the server upon reconnect.
  • Groundwork for future Apollo application support, including a local data cache that enables developers to cache client data requests and data changes to the local file system for later retrieval when an application resumes.
  • RTMP tunneling (RTMPT) that allows the use of the RTMP protocol in Data Service applications to traverse firewalls and proxies that currently prevent direct RTMP client connections to the server.
  • A new SQL adaptor, which dramatically simplifies the development of applications using Data Management Services without having to write any server-side Java code.
  • A new JSP Tag Library that enables MXML and ActionScript code to be embedded into a JSP page providing an easier entry for J2EE developers to Flex programming.
  • Several important enhancements to core Data Services performance and scalability.
  不知道大家注意到了没有,新的LDS又再一次地将目光投向了对offline能力的支持(对于这一点,我曾在之前的一篇名为“Offline支持——Web的下一个热点!”的weblog中从web历史发展规律角度作过浅薄的分析),并且反复出现了对offline缓存和业务消息队列等方面的描述。从“future Apollo”的字样里可以猜到,Adobe对offline数据服务的支持正在和Apollo的开发同步进行着,随着之后的LDS和Apollo的相继正式发布,对offline特性支持的Web大战定会全面铺开!

William Cui 崔伟毅

Labels:

Monday, March 19, 2007

Apollo 1.0 预览版闪亮登场

  在万众RIA开发者期待的目光下,被业界寄予厚望的Apollo 1.0 预览版终于出现在了Adobe Labs站点上,并提供了针对Windows和Mac平台的运行时环境开发包示例以及相关的Apollo开发文档。一同发布开发参考资料还有Apollo 1.0速查手册和"Lynda.com"上的Apollo 1.0预览版视频系列教程,以下是Adobe官方给出的关于Apollo的宏观介绍:
Apollo is the code name for a cross-operating system runtime being developed by Adobe that allows developers to leverage their existing web development skills (Flash, Flex, HTML, JavaScript, Ajax) to build and deploy rich Internet applications (RIAs) to the desktop.

Apollo enables developers to create applications that combine the benefits of web applications – network and user connectivity, rich media content, ease of development, and broad reach – with the strengths of desktop applications – application interactions, local resource access, personal settings, powerful functionality, and rich interactive experiences.

Apollo enables familiar application interaction models, including drag-and-drop support, rich clipboard access, and desktop and system shortcuts. Furthermore, Apollo applications run as regular applications, and do not have to run within another application or shell (as web applications do by running within the browser).
  一般说来,Apollo是一个跨平台运行时,其自身包含了一个轻量级的基于WebKit渲染引擎的浏览器,使得HTML、JavaScript、Flash还有PDF等原本松耦合的RIA组成技术能够脱离于传统Web浏览器(以IE、Firefox、Opera和Safari等为代表),而在桌面进行online/offline地部署和运行。如果可以把传统的浏览器比喻成地球,那么顾名思义,Apollo将成为人类能够脱离浏览器引力,冲向更广阔的桌面级应用的发射器!

  关于脱离浏览器进行RIA实践的历史,可以追溯到早期的Java Web Start等技术,但那么多年过去了,除了一些企业内部应用之外,在Internet上为何仍旧很少看到它的广泛应用呢?这个问题的答案可以部分参考Bruce Eckel的“Hybridizing Java”一文(我也有一篇名为“从Thinking in Java到Thinking in Flex”的weblog对此话题进行了介绍和评论)。我尝试着把Java在这方面的失败归咎为三点:
  1. 语言运行时不够轻量化,阻碍了广泛传播和更新;
  2. 表现层渲染效果不尽如人意,无法提供完美的用户体验;
  3. 基于证书的沙盒机制带来潜在的安全风险,影响其被信任和接受。
  反过来再想想近些年基于浏览器的Web应用得以如此热火朝天、欣欣向荣的原因,就我的分析和思考来看,历史经验似乎表明:

  Web应用技术的成功=一个功能强大且无处不在的渲染引擎+一个可以信赖又可以支持复杂交互的安全机制。前者是吸引眼球的利器,后者是保障安全的基石!

  让我们来看看这刚出炉的Apollo预览版在这些方面做的努力吧:
  • 渲染引擎:可以同时支持Ajax + Flex应用的WebKit + Flash渲染引擎组合。在Flash的渲染方面自然是它的老本行,效果和速度都很令人满意。但是更值得一探究竟的HTML渲染能力却是让人稍有失望,无论是速度还是渲染准确度和效果等方面都有待提高(特别是在东方国家字体的表现方面,可以参见下面的截图,这似乎是Flash一贯的顽疾,而并不能简单归咎于Apollo之过)。当然,对于尚在紧锣密鼓持续研发中的产品预览版来说,总体效果还是非常好的,这已经是很大的成就了。相信在今后的版本中,Adobe定会对其进一步优化。
  • 安全机制:对于Apollo和桌面操作系统的复杂交互能力还在探索中,不便过多评论,至少就目前接触到的从Web下载、安装部署到运行Apollo应用的这个过程来看,我发现其还是采用了类似于Java Web Start那样的证书授权安全访问机制。由于Apollo应用的发布和部署是以AIR打包文件为载体的,因此便于通过各种途径进行传播,由之而来的安全性、完整性验证等一系列问题的相关策略等也尚不明朗,只能有待于后续版本的完善和调整吧。
William Cui 崔伟毅

Labels:

Sunday, March 18, 2007

漫谈“软件专利保护”

  近日,我注意到以下两则“专利保护”方面的新闻或消息:
美国圣地亚哥联邦法庭裁定微软公司侵犯了阿尔卡特-朗讯(Alcatel-Lucent)公司的两项MP3相关专利权,要求其赔偿15.2亿美元的损失。这两项专利主要涵盖了将音频信号编码、解码为MP3格式文件的技术。有关专家表示,阿尔卡特-朗讯的这一胜利会使得更多公司成为其起诉对象。
美国专利商标局(US Patent and Trademark Office: USPTO)准备启动一个吸取了Web 2.0理念的试验性项目,在现有的将专利申请在Web上公开化并允许评论的基础上,进一步引入类似于Wiki的社区内容评分机制,使得最受认可的评论有机会浮出水面,从而成为能够辅助和影响专利审察官进行专利授权决策的重要因素之一。
  何谓专利权(Patents),它和知识产权(Intellectual Property: IP)有什么区别呢?据我所知,专利权是在一定期限内对专利发明人权利的保护;而知识产权除了包括专利权之外,还包括商标权、著作权等内容(若认识有误,请给予纠正)。

  对于软件专利的保护,每个国家和地区的法律很不一致:在中国,软件专利是不受法律保护的;在美国,软件专利得到了最大程度的法律保护;在欧洲,有相关的法律,但难成气候……

  联系以上两则新闻和消息,和其他所有的专利保护一样,软件专利保护也可以从技术和制度两方面来谈:
  • 微软此次受罚据说是由于在其Windows Media Player中采用了朗讯公司所有MP3编码和解码专利技术,这着实令人苦笑。大家都知道,MP3技术的应用已经有相当长一段时间了,虽然还没超过20年的专利保护期。朗讯能把这样一个老技术专利翻出来找微软算帐并获得成功,不难看出专利制度的能量。而与此同时,微软一再反驳说其很早就已从德国某研究所那里花费一千多万美元取得了该相关技术使用的授权。从中可见,由于专利制度的非国际一致性,为了获得最大的技术和利益保护,还是不得不在各个国家和地区都进行重复申请。
  • 就所列举的USPTO的一系列革命性探索来看,美国专利商标局正在使Web 2.0为其所用。其核心思想是将传统的中央集中化决策向民主集中化决策转变,而类Wiki的社区系统正是实现这一转变的有利途径之一。这一制度的革新,如果能够持久下去,必将有助于建立一个更加“公平、公正、公开”的专利权保护环境,而其专利商标局则会更多地履行监管决策那只“无形的手”的职责。
  在去年,我(发明人)通过公司(所有人)向美国专利商标局提交了我的第一份软件专利申请,因此有机会亲身体验了一下这个“神秘”流程的部分情况,也为以后的申请投石问路了一把。总体来讲,由于公司特约专利律师的全方位配合,该软件专利申请的流程没有我想象中的那么复杂。不过目前,该申请还在进行中,尚未在USPTO网站上公布,因此不便透露其中细节。

  关于“软件专利保护”这一方面的话题以及一些值得关注的美国软件专利和专利申请,我将会进一步介绍并希望得到大家的反馈,敬请期待,谢谢。

William Cui 崔伟毅

Labels:

Wednesday, March 14, 2007

Offline支持——Web的下一个热点!

  回顾近十年的Web技术和应用,和历史上其他很多事物一样,多是有一些有趣的潜在发展规律的,值得整理如下:
  • 随着上世纪末Web浏览器(以Netscape Navigator和Microsoft IE的浏览器大战为代表)的普及,基于B/S架构的Web应用开始流行起来,对传统的基于C/S架构的胖客户端应用带来了冲击。由于起初的一系列Web标准(HTML, CSS, JavaScript等)只是为瘦客户端所设计的,为了满足不断增长的Web应用需求,各大浏览器阵营陆陆续续增加了富有自己特色的扩展实现(诸如DHTML, XHR, IE扩展, css-ie, css-mozilla等),于是整个Web实现越来越混乱,一直到某天人们终于开始意识到Web标准的重要性了才开始重新走上正轨。

  • 进入本世纪后,以Google提供的为代表的一些基于Ajax的“新”应用开始重新引起了大家的关注。Ajax是一个典型的新瓶装旧酒的例子,一堆过时技术绝处逢生诞生了一个新的Web应用时代。正当传统的基于HTML渲染的Web表现层应用占据绝大部分江山的时候,另一个原来由Web动画发家的基于Flash渲染的应用来势凶猛,凭借其超强的用户体验和“无处不在”的Flash播放器,正以迅雷不及掩耳之势(Macromedia对Flash普及功不可没,而当时的Microsoft还在睡觉呢,对Flash的未来错误估计了)越来越受到了最广大人民群众的欢迎。自从Flash的接力棒从Macromedia手中传递到新的Adobe公司后,以Flex, Apollo为代表的新应用这股热浪有愈演愈烈之势。

  • 大约在两三年前,可能由于在Web运作理念和表现层体验等方面的创新数量不断膨胀,为了和原来迂腐陈旧的老Web划清界限,有人把这些新的东西叫做“Web 2.0”(其实从技术角度上来说还是换汤不换药),自从那以后,便一发不可收拾,一系列冠以Web 2.0光环的应用如雨后春笋般呼之欲出,再加上风险投资的一路热捧,一场新革命就这样开始了。

  • 当人们已经逐渐习惯于甚至离不开基于B/S的online Web应用时(犹以Gmail,Google Docs, Google Spreadsheets为例),抱怨的声音也慢慢多了起来,比如网络连接的客观问题(如自然地震)影响了重要资料的访问,网络的主观临时中断(如飞机起飞降落时)使得工作无法继续等等。在这样那样的抱怨过后,有人开始想念传统的桌面应用之不依赖于网络的特性了,比如Microsoft Outlook, Word, Excel。自然而然地,新的Web应用需求诞生了:用户希望接下来的Web应用既要有Gmail的online好处,又要具有像Outlook那样offline也可以继续工作的优势,但前提是客户端尽量不要装任何额外软件(当然浏览器和Flash播放器之类的除外)。
  如今,种种迹象已经可以是我们感觉:对offline的支持,将很快成为Web应用的下一个技术热点了!记得去年早些时候我和周围朋友这样预测的时候,当中的绝大多数不以为然,摇头对我说:历史已经从C/S跨到B/S了,怎么可能再回过去呢?诚然,他们说的也对,历史是不可能回去的,但需求的升级会从历史发展中诞生新的技术应用,又有谁知道会不会再出来个B/S 2.0或者C/S 2.0呢?这样的例子已经屡见不鲜了。

  文末,让我来列出以下几个值得关注的offline技术应用动向:
  • Adobe Apollo
  • Mozilla XULRunner
  • Dojo Offline Toolkit
  • Firefox 3 offline cache
  另注:此类技术,似乎大都把重点放在了offline的cache存储机制上,而很少或者没有涉及复杂的offline业务逻辑(比如offline的业务规则引擎、业务数据同步机制等等)。这些尚未开发的领域会不会是下一个重点呢?因为一旦开了这个online/offline的口子,用户的需求总是会步步跟进的,这个的挑战无疑更加严峻,真是追求永无止尽啊……让我们拭目以待。

William Cui 崔伟毅

Labels: , ,

Saturday, March 10, 2007

Google轻量级"依赖注入"框架Guice 1.0开源发布

  上周,Google将其内部使用的轻量级“依赖注入”(Dependency Injection)框架Guice 1.0版本在Google Code Project上开源发布了。

  Guice(发音同juice,即果汁)是针对Java 5以及之后的版本来开发的,大量应用了基于注解(annotations)和泛型(generics)编程特性,使得代码的开发量和重复工作大大减少。

  初看了一下Guice,觉得值得研究关注一下的地方有:支持任意输入参数的构造器、类成员和方法的依赖注入;灵活的自定义注入范围(scope)和循环依赖;与Spring,Struts的集成支持;面向方面编程(AOP)的类方法拦截器支持等等。

  先抛开Guice不谈,从我的平时实践经历上来说,Java 5之后带来的特性,诸如泛型、枚举型、新for循环、静态常量import等都用的非常多了,但是annotations这一块用得倒真的不是很多,仅仅限于一些标准的使用,而没有从自定义annotations的角度来尝试一下如何提高开发和配置效率呢。究其原因,也可能是我觉得很多东西大家把development guidelines定下来后,各自遵守应用就行了,但随着重构进行和持续变化,的确有些时候重复地做了一些大同小异的事情,从而导致有些小小的混乱了。因此,接下来倒也是可以考虑来借鉴着做点这方面的小尝试吧。

  再来说说“依赖注入”,记得很早之前Martin Fowler就写过一篇模式分析的文章,题为“Inversion of Control Containers and the Dependency Injection pattern”,推荐一看。万变不离其宗,这一系列相关的模式以及框架,大都还是围绕着“灵活松耦合”这个核心展开的。这个在我们的日常开发设计过程中的确也是反复地被实践应用着,但大都是手工实现的,基本没有采用那些所谓的轻量级框架(这有主观的,也有客观的原因)。诚然,这样手工的反复实现和改动的确会带来开发效率和清晰性的欠缺,但从另外一方面来讲,其运行时执行和调试的效率也无疑又是比较令人满意的了。最后,还是归结到一个“折衷”的问题,即一个框架是否“适用”或者说有无必要研究借鉴并重新“定制”实现要取决于实际情况。

William Cui 崔伟毅

Labels: ,

Sunday, March 4, 2007

由“您的应用是否真的需要Flex?”所想到的...

  昨天看到一篇题为“您的应用是否真的需要Flex?”的文章,话题是由一个基于Flex开发的“妙句网”应用展开的,作者在文末总结认为“因地制宜”地进行RIA技术开发选型才是正道,暂且不评论其中的是是非非,但似乎都可以归结到一个软件工程和计算机科学的基本原理,那就是“折衷”(Trade-off)的思想。

  回想一下在大学计算机基础课的学习过程中,Trade-off一词无数次地出现在国外的经典教科书中:
  • 时间和空间的折衷(Time vs. Space),这几乎覆盖了所有计算机硬件和软件领域,例如算法时间和空间复杂度,缓存/缓冲区的思想等等。
  • 效果和效率的折衷(Effectiveness vs. Efficiency),这在人工智能,专家系统,搜索排序还有信息安全等和性能密切相关的领域有着广泛的应用。
  • 复用性和复杂性的折衷(Reusability vs. Complexity),这个原理在面向对象分析设计,软件架构设计模式等软件工程应用领域有着极为深远的意义。
  由此还让我想起了Microsoft出版的“Framework Design Guidelines(.NET设计规范)”一书中总结出来的一句话:“Well-Designed Frameworks Are Full of Trade-Offs.(好的框架处处充满了折衷的思想)”。

  更进一步地,如果我们站在人类社会层次上来看这个问题,纵观东西方的文化和社会发展的历史,也或多或少地反映出了折衷的基本原理。以两位东西方思想之集大成者为代表:
  • 孔子:“中庸之道”是东方传统儒家思想的核心概念,也可以说是孔子思想的精髓所在。在某种程度上来看,“中庸”也是一种折衷,“过犹不及”不也正是表明了要在“过”和“不及”之间取一个折衷的解决方案么?
  • 亚里士多德:由中产阶级执政的“共和”政体在亚里士多德看来是保证理想城邦稳定以及和谐发展的最好政体。之所以选择中产阶级,而不是绝大多数的平民或者极少数的寡头阶级,这大概也正是一种折衷思想的体现吧。
  仔细想想,从一个RIA技术开发的选型一直可以引申到最深层次的人类社会普遍存在的哲学问题,又使我突然对以西方为代表的现代大学教育体系和学位设置有了一点感悟。众所周知,所有的博士学位都统称为Ph.D,意为在某一领域的哲学博士学位。可见,是不是说,如果要有资格拿到博士学位,就意味着要在某个领域研究感悟出了源于这个专业领域但大大高于这个领域的,对人类社会发展普遍适用的哲学思想或真理呢?

  以上是我的一点感悟,所引伸出来的文史资料由于时间关系,没有经过特别的考证,如有疏漏偏颇之处还请不吝批评指正,谢谢!

William Cui 崔伟毅

Labels: ,

Saturday, March 3, 2007

SAP @ 德国汉诺威CeBIT 2007展会

  根据官方消息,在3月15日-21日举办的德国汉诺威CeBIT 2007展会上,SAP将展示最新的针对中型企业市场的All-in-One解决方案。

  新的解决方案在更灵活、简化的用户采纳和更快速的实施等方面有了巨大的改进和增强,以使中型企业客户和SAP合作伙伴能共同受益于enterprise SOA

  更多信息,请留意SAP Deutschland | CeBIT 2007CeBIT的德语和英语官方网站。

  (注:以下是个人陈述,不代表官方内容和观点。)

  很有幸的是,我从上周开始接触了这次展会的一小部分技术准备工作,主要是进一步将Rich Internet Applications和企业业务服务进行集成,以达到用户体验和敏捷业务的优化组合。

  此外,可以预测,对于各个解决方案供应商来说,如何在努力降低总体拥有成本(TCO:Total Cost of Ownership)的同时,最大化地提高总体客户体验(TCE:Total Customer Experience)可能将会成为下一个影响用户采纳性的重要因素。

p.s. 在这一领域,无疑Adobe走在了领先的位置。另据预计,Apollo的第一个预览版很快将在开发社区公布,而随之又一轮新的技术应用浪潮正在向我们席卷而来。

  就这一方面话题,在以后的weblog中我会进一步展开,请继续关注,谢谢!

William Cui 崔伟毅

Labels: