ZK Web框架6.0发布:新型数据绑定系统
fmms 13年前
<div id="news_body"> <p> <a href="/misc/goto?guid=4958335235348320069">Potix</a>,这家提供 <a href="/misc/goto?guid=4958335236141310435">ZK</a> 框架的公司最近发布了该基于 Java 的 Ajax Web 应用框架的<a href="/misc/goto?guid=4958335236940975468">6. 0 版</a>。ZK 是一款开源 Java 框架,使得开发者能够基于 Ajax(无需编写任何 JavaScript)来开发丰富的互联网应用。除了提供样例演示外,公司官方网站还罗列了几个<a href="/misc/goto?guid=4958335237735325764">现实生活</a>中使用 ZK 的应用。</p> <p> 和 <a href="/misc/goto?guid=4958335238546910207">Google Web Toolkit</a> 采用的方式类似,ZK 抽象了所有 JavaScript 和 HTML,开发者只需关注运行在服务器端的面向业务逻辑的 Java 代码即可。这可以通过实现一个在服务器端的事件引擎和一个在客户端(Web 浏览器)的 JavaScript 来达到。按这种方式,服务器端数据和客户端呈现之间的同步完全是自动的。开发者可以用自己熟悉的桌面框架(比如 Swing)事件模型来编写一个完整的应用。</p> <p> 这次最新版本中的改变包括:</p> <ul> <li>遵循 MVVM 模式的新型“ZK 绑定”系统</li> <li>运行在服务器端的 jQuery/CSS 3 风格选择器</li> <li>从 jQuery 1.4.x 升级到1.6.x(性能提高)</li> <li>高级模板</li> <li>面向 Servlet 3 异步处理的 ZK Comet 支持</li> <li>新组件(而弃用老组件)</li> <li>升级到 Java 5</li> <li>新的默认主题选择</li> </ul> <p> 其中最重要的一个改变是<a href="/misc/goto?guid=4958335239339831641">新型数据绑定系统</a>。ZK 遵循 <a href="/misc/goto?guid=4958318889056239799">Model View ViewModel</a> 模式(MVVM),这里的视图模型(ViewModel)层负责将模型(Model)中的值转化为视图(View),并且当视图被用户改变时,将其更新回模型。图形化用户界面由标记语言声明,该语言完全和模型(Model)中包含的数据分离。在 ZK 框架中被使用的标记称作 <a href="/misc/goto?guid=4958335240871924793">ZK 用户界面标记语言(ZUML)</a>,而真正的业务逻辑驻留在 Java 代码中。这里的一大原则就是 ZUML 能够被非编程人员编辑,这样就可以并行进行用户界面(UI)和 Java 代码的开发,从而提高效率。该模式并非 ZK 专属,其它大家熟知的例子包括 Mozilla 的 <a href="/misc/goto?guid=4958335241664656568">XUL</a> 和 Miscrosoft 的 <a href="/misc/goto?guid=4958335242463768698">XAML</a>。ZK 也支持通过 <a href="/misc/goto?guid=4958335243247330912">ZK Richlets</a>,使用纯 Java 来创建用户图形界面(GUIs)。</p> <p> “ZK 绑定”支持 <a href="/misc/goto?guid=4958335244058650359">EL</a>2. 2 表达式,使得可配置数据能够在 ZUML 图形化组件和服务器端 Java 对象之间传输(单向或双向)。直接支持在 <a href="/misc/goto?guid=4958335244842561937">CDI</a>、<a href="/misc/goto?guid=4958335245637255685">Seam</a> 或 <a href="/misc/goto?guid=4958335246440306819">Spring</a> beans 上的绑定。由于升级到 Java 5,允许在服务器端代码中使用泛型和类型安全。需要说明的是,对那些需要 ZK 5 的老式绑定系统,或目前还不想升级的用户来说,老版本仍然提供支持。</p> <p> 另一个要介绍的新特性是提供了面向<em>服务器端</em>Java 代码的 <a href="/misc/goto?guid=4958183315927359434">jQuery 风格选择器</a>。该功能给开发者提供了一种简洁又方便的方式来访问服务器端组件。下面是从 <a href="/misc/goto?guid=4958335247964985287">ZK 文档</a>中直接拿来的一个样例:</p> <blockquote> Window win; <p>// returns all components with id "myId" under the Window win. (including itself)</p> <p>Selectors.find (win, "#myId");</p> <p>// returns all components whose .getLabel () value is "zk" (if applicable)</p> <p>Selectors.find (page, "[label='zk']");</p> <p>// you can assemble the criteria:</p> <p>// returns all labels, whose parent is a window of id "win", and whose value is "zk"</p> <p>Selectors.find (page, "window#win > label[value='zk']");</p> </blockquote> <p> 最后,ZK 6.0 利用了 Servlet 3.0 规范中对异步请求的支持。这意味着可以使用每个请求对应一个线程(Thread-Per-Request)的实现方式,而非每个连接对应一个线程(Thread-Per-Connection)。由于线程在不需要时可以更频繁的循环使用,性能就会得到提高。</p> <p> ZK 6.0 的<a href="/misc/goto?guid=4958335248759015577">下载</a>包含多个<a href="/misc/goto?guid=4958335249569011458">版本</a>,这由其<a href="/misc/goto?guid=4958335250369828244">许可</a>决定。更多的信息可以通过<a href="/misc/goto?guid=4958335251162495639">参考文档</a>和 <a href="/misc/goto?guid=4958335251954004975">Javadocs</a> 来了解。源代码在 <a href="/misc/goto?guid=4958335252755546033">GitHub</a> 上可以得到。<a href="/misc/goto?guid=4958335253551096723">升级指导文档</a>也已经可用。</p> <p> <strong>查看英文原文:</strong><a href="/misc/goto?guid=4958335254351008814">ZK Web Framework 6.0 Released: New Data Binding System</a><br /> 来自: <a id="link_source2" href="/misc/goto?guid=4958335255141851467" target="_blank">InfoQ</a></p> </div>