﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Tommy Jian 的博客-随笔分类-Wicket</title><link>http://www.blogjava.net/tommyjian/category/23099.html</link><description>生活就是一个目标，接着一个目标。</description><language>zh-cn</language><lastBuildDate>Mon, 02 Jul 2007 13:03:18 GMT</lastBuildDate><pubDate>Mon, 02 Jul 2007 13:03:18 GMT</pubDate><ttl>60</ttl><item><title>Wicket 1.3.0 BETA 2 发布了</title><link>http://www.blogjava.net/tommyjian/archive/2007/07/02/127417.html</link><dc:creator>Tommy Jian</dc:creator><author>Tommy Jian</author><pubDate>Mon, 02 Jul 2007 00:21:00 GMT</pubDate><guid>http://www.blogjava.net/tommyjian/archive/2007/07/02/127417.html</guid><wfw:comment>http://www.blogjava.net/tommyjian/comments/127417.html</wfw:comment><comments>http://www.blogjava.net/tommyjian/archive/2007/07/02/127417.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tommyjian/comments/commentRss/127417.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tommyjian/services/trackbacks/127417.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;Wicket项目已经从Apache孵化器毕业了，开发进度好像也加快了，这不1.3.0 BETA 2版本很快发布了，请看<a  href="http://wicket.sourceforge.net/">Wicket的官方站点</a>，可以到<a  href="http://www.apache.org/dyn/closer.cgi/wicket/1.3.0-beta2/">这里</a>下载。</p><img src ="http://www.blogjava.net/tommyjian/aggbug/127417.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tommyjian/" target="_blank">Tommy Jian</a> 2007-07-02 08:21 <a href="http://www.blogjava.net/tommyjian/archive/2007/07/02/127417.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>翻译：为什么是Wicket（All In One）</title><link>http://www.blogjava.net/tommyjian/archive/2007/06/10/123202.html</link><dc:creator>Tommy Jian</dc:creator><author>Tommy Jian</author><pubDate>Sun, 10 Jun 2007 08:49:00 GMT</pubDate><guid>http://www.blogjava.net/tommyjian/archive/2007/06/10/123202.html</guid><wfw:comment>http://www.blogjava.net/tommyjian/comments/123202.html</wfw:comment><comments>http://www.blogjava.net/tommyjian/archive/2007/06/10/123202.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tommyjian/comments/commentRss/123202.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tommyjian/services/trackbacks/123202.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;这两天把Jonathan Locke编写的《Why Wikcet?》，今天把四部分汇总集中以下方便大家的阅读，下面是这四部分译文的链接地址：&nbsp;</p>
&nbsp;
<ol>
    <li><a href="http://www.blogjava.net/tommyjian/archive/2007/06/07/122485.html"> 翻译：为什么是Wicket（一）</a></li>
    &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;
    <li><a href="http://www.blogjava.net/tommyjian/archive/2007/06/07/122641.html"> 翻译：为什么是Wicket（二）</a></li>
    &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;
    <li><a href="http://www.blogjava.net/tommyjian/archive/2007/06/08/122756.html"> 翻译：为什么是Wicket（三）</a></li>
    &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;
    <li><a href="http://www.blogjava.net/tommyjian/archive/2007/06/08/122818.html"> 翻译：为什么是Wicket（四）</a></li>
    &nbsp;&nbsp; &nbsp;</ol>
    <p>&nbsp;&nbsp;&nbsp;在网上寻了半天，已经有兄弟就Wikcet做了很多工作，请到<a href="http://gocom.primeton.com/modules/newbb/viewforum41.htm">这里</a>看看。</p>
    <p>&nbsp;&nbsp;&nbsp;因为链接地址还是以前保存的，今天试了试好像总是出错，所以索性就把下载得到的《Wikcet 开发指南》上载来和大家分享共勉吧！不过，相关权利都属于此文档的译者，大家都只作为学习之用就好了，下面是分卷文件的下载地址：</p>
    <ol>
        <li><a href="http://www.blogjava.net/Files/tommyjian/Wicket%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97.part1.rar">《Wikcet 开发指南》分卷一</a></li>
        <li><a href="http://www.blogjava.net/Files/tommyjian/Wicket%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97.part2.rar">《Wikcet 开发指南》分卷二</a></li>
    </ol><img src ="http://www.blogjava.net/tommyjian/aggbug/123202.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tommyjian/" target="_blank">Tommy Jian</a> 2007-06-10 16:49 <a href="http://www.blogjava.net/tommyjian/archive/2007/06/10/123202.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>翻译：为什么是Wicket（四）</title><link>http://www.blogjava.net/tommyjian/archive/2007/06/08/122818.html</link><dc:creator>Tommy Jian</dc:creator><author>Tommy Jian</author><pubDate>Fri, 08 Jun 2007 04:35:00 GMT</pubDate><guid>http://www.blogjava.net/tommyjian/archive/2007/06/08/122818.html</guid><wfw:comment>http://www.blogjava.net/tommyjian/comments/122818.html</wfw:comment><comments>http://www.blogjava.net/tommyjian/archive/2007/06/08/122818.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/tommyjian/comments/commentRss/122818.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tommyjian/services/trackbacks/122818.html</trackback:ping><description><![CDATA[<p><strong>目标</strong></p>
<p>基于上面的这些动机，下面是Wicket的目标：</p>
<ol>
    <li>简单（易用性、一致性、易懂性）</li>
    <ul>
        <li>&nbsp; 以POJO为核心</li>
        <li>所有代码均使用Java编写</li>
        <li> 最小的概念域</li>
        <li>避免过度地使用XML配置文件</li>
        <li>全面解决&#8220;向后按钮&#8221;问题</li>
        <li> 最大限度地类型安全以及编译检查</li>
        <li> 最大限度地分析运行时错误</li>
        <li>对特定工具集的最小依赖</li>
        <li>组件、容器和惯例始终保持一致性</li>
    </ul>
    <li>复用</li>
    <ul>
        <li>使用Wicket编制的组件具备高度的复用性</li>
        <li> 可复用的组件可以使用JAR文件发布</li>
    </ul>
    <li>无侵入</li>
    <ul>
        <li> HTML以及其他标记性文件不会编程语法所干涉</li>
        <li> 在标记方面只有一个简单的标签</li>
        <li>&nbsp; 与任何普通的HTML编辑器兼容</li>
        <li>&nbsp; 图形开发人员很容易识别并避免修改框架标签</li>
        <li>&nbsp; 如果设计者不小心删除了标签，则很容易恢复它</li>
    </ul>
    <li> 安全</li>
    <ul>
        <li> 默认情况下代码都是安全的</li>
        <li>在页面和URL中，只有显式的声明的链接才能公布数据状态</li>
        <li>具备最大限度类型安全逻辑</li>
        <li>很容易集成到Java安全框架</li>
    </ul>
    <li>富有效率，可伸缩性</li>
    <ul>
        <li>在不牺牲其他目标的前提下保证效率和轻量级</li>
        <li> 可依附的优选会话期支持集群</li>
        <li>通过与可分离模型的协作，会话复制形成的集群很容易实现和调整</li>
    </ul>
    <li>完整</li>
    <ul>
        <li> Wicket团队乐于为开发Java Web应用贡献可用的且特性齐全的框架。核心框架是由本篇文档的作者Jonathan Locke编写和贡献的。目前的团队包括了很多经验丰富的程序员，他们中的一些人还是上面提及的其他框架的开发者，他们也都拥有构建大型Java Web应用的经验。我们对自己的处境十分的了解，因此也更能从框架使用者的角度来开发Wicket。</li>
    </ul>
</ol>
<hr>
<p><strong>注：本文由Jonathan Locke编写,相关权利由原作者享有。</strong></p><img src ="http://www.blogjava.net/tommyjian/aggbug/122818.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tommyjian/" target="_blank">Tommy Jian</a> 2007-06-08 12:35 <a href="http://www.blogjava.net/tommyjian/archive/2007/06/08/122818.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>翻译：为什么是Wicket（三）</title><link>http://www.blogjava.net/tommyjian/archive/2007/06/08/122756.html</link><dc:creator>Tommy Jian</dc:creator><author>Tommy Jian</author><pubDate>Thu, 07 Jun 2007 23:55:00 GMT</pubDate><guid>http://www.blogjava.net/tommyjian/archive/2007/06/08/122756.html</guid><wfw:comment>http://www.blogjava.net/tommyjian/comments/122756.html</wfw:comment><comments>http://www.blogjava.net/tommyjian/archive/2007/06/08/122756.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/tommyjian/comments/commentRss/122756.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tommyjian/services/trackbacks/122756.html</trackback:ping><description><![CDATA[<p><strong>大部分现存的框架需要特定的HTML代码</strong></p>
<p>&nbsp;&nbsp;&nbsp; JSP具有最深的侵入性，它允许将Java代码直接嵌入Web页面中。但是，上面列示的框架（除了Tapestry）都不同程度地针对HTML代码引入了特殊的语法。</p>
<p>&nbsp;&nbsp;&nbsp; 因为特殊语法改变了单纯而简单的HTML标记的实质，而Web设计者对于这一点是十分的熟悉，所以特殊语法并不是十分得人心。而且预览、编辑和理解这种包含特殊语法的HTML也是十分困难的事情。</p>
<p>&nbsp;&nbsp;&nbsp; Wicket并没引入任何新的HTML语法。相反，它通过Wicket命名空间（namespace）的标准兼容方式扩展了HTML，这完全兼容XHTML标准。这意味这您可以使用Macromedia Dreamweaver、Microsoft Frontpage、Word、Adobe Go Live以及其他现有的HTML编辑器来编辑您的Web页面，并且可以和Wicket的组件协同工作。为了实现这个目标，Wicket始终在Wicket命名空间内使用单个id属性（&#8220;wicket:id&#8221;）来标识那些需要框架进行特殊处理的标签。如果您并不喜欢将有Wicket命名空间修饰的标签和属性展示给您的最终用户，通过简单的设置就可以完全消除它们，从而得到普通的与标准兼容的HTML代码。</p>
<p>&nbsp;&nbsp;&nbsp; HTML中没有特殊的语法意味着设计者可以直接模拟页面，而您可以在开发的过程中直接使用这些页面。向HTML页面中添加Java组件就和设置组件的名称属性一样简单。然后，您可以直接将这些页面交给Web设计人员，他们可以充满信心地对其进行修改。</p>
<p>&nbsp;&nbsp;&nbsp; 与其他的应用框架相比，Wicket在各方面的分离上提供更多的支持。Web设计者在对应用程序代码不甚了解的情况下就可以编辑HTML（当然，他们不能移除组件名称标签，而且不能任意改变组件嵌套的层次，其他的事情都是可以的）。另一方面，编程者只需要关注与HTML混在一起的Java组件，而不需要了解页面的最终陈现是什么样子。通过这种职能清楚的工作方式，每个人都可以工作得更为顺畅。</p>
<p><strong>现存的框架易用性不好</strong></p>
<p>&nbsp;&nbsp;&nbsp; 目前存在的大部分框架工具在对象模型方面做得不够。在一些框架中，对象模型是通过特定的XML来定义的。这些语法令人生厌，而且还需要特定的工具来编辑这些配置信息。由于这些框架并不是单一的Java类库，您就不能使用包含编辑器、调试器和编译器的IDE工具来编辑它们。</p>
<p>&nbsp;&nbsp;&nbsp; Wicket是化繁为简的代表。在学习Wicket的过程中不需要了解任何配置文件。Wicket就是组件结构良好的普通的类库。在Wicket中，您的Web应用程序与普通的Swing应用程序类似，而不是JSP应用程序。如果您熟悉Java（特别是如果您熟悉Swing），那么您就已经对Wicket有不少的了解了。</p>
<p><strong>现存的框架可复用性不好</strong></p>
<p>&nbsp;&nbsp;&nbsp; Tapestry和JSF虽然有可以重用的组件模型，但是您将发现与Wicket相比这并不是特别容易做到的事情。Wicket从设计之初就十分地注重组件的复用。在Wicket中，从现有的组件扩展编制诸如SignInPanel或者AddressForm的复合组件是十分简单的事情。相对来说，针对浏览器的新特性编制新的组件也是十分容易的事情。Wicket的组件可以使用JAR格式进行打包，直接通过库引用的方式就可以实现重用——不需要任何配置文件！</p>
<p>&nbsp;&nbsp;&nbsp; Web编程应该更关注编程乐趣！</p>
<p>&nbsp;&nbsp;&nbsp; 这就是我编写Wicket的个人方面的目标。现存的框架在实现开发的直接性、快捷性和简易性方面真正地吸引我。我希望Wicket在Web应用程序开发的建议性和乐趣方面能够迈出重要的一步。</p>
<hr>
<p><strong>&nbsp;&nbsp;&nbsp; 注：本文由Jonathan Locke编写,相关权利由原作者享有。</strong></p><img src ="http://www.blogjava.net/tommyjian/aggbug/122756.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tommyjian/" target="_blank">Tommy Jian</a> 2007-06-08 07:55 <a href="http://www.blogjava.net/tommyjian/archive/2007/06/08/122756.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>翻译：为什么是Wicket（二）</title><link>http://www.blogjava.net/tommyjian/archive/2007/06/07/122641.html</link><dc:creator>Tommy Jian</dc:creator><author>Tommy Jian</author><pubDate>Thu, 07 Jun 2007 08:47:00 GMT</pubDate><guid>http://www.blogjava.net/tommyjian/archive/2007/06/07/122641.html</guid><wfw:comment>http://www.blogjava.net/tommyjian/comments/122641.html</wfw:comment><comments>http://www.blogjava.net/tommyjian/archive/2007/06/07/122641.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tommyjian/comments/commentRss/122641.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tommyjian/services/trackbacks/122641.html</trackback:ping><description><![CDATA[<p><strong>动机</strong></p>
<p>&nbsp;&nbsp;&nbsp; 目前存在的大多数Web框架对于服务端的状态管理都仅仅提供了较弱的支持。</p>
<p>&nbsp;&nbsp;&nbsp; 这就意味着在Web应用程序中存在着很多特殊的代码来处理和维护繁复的状态管理机制。虽然Wicket并不允许对服务端的状态完全不考虑，但是它在状态管理的简便性和透明化方面做了很多的工作。</p>
<p>&nbsp;&nbsp;&nbsp; 在Wicket中，所有服务端的状态都被纳入了自动的管理。您始终不需要直接使用HttpSession对象或者类似的封装对象去存储状态信息。相反，状态信息已经都与组件关联起来，而在组件后端的数据模型都是传统的Java对象（POJO）。Wicket在每个用户会话期内维护着页面的映射表（Map）。这个页面映射表（以及每个一面内的组件层次）的目的在于使得框架隐藏了组件以及数据模型访问的细节。您只需要处理简单而熟悉的Java对象，而Wicket则处理诸如URL、会话期标识以及GET/POST请求的任务。</p>
<p>&nbsp;&nbsp;&nbsp; 您接着也会发现这种结构良好的服务端状态使得解决令人恐惧的&#8220;后退按钮问题&#8221;变得十分的容易。实际上，针对页面内组件数据模型的结构性变化带来的数据过期，Wicket提供了通用而且健壮的解决方案，这个方案可以有效地对浏览器缓存页面进行甄别和过期检测。</p>
<p>&nbsp;&nbsp;&nbsp; 最后，Wicket在设计的时候就考虑与诸如JDO和Hibernate的普通Java对象（POJO）序列化框架协同工作。这一点使得构建数据驱动的Web应用程序显得非常简单。</p>
<p>&nbsp;&nbsp;&nbsp; 对于很多应用程序来说，必须在额外服务端状态导致服务器负载增加和其带来的好处之间进行权衡，服务端状态管理可以降低开发成本、减少维护成本、加快对市场的响应时间以及生产高质量的软件。这里提出的基本观点是：软件是十分昂贵、复杂的，而来自于E-machines和Dell的服务器则相对便宜。</p>
<p>&nbsp;&nbsp;&nbsp; 在效率和生产性方面，Wicket对JSP的优越性则犹如Java语言对C语言一样。您使用Wicket可以实现的功能使用JSP也都可以实现。甚至于在内存和CPU消耗方面效率也非常的高。但是使用JSP开发应用程序则需要耗费您更多的时间。最后，因为在JSP中进行状态管理时使用了特别的方式，您可能发现不少的安全问题，也能看到到处蹦出来的错误。上面提及的大部分框架在这方面仅仅提供了有限的辅助。</p>
<hr>
<p><strong>&nbsp;&nbsp;&nbsp; 注：本文由Jonathan Locke编写,相关权利由原作者承担。</strong></p><img src ="http://www.blogjava.net/tommyjian/aggbug/122641.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tommyjian/" target="_blank">Tommy Jian</a> 2007-06-07 16:47 <a href="http://www.blogjava.net/tommyjian/archive/2007/06/07/122641.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>翻译：为什么是Wicket（一）</title><link>http://www.blogjava.net/tommyjian/archive/2007/06/07/122485.html</link><dc:creator>Tommy Jian</dc:creator><author>Tommy Jian</author><pubDate>Wed, 06 Jun 2007 23:51:00 GMT</pubDate><guid>http://www.blogjava.net/tommyjian/archive/2007/06/07/122485.html</guid><wfw:comment>http://www.blogjava.net/tommyjian/comments/122485.html</wfw:comment><comments>http://www.blogjava.net/tommyjian/archive/2007/06/07/122485.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tommyjian/comments/commentRss/122485.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tommyjian/services/trackbacks/122485.html</trackback:ping><description><![CDATA[<p><strong>为什么是Wicket？</strong></p>
<p>&nbsp;&nbsp;&nbsp; 如果您正在寻求使用Java开发Web应用程序，目前，您有很多的选择。实际上，存在如此众多的Web应用程序框架显得有点搞笑。来自于互联网一个博客站点的问题：您能说出多少Java Web应用框架的名字？他们展现的结果如下：</p>
<p>&nbsp;&nbsp;&nbsp; 框架，到处都是框架，参看后面附带的表格。</p>
<p><strong>为什么要&#8220;重新发明轮子&#8221;？</strong></p>
<p>&nbsp;&nbsp;&nbsp; 从这个角度看，您对于&#8220;另一个Web应用程序框架有多好&#8221;这个问题总是耿耿于怀？确实，为什们要&#8220;重新发明轮子&#8221;呢？对这个古老的谚语的答复是：因为这一次可以使轮子更圆！</p>
<p>&nbsp;&nbsp;&nbsp; 但是对于高质量的期待并不是构建Wicket框架的唯一动因。甚至有很多的观点，认为没有其他的Web工具集填补这一空白，而Wicket做到了。实际上，Wicket与上面提及的众多框架不太一样。</p>
<p>&nbsp;&nbsp;&nbsp; 与Wicket最相近的或许是Tapestry和Echo，但是这种相似性也很有限。和Tapestry一样，Wicket使用特定的HTML属性来标识组件（Components）声明，这可以方便使用一般的HTML编辑器进行文件编辑。和Echo一样，Wicket拥有一流的组件模型。但是基于Wicket的应用程序和那些基于Tapestry和Echo的应用程序不一样，这是因为从Wicket框架中两方面都可以受益。您获得了一流的组件模型和对HTML没有干扰所带来的益处。在很多情况下，这种复合的好处可以带来非常重要的开发优势。</p>
<p>&nbsp;&nbsp;&nbsp; 理解了构建Wicket的动机有助于您理解为什么Wicket会表现的不一样。</p>
<div algign="center">
<table style="width: 480px; height: 366px;" align="center" border="1" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td style="text-align: center;" height="8"><font size="2">&nbsp;Echo</font></td>
            <td style="text-align: center;" height="8"><font size="2">Cocoon <br></font></td>
            <td style="text-align: center;" height="8"><font size="2">Millstone <br></font></td>
            <td style="text-align: center;" height="8"><font size="2">OXF <br></font></td>
        </tr>
        <tr height="8">
            <td style="text-align: center;"><font size="2">&nbsp;Struts</font></td>
            <td style="text-align: center;"><font size="2">SOFIA <br></font></td>
            <td style="text-align: center;"><font size="2">Tapestry<br></font></td>
            <td style="text-align: center;"><font size="2">WebWork <br></font></td>
        </tr>
        <tr height="8">
            <td style="text-align: center;"><font size="2">RIFE <br></font></td>
            <td style="text-align: center;"><font size="2">Spring MVC <br></font></td>
            <td style="text-align: center;"><font size="2">Canyamo&nbsp;</font></td>
            <td style="text-align: center;"><font size="2">&nbsp;Maverick</font></td>
        </tr>
        <tr height="8">
            <td style="text-align: center;"><font size="2">JPublish <br></font></td>
            <td style="text-align: center;"><font size="2">JATO <br></font></td>
            <td style="text-align: center;"><font size="2">Folium <br></font></td>
            <td style="text-align: center;"><font size="2">Jucas <br></font></td>
        </tr>
        <tr height="8">
            <td style="text-align: center;"><font size="2">Verge <br></font></td>
            <td style="text-align: center;"><font size="2">Niggle <br></font></td>
            <td style="text-align: center;"><font size="2">Bishop <br></font></td>
            <td style="text-align: center;"><font size="2">Barracuda <br></font></td>
        </tr>
        <tr height="8">
            <td style="text-align: center;"><font size="2">Action Framework <br></font></td>
            <td style="text-align: center;"><font size="2">Shocks <br></font></td>
            <td style="text-align: center;"><font size="2">TeaServlet<br></font></td>
            <td style="text-align: center;"><font size="2">&nbsp;wingS</font></td>
        </tr>
        <tr height="8">
            <td style="text-align: center;"><font size="2">Expresso <br></font></td>
            <td style="text-align: center;"><font size="2">Bento <br></font></td>
            <td style="text-align: center;"><font size="2">jStatemachine <br></font></td>
            <td style="text-align: center;"><font size="2">jZonic <br></font></td>
        </tr>
        <tr height="8">
            <td style="text-align: center;"><font size="2">OpenEmcee <br></font></td>
            <td style="text-align: center;"><font size="2">Turbine <br></font></td>
            <td style="text-align: center;"><font size="2">Scope <br></font></td>
            <td style="text-align: center;"><font size="2">Warfare <br></font></td>
        </tr>
        <tr height="8">
            <td style="text-align: center;"><font size="2">JMAA <br></font></td>
            <td style="text-align: center;"><font size="2">Jaffa <br></font></td>
            <td style="text-align: center;"><font size="2">Jacquard <br></font></td>
            <td style="text-align: center;"><font size="2">Macaw <br></font></td>
        </tr>
        <tr height="8">
            <td style="text-align: center;"><font size="2">Smile <br></font></td>
            <td style="text-align: center;"><font size="2">MyFaces <br></font></td>
            <td style="text-align: center;"><font size="2">Chiba <br></font></td>
            <td style="text-align: center;"><font size="2">JBanana <br></font></td>
        </tr>
        <tr height="8">
            <td style="text-align: center;"><font size="2">Jeenius <br></font></td>
            <td style="text-align: center;"><font size="2">JWarp <br></font></td>
            <td style="text-align: center;"><font size="2">Genie <br></font></td>
            <td style="text-align: center;"><font size="2">Melati <br></font></td>
        </tr>
        <tr height="8">
            <td style="text-align: center;"><font size="2">Dovetail <br></font></td>
            <td style="text-align: center;"><font size="2">Cameleon <br></font></td>
            <td style="text-align: center;"><font size="2">JFormular <br></font></td>
            <td style="text-align: center;"><font size="2">Xoplon <br></font></td>
        </tr>
        <tr height="8">
            <td style="text-align: center;"><font size="2">Japple <br></font></td>
            <td style="text-align: center;"><font size="2">Helma <br></font></td>
            <td style="text-align: center;"><font size="2">Dinamica <br></font></td>
            <td style="text-align: center;"><font size="2">WebOnSwing <br></font></td>
        </tr>
        <tr height="8">
            <td style="text-align: center;"><font size="2">Nacho <br></font></td>
            <td style="text-align: center;"><font size="2">Cassandra <br></font></td>
            <td style="text-align: center;"><font size="2">Baritus <br></font></td>
            <td style="text-align: center;"><font size="2">&nbsp;</font></td>
        </tr>
    </tbody>
