什么是ZK
利用ZK框架设计的web应用程序具备丰富的胖客户端特性和简单的设计模型。ZK包括一个基于AJAX可自动进行交互式操作的事件驱动引擎和一 套兼容XUL的组件。利用直观的事件驱动模型,你可以用具有XUL特性的组件来表示你的应用程序并通过由用户触发的监听事件来操作这些组件,就像开发桌面 应用程序一样简单。
关注GWT、ZK、extJs等框架很久了,这几个框架各有特色,也都是佼佼者。 GWT出身名门(google),大家闺秀,ZK来自台湾,小家碧玉,这两个框架,共同点就是都不用编写js代码,用Java开发,这对于饱受js折磨的 程序员来说是个福音。GWT、ZK不同点也很明显,前者是client centric的,后者是server centric的,孰优孰劣,网上争论一直不断。开发方面,ZK占优些(代码量少),其作者有一篇关于二者比较的文章。(据我所知,国内有公司采用ZK, 项目过亿)另外,extJs作为纯js的UI框架,在这个领域,称得上笑傲江湖,网上介绍很多,不再赘述。
ZK 是一个很优秀的AJAX框架,号称"Ajax framework without javascript",有点像GWT的实现,但是与GWT的完全桌面开发思想不同,它支持用ZUL,一种ZK的界面脚本来写界面,开发效率很高,界面也 很漂亮,具体的介绍可以去看看它的主页:http://www.zkoss.org。 但是很可惜的是,ZK目前还没有Eclipse的插件,但是利用MyEclipse提供的相关工具,我们可以创建一个差强人意的开发环境出来,本文就对此 环境的创建做了具体介绍,本文的环境是JDK6.o+Eclipse3.3+MyEclipse6.0M+ZK2.4.1。
首先,去http://www.zkoss.org下载最新版的ZK,目前是2.4.1,下载开发包以及demo,下载的开发包里有ZK的开发库,以及用到的库,还有一些扩展库,另外就是ZK的源码,其中开发包下的dist目录结构如下所示:
├─lib
│ │ zcommon.jar
│ │ zhtml.jar
│ │ zk.jar
│ │ zkplus.jar
│ │ zul.jar
│ │ zweb.jar
│ │
│ ├─ext
│ │ bsh.jar
│ │ commons-el.jar
│ │ commons-fileupload.jar
│ │ commons-io.jar
│ │ Filters.jar
│ │ groovy.jar
│ │ jcommon.jar
│ │ jfreechart.jar
│ │ jruby.jar
│ │ js.jar
│ │
│ └─zkforge
│ dojoz.jar
│ fckez.jar
│ gmapsz.jar
│ json_simple.jar
│ timelinez.jar
│
├─src
│ zcommon-sources.jar
│ zhtml-sources.jar
│ zk-sources.jar
│ zkplus-sources.jar
│ zul-sources.jar
│ zweb-sources.jar
│
├─WEB-INF
│ └─tld
│ ├─web
│ │ core.dsp.tld
│ │ html.dsp.tld
│ │
│ ├─zk
│ │ core.dsp.tld
│ │
│ └─zul
│ core.dsp.tld
│
└─xsd
zul.xsd
将这个目录下的所有文件都拷贝到一个专门的目录,(我一般喜欢把经常用到的第三方库放在一个专门的文件夹里,并且在eclipse里创建对应的user library),比如我放在d:/EclipseUserlib/ZK下。
第二步,创建用户自定义库。在eclipse里打开window->preferences->java->build path->user libraries,如下图所示:
如上图所示,点击New按钮可以创建一个新的用户库,点击建好的库后,激活Add Jars...按钮,可以添加这个用户库相关的jar包,这里我们创建三个用户库,即ZK Ajax Frame、ZK Ajax Framework Extendsion以及ZK Ajax Framework Forge Library三个,分别对应上面目录结构中的lib、ext以及zkforget。
点击Add,在弹出对话框里添加上面目录中的zul.xml到catalog中。
第五步,添加新的文件类型。打开window->preferences->general-content types
其中给Java Source File添加*.zs,给XML添加*.zul,给JSP添加*.dsp,给HTML添加*.zhtml。
如何利用此环境开发ZK应用,续