ZK项目是由4个人组成,利用Java平台开发出来的Ajax解决方案。ZK以thin client概念发展出服务器为中心(Server-Centric)的开发架构,强调不需撰写JavaScript,即可开发出具有Ajax丰富互动效果的网页型应用程序。

自从去年11月在全球最大的开放源码项目网站SourceForge发布以来,ZK的下载数量已经超过21万人次,下载国家突破180个,架构中的互动 讯息也被译成9种语言。目前报导过ZK的网络媒体、BLOG也超过1200篇。以公司别来看,下载ZK最多的企业分别是IBM、波音公司和Oracle, 而 IBM更是在网站发布了两篇技术专文,介绍如何将ZK应用在IBM的产品上。

台湾地区固然不乏优秀的软件团队与产品,但能以如此短的时间,在国际间受到如此大的注目,ZK团队可说是创下空前的记录。

为解决开发困境而促成ZK雏形
事实上,在开发ZK项目之前,方略信息就和许多软件厂商一样,透过自家开发的Web ERP软件,藉由项目导入的方式来维持公司营运。

方略信息投入二千万的资金,花了3、4年开发,当系统完成那一刻,他们自己都觉得完成了一件伟大的工程,向客户管理阶层展示系统时,也都获得不错的评价,然而到了实际操作的人员手里,事情就不对劲了。

实际使用ERP系统的人员,习惯桌面应用程序的操作习惯,面对Web接口,在操作上就是不顺手,因而提出种种修改要求,希望让Web接口尽量和旧有操作方式一致。

于是他们花了许多时间修改使用者接口,然而Web要能作到高度互动性效果,必须运用Ajax的方式,然而各家浏览器支持的语法不一,开发不但麻烦,出错机率也高。而且使用接口每家需求不一,程序代码重复利用性低,形成开发上相当大的成本。

由于开发团队具有thin client和大型系统的开发经验,于是他们想到:既然问题出在客户端,如果让服务器端来处理会如何?由服务器接手使用者接口,由特定组件处理浏览器的语 法差异,解决开发者容易出错的地方,并产生丰富的互动效果,这样一来,过去的问题就能迎刃而解。基于用户的需求、开发者的困境,以及灵光一现的各种想法, ZK的雏形于是诞生。

不需要撰写JavaScript的Ajax架构
ZK透过Java平台开发Ajax网页架构,是目前第一个采用服务器为中心的RIA解决方案。开发Ajax时,由于浏览器支持 JavaScript的情况各不相同,开发人员经常必须去处理这些异同或修正bug。为了解决这个困境, ZK将这部分的工作移给服务器端来处理,透过ZK引擎和组件,处理JavaScript的语法差异和网页互动组件生成,因此开发人员可以在不需要碰触 JavaScript的情况下,即可拥有稳定而丰富的互动接口。

另外,ZK也提供一组类似HTML的标示语言,但比HTML更为简洁易用,透过这套标示语言,网页设计师可以很快产生复杂的网站组件,例如拖拉式组件或将Google Map应用在网站中。

由于过去在使用者接口上吃了不少苦,ZK开发人员知道痛在哪里,在架构设计上就能从开发人员的需求上出发,简化开发的程序。

国际化才能让台湾软件公司可长可久
当ZK完成后,如何营销这个产品却是个问题。由于Web ERP的产品属性和营销经验,让他们体认到台湾地区的市场规模的限制。台湾地区市场规模小,使用者对软件的价值认知低,因此业者为了生产都最后只能削价竞争进行割喉战,导致最后恶性循环,市场越做越小。

经过内部讨论,大家都为Ajax的需求没有区域性的差别,因此适合国际化,但以4个人的小团队,的确也没有多余的人力和金钱能用在打造品牌和营销 通路上。以现实的条件评估,似乎只有透过开放源码的方式,才有机会接触到外面广大的市场。然而走开放源码的路,就等于放弃新产品立即获益机会,拉长整个获 益期待,更何况能否成功还是未定之天。但既然国际化是非走不可的路,也只能冒险一试。

在国际性的软件项目中名列前茅
ZK从2005年年初开始研发,到了11月15号完成,之后到全球最大的开放源码网站SourceForge上发表。4个月后,ZK在数十万的 项目中冲到第15名,这个成绩对开发团队来说,已经是很大的鼓舞,他们原本以为最好也不过停留在这样的程度了,没想到ZK下载数和讨论数量还是一直往上 冲,到今年7月终于站到排行榜上第一名。至今来自世界各地16万个开放源码项目中,他们几乎维持在前三名,如果是以企业级的应用软件排行来看,更是稳居 第一名。

如此出色的表现,让ZK成为亚洲目前最成功的开放源码项目,甚至放在全世界的软件竞技场来看,也毫不逊色。过去台湾地区开放源码项目多半集中在 Linux中文化,或是周边的东西,像ZK这种平台型的产品付之阙如。但平台型的产品其实相当适合开放源码的生态,因为个人端的应用程序,下载之后使用者 付费的机会相对较小,但平台型的软件多半是企业才会采用,为了合法使用的目的,付费的机会较高。

开放源码项目成败的关键在下载使用的社群,由于他们的目标使用者是Java开发人员,透过他们试用,觉得满意就有可能建议公司使用。透过这种口耳相传、由下而上的方式,ZK不断累积使用者与声誉。

撑住,钱就在下个转角
ZK团队评估一个开放源码项目必须撑3到5年才会有稳定收益,而在之前,产品的开发、改善动作仍然一刻不能停歇,只有熬过这段创业期,ZK才能像MySQL这类成功的例子,站稳脚跟。他们一位客户也因此鼓舞ZK,要他们「撑住,钱就在下个转角」。

开放源码产品的收益其实和商用软件一样,必须仰赖授权费用。美国商业周刊认为开放源码的使用者付费比率是2%,ZK团队认为这个数字还是过于 乐观,他们心目中的数字大约是0.2%~0.5%左右,也就是说1000个下载当中,只有2个人会掏出钱来,以取得合法使用授权。

由于开放源码的授权方式种类繁多,而他们和MySQL一样,采用双授权的方式,在同样开放源码的情况下,一般使用者可以复制、散布和修改,但如果商业使用 者不想公开源码,则必须付费取得授权。目前ZK的付费使用者,有SI厂商,也有财星500大的公司,以这种规模的公司,无论是开发给客户或 内部自行使用,都不愿意涉及违法使用的风险,而这些客源,就是ZK商机所在。

从ZK目前的成就来看,他们当初走国际化的策略的确奏效,透过互联网无国界的特性,成功地将台湾的软件开发智能与技术输出到世界各地。ZK的人 虽然少,但已经成功走向全世界,他们的故事,将可为台湾地区软件开发人员带来鼓舞,只要有优秀的技术和进军国际的决心,世界一样可以是台湾软件人的舞台.ZK: 它是什么

ZK是一个事件驱动(event-driven)的,基于组件(component-based)的,用以丰富网络程序中用户界面的框架。ZK包括一个基于AJAX事件驱动的引擎(engine),一套丰富的XUL和XHTML,以及一种被称为ZUML(ZK User Interface Markup Language,ZK用户界面标记语言)的标记语言。

有了ZK,您可以利用XUL和XHTML的丰富特性来呈现您的Web应用,操纵它们来处理因用户活动而引发的事件,就像在桌面应用程序中那样。不同于大多数其它框架,就ZK而言,AJAX是一种幕后(behind-the-scene)技术,组件内容的同步和流水线事件(pipelining of events)都由ZK引擎自动完成。

您的用户获得了如同桌面程序的互动性和反应能力,而您的开发仍然像开发桌面应用程序那样简单。

除了简单的模型和丰富的组件,ZK也支持一种文本标记语言,称为ZUML。ZUML,如同HTML,可以让开发人员设计界面而无需编程。通过XML的命名空间,ZUML无缝的集成了一套不同的标签[2]到同一页面。目前,ZUML支持两套标签,即XUL和HTML。

为了方便快速模型开发(prototyping)和定制,ZK允许开发人员嵌入EL表达式,以及您喜欢的脚本语言,包括但不限于 Java[3], JavaScript[4], Ruby[5] and Groovy[6]. 开发人员可以选择不嵌入任何脚本语言,如果他们喜欢更严格的要求(discipline)。不同于JavaScript嵌入在HTML,ZK在服务器端执行所有的嵌入脚本。

注意一切运行在服务器端是从应用程序开发者的角度出发的。组件开发人员必须平衡互动性与简单性来决定什么任务由浏览器来完成,而什么任务由服务器来完成。

ZK: 它不是什么

ZK并没有关注持久化(persistence)或伺服务器之间的沟通(inter-server communication)。ZK被设计的尽可能的简单,它只针对表示层(presentation tier)。他并不要求和暗示任何后端技术,所有你喜欢的中间件就像以前一样工作,如JDBC, Hibernate, Java Mail,EJB 或 JMS。

Zk并没有为开发人员提供(tunnel),RMI或其他的API用来在客户端与服务器端通信,因为所有的代码都运行在同一服务器的同一Java虚拟机(JVM)上。

ZK并没有强迫开发人员使用MVC或其他设计模式。是否使用它们由开发人员选择。

ZK并不是旨在把XUL带入Web应用的框架。它的目标是把桌面编程模式引入Web应用。目前,它只支持XUL和XHTML。将来它或许会支持XAML, Xquery及其它。

ZK将AJAX嵌入到了现今的应用中(implementation),但它并没有止步于AJAX结束的地方。在ZK Mobile中,您的应用程序可以到达支持J2ME的任何设备,例如PDA,手机和游戏平台。此外,您根本不用修改您的应用程序[7]

more:http://zh.zkoss.org/doc/devguide/