</table>
</div>
<hr>
<p><strong>&nbsp;&nbsp;&nbsp; 注：本文由Jonathan Locke编写,相关权利由原作者承担。</strong></p><img src ="http://www.blogjava.net/tommyjian/aggbug/122485.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tommyjian/" target="_blank">Tommy Jian</a> 2007-06-07 07:51 <a href="http://www.blogjava.net/tommyjian/archive/2007/06/07/122485.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>翻译：Wicket的特性——来自Wicket孵化站点</title><link>http://www.blogjava.net/tommyjian/archive/2007/06/06/122399.html</link><dc:creator>Tommy Jian</dc:creator><author>Tommy Jian</author><pubDate>Wed, 06 Jun 2007 08:38:00 GMT</pubDate><guid>http://www.blogjava.net/tommyjian/archive/2007/06/06/122399.html</guid><wfw:comment>http://www.blogjava.net/tommyjian/comments/122399.html</wfw:comment><comments>http://www.blogjava.net/tommyjian/archive/2007/06/06/122399.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/tommyjian/comments/commentRss/122399.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tommyjian/services/trackbacks/122399.html</trackback:ping><description><![CDATA[<p><strong>与Swing类似的面向对象组件模型</strong></p>
<p>&nbsp;&nbsp;&nbsp; Wicket中的页面及其他组件都是支持封装、继承和事件触发的Java对象。 </p>
<p><strong>易于开发</strong></p>
<p>&nbsp;&nbsp;&nbsp; 因为Wicket合成了Java和HTML，在使用Wicket开发应用的过程中，您可以最大限度地发挥您所掌握的Java知识，而且可以最大限度地发挥您最喜欢的HTML编辑器在开发过程中的作用。 </p>
<p><strong>关注点的分离</strong></p>
<p>&nbsp;&nbsp;&nbsp; Wicket并没有将标签（比如HTML的相关标签）与Java代码混合，而且也没有在标签文件中增添任何特殊的语法。HTML和Java 的领域是不互相干扰的，它们只是通过Wicket Id来关联，Wikcet Id在HTML中表现为标签的属性，在Java代码中则表现为组件的属性。因为Wicket中的HTML文件是纯粹的HTML文件，Wicket中的Java代码是纯粹的Java代码，编程者和设计者可以最大程度地独立完成工作，而不需要依赖于任何特定的工具。 </p>
<p><strong>安全</strong></p>
<p>&nbsp;&nbsp;&nbsp; Wicket在默认设置的条件下是安全的。URL不对外公布任何敏感信息，而且所有组件的路径都是相对于会话周期的，脱离了会话周期这些路径将变得无效。如果需要在会话周期间共享信息，则必须做一些特殊的工作才能达到。在下一个版本的 Wicket中，有计划将URL加密功能添加到框架中去以此来支持符合要求更高的安全特性。 </p>
<p><strong>透明的且具备伸缩性的集群支持</strong></p>
<p>&nbsp;&nbsp;&nbsp; 所有基于Wicket的应用不需要额外的设置就可以自动支持集群。一旦系统的瓶颈经评估被发现，那么Wicket将启动页面状态的复制。Wicket的下一个版本将对具备零状态伸缩性的客户端模型提供支持。 </p>
<p><strong>显式的&#8220;后退按钮&#8221;问题支持</strong></p>
<p>&nbsp;&nbsp;&nbsp; Wicket支持可配置的页面版本管理。当用户提交一个表单，而后使用浏览器的后退按钮来回到以前访问过的页面时，Wicket 可以将页面对象的状态恢复过来，并且将页面以原来的面貌呈现出来。这就意味着您只需要花一点功夫就可以构建出支持&#8220; 后退按钮&#8221;的应用。 </p>
<p><strong>可复用的组件</strong></p>
<p>&nbsp;&nbsp;&nbsp; 在Wicket中，构建可复用的组件十分的简单。您不仅可以使用Java中的关键字extends来从现有的组件继承而构建新的组件，而且可以使用Panel组件来组织一批组件来构建可复用的组件单元。简单且灵活的、支持本地化的表单校验在Wikcet中编写和使用校验器也是十分的简单。而且校验错误消息的定义和本地化也是十分简单的工作。 </p>
<p><strong>类型安全的会话周期</strong></p>
<p>&nbsp;&nbsp;&nbsp; Wicket消除了手动管理HttpSession属性的需求。页面和组件对象被显式地存储在会话周期中，您的应用也可以构建属性类型安全的会话周期的子类。存储在会话周期中的所有对象可以自动地发布到集群中。 </p>
<p><strong>可自定义的工厂类</strong></p>
<p>&nbsp;&nbsp;&nbsp; Wicket非常具有扩展性。许多操作可以通过工厂类或者工厂方法来实现自定义。 </p>
<p><strong>可分离的模型</strong></p>
<p>&nbsp;&nbsp;&nbsp; Wicket中的模型对象在集群系统中的内存和网络占用可以说是轻量级的。当一个模型正在被使用时，它将被装载，主要通过从存储单元来获得数据并激活模型。当这个模型对象已经不再被使用时，临时信息可以被重置，这样就可以消减对象占用的内存数量。 </p>
<p><strong>边框组件</strong></p>
<p>&nbsp;&nbsp;&nbsp; Wicket的边框组件可以使得页面的装饰符合可重用的规则。这对一般的导航结构和布局显得十分的有用。 </p>
<p><strong>对HTML所有的基本特性提供支持</strong></p>
<p>&nbsp;&nbsp;&nbsp; Wicket支持图像标签、链接、表单以及其他一切您在Web应用开发中可以用到的特性。 </p>
<p><strong>对属性的可编程操作。</strong></p>
<p>&nbsp;&nbsp;&nbsp; Wicket组件可以使用编程的方式来修改任何HTML标签的属性。 </p>
<p><strong>自动的转换</strong></p>
<p>&nbsp;&nbsp;&nbsp; 一旦表单校验完成，模型可以使用Wicket的转换器来完成更新。大部分的转换器都是系统自带的，而编写新的转换器也是很简单的事情。 </p>
<p><strong>动态的图像</strong></p>
<p>&nbsp;&nbsp;&nbsp; Wikcet使得图像的使用、共享和生成十分的简单。动态图像可以简单地通过实现绘制（paint）方法来建立。 </p>
<p><strong>可分页的ListView</strong></p>
<p>&nbsp;&nbsp;&nbsp; Wicket中的ListView十分的强大。您可以将任何组件嵌入到ListView组件的行中，甚至将ListView进行循环嵌套也可以。 PageableListView支持大型数据列表的分页导航。 </p>
<p><strong>树形组件</strong></p>
<p>&nbsp;&nbsp;&nbsp; 具备导航和结点选择的树形组件。 </p>
<p><strong>本地化</strong></p>
<p>&nbsp;&nbsp;&nbsp; HTML页面、图形和字符串都可以实现本地化。 </p>
<p><strong>示例</strong></p>
<p>&nbsp;&nbsp;&nbsp; Wicket有展示其各项功能的数量巨大的例子。 </p>
<img src ="http://www.blogjava.net/tommyjian/aggbug/122399.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tommyjian/" target="_blank">Tommy Jian</a> 2007-06-06 16:38 <a href="http://www.blogjava.net/tommyjian/archive/2007/06/06/122399.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>