﻿<?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-奇葛格的BLOG-文章分类-Java</title><link>http://www.blogjava.net/onlykeke/category/10257.html</link><description>红尘最可笑，我自乐逍遥</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 03:31:35 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 03:31:35 GMT</pubDate><ttl>60</ttl><item><title>比较器Comparator[转]</title><link>http://www.blogjava.net/onlykeke/articles/48572.html</link><dc:creator>奇葛格</dc:creator><author>奇葛格</author><pubDate>Sun, 28 May 2006 04:15:00 GMT</pubDate><guid>http://www.blogjava.net/onlykeke/articles/48572.html</guid><wfw:comment>http://www.blogjava.net/onlykeke/comments/48572.html</wfw:comment><comments>http://www.blogjava.net/onlykeke/articles/48572.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/onlykeke/comments/commentRss/48572.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/onlykeke/services/trackbacks/48572.html</trackback:ping><description><![CDATA[
		<div class="postTitle">
				<a class="postTitle2" id="viewpost1_TitleUrl" href="/nake/archive/2006/05/27/48492.html">比较器Comparator</a>
		</div>
		<p>排序的算法是我们最常用的算法，初学程序，每个人都尝试过排序。但只是局限于简单的排序。<br />如将下列数字进行排序<br />1，3，5，8，3，6<br />于是我们得出结果<br />1，3，3，5，6，8<br />将下列字母（字符）进行排序<br />a,i,e,f,w,s<br />于是我们得出结果<br />a,e,f,i,s,w<br />但是我们遇到的情况就不是如此简单了。如给公司里的商品进行排序，我们很轻易的想到按照商品的名称排序不就完了，而且简单明了。但现实并如我们相信般简单。同一商品名称可以有不同的批次，进货时间，可能还会有单价的不同。显然只根据商品名称排序是不合理的。<br /><br />再举个简单例子然后用程序实现。如公司要将员工进行排序（不要说领导排在前面），假设我们的需求比较复杂。先进行姓排序，谁的姓拼音靠前，谁就排前面。然后对名字进行排序。恩.如果同名，女性排前头。如果名字和性别都相同，年龄小的排前头。ok，一个也不算复杂的需求。<br /><br />如果对java比较熟悉的会知道java.util.Comparator 接口。要实现里面的函数<br /> int compare(Object o1, Object o2) 返回一个基本类型的整型，返回负数表示o1 小于o2，返回0 表示o1和o2相等，返回正数表示o1大于o2。<br /><br />于是我们设计的人员类要有几个变量，firstname,lastname,sex,age分别表示姓，名，性别，年龄。<br /><br /><br />public class Person {<br />  String firstname,lastname;<br />  Boolean sex;<br />  Integer age;<br />  public Person(String firstname,String lastname,Boolean sex,Integer age) {<br />    this.firstname = firstname;<br />    this.lastname = lastname;<br />    this.sex = sex;<br />    this.age = age;<br />  }<br />  public String getFirstName() {<br />     return firstname;<br />   }</p>
		<p>   public String getLastName() {<br />     return lastname;<br />   }<br />   public Boolean getSex() {<br />      return sex;<br />    }</p>
		<p>    public Integer getAge() {<br />      return age;<br />    }<br /><br />//为了输入方便，重写了toString()</p>
		<p>public String toString()<br />    {<br />      return firstname +" "+lastname+" "+(sex.booleanValue()?"男":"女")+" "+age;<br />    }<br />}<br />//end person<br /><br />下面是要实现比较器<br /><br /><br />public class Comparators {<br />  public static java.util.Comparator getComparator() {<br />    return new java.util.Comparator() {</p>
		<p>      public int compare(Object o1, Object o2) {<br />        if (o1 instanceof String) {<br />          return compare( (String) o1, (String) o2);<br />        }<br />       else if (o1 instanceof Integer) {<br />          return compare( (Integer) o1, (Integer) o2);<br />        }</p>
		<p>       else if (o1 instanceof Person) {<br />      return compare( (Person) o1, (Person) o2);<br />    }</p>
		<p>        else {<br />          System.err.println("未找到合适的比较器");<br />          return 1;</p>
		<p>        }<br />      }</p>
		<p>      public int compare(String o1, String o2) {<br />        String s1 = (String) o1;<br />        String s2 = (String) o2;<br />        int len1 = s1.length();<br />        int len2 = s2.length();<br />        int n = Math.min(len1, len2);<br />        char v1[] = s1.toCharArray();<br />        char v2[] = s2.toCharArray();<br />        int pos = 0;</p>
		<p>        while (n-- != 0) {<br />          char c1 = v1[pos];<br />          char c2 = v2[pos];<br />          if (c1 != c2) {<br />            return c1 - c2;<br />          }<br />          pos++;<br />        }<br />        return len1 - len2;<br />      }</p>
		<p>      public int compare(Integer o1, Integer o2) {<br />        int val1 = o1.intValue();<br />        int val2 = o2.intValue();<br />        return (val1 &lt; val2 ? -1 : (val1 == val2 ? 0 : 1));</p>
		<p>      }<br />      public int compare(Boolean o1, Boolean o2) {</p>
		<p>         return (o1.equals(o2)? 0 : (o1.booleanValue()==true?1:-1));</p>
		<p>       }</p>
		<p>      public int compare(Person o1, Person o2) {<br />        String firstname1 = o1.getFirstName();<br />        String firstname2 = o2.getFirstName();<br />        String lastname1 = o1.getLastName();<br />        String lastname2 = o2.getLastName();<br />        Boolean sex1 = o1.getSex();<br />        Boolean sex2 = o2.getSex();<br />        Integer age1 = o1.getAge();<br />        Integer age2 = o2.getAge();<br />        return (compare(firstname1, firstname2) == 0 ?<br />                (compare(lastname1, lastname2) == 0 ? (compare(sex1, sex2) == 0 ? (compare(age1, age2) == 0 ? 0 :<br />                 compare(age1, age2)) :<br />                 compare(sex1, sex2)) :<br />                 compare(lastname1, lastname2)) :<br />                compare(firstname1, firstname2));</p>
		<p>      }</p>
		<p>    };<br />  }</p>
		<p>}<br />以上代码有可能因为浏览器的布局自动换行。<br />compare(Person o1, Person o2)的返回值看起来比较别扭。最简单的是<br /><br />    public int compare(Boolean o1, Boolean o2) {</p>
		<p>         return (o1.equals(o2)? 0 : (o1.booleanValue()==true?1:-1));</p>
		<p>       }<br /><br />o1和o2相等返回0，否则o1如果是true 就表示o1大于o2。<br /><br />再尝试输出结果看看<br /><br /><br />public class Main {<br />  public Main() {<br />  }<br />  public static void main(String[] args) {<br />    Person[] person = new Person[] {<br />         new Person("ouyang", "feng", Boolean.TRUE, new Integer(27)),<br />         new Person("zhuang", "gw", Boolean.TRUE, new Integer(27)),<br />         new Person("zhuang", "gw", Boolean.FALSE, new Integer(27)),<br />         new text.Person("zhuang", "gw", Boolean.FALSE, new Integer(2)),</p>
		<p>
				<br />     };<br />     for (int i = 0; i &lt; person.length; i++) {<br />       System.out.println("before sort=" + person[i]);<br />     }<br />     java.util.Arrays.sort(person, Comparators.getComparator());<br />  for (int i = 0; i &lt; person.length; i++) {<br />    System.out.println("after sort=" + person[i]);<br />  }</p>
		<p>
				<br />  }</p>
		<p>}<br /><br />输出结果：<br /><br />before sort=ouyang feng 男 27</p>
		<p>before sort=zhuang gw 男 27</p>
		<p>before sort=zhuang gw 女 27</p>
		<p>before sort=zhuang gw 女 2</p>
		<p>after sort=ouyang feng 男 27</p>
		<p>after sort=zhuang gw 女 2</p>
		<p>after sort=zhuang gw 女 27</p>
		<p>after sort=zhuang gw 男 27<br /><br /><br />仔细理解java的Comparator会给你写排序带来很大帮助</p>
		<p>
				<br />
		</p>
<img src ="http://www.blogjava.net/onlykeke/aggbug/48572.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/onlykeke/" target="_blank">奇葛格</a> 2006-05-28 12:15 <a href="http://www.blogjava.net/onlykeke/articles/48572.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google Web Toolkit </title><link>http://www.blogjava.net/onlykeke/articles/46740.html</link><dc:creator>奇葛格</dc:creator><author>奇葛格</author><pubDate>Thu, 18 May 2006 01:34:00 GMT</pubDate><guid>http://www.blogjava.net/onlykeke/articles/46740.html</guid><wfw:comment>http://www.blogjava.net/onlykeke/comments/46740.html</wfw:comment><comments>http://www.blogjava.net/onlykeke/articles/46740.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/onlykeke/comments/commentRss/46740.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/onlykeke/services/trackbacks/46740.html</trackback:ping><description><![CDATA[
		<h1 align="center">Google Web Toolkit </h1>
		<h1>  - <font size="4">Build AJAX apps in the Java language</font></h1>
		<div class="download">
				<a href="http://code.google.com/webtoolkit/download.html">Download Google Web Toolkit (GWT)</a>  <a href="http://code.google.com/webtoolkit/">http://code.google.com/webtoolkit/</a> </div>
		<p>Google Web Toolkit (GWT) is a Java software development framework that makes writing AJAX applications like <a href="http://maps.google.com/">Google Maps</a> and <a href="http://mail.google.com/">Gmail</a> easy for developers who don't speak browser quirks as a second language. Writing dynamic web applications today is a tedious and error-prone process; you spend 90% of your time working around subtle incompatabilities between web browsers and platforms, and JavaScript's lack of modularity makes sharing, testing, and reusing AJAX components difficult and fragile.</p>
		<p>GWT lets you avoid many of these headaches while offering your users the same dynamic, standards-compliant experience. You write your front end in the <a href="http://java.sun.com/" rel="nofollow">Java</a> programming language, and the GWT compiler converts your Java classes to browser-compliant JavaScript and HTML.</p>
		<p class="more">
				<a href="http://code.google.com/webtoolkit/overview.html">Learn more »</a>
				<br />
				<br />
		</p>
		<h2>GWT的特性: </h2>
		<ul class="featurelist">
				<li>
						<div class="heading">
								<a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.UserInterface.html">Dynamic, reusable UI components</a>
						</div>
						<div class="description">Create a <a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.user.client.ui.Widget.html">Widget</a> by compositing other Widgets. Lay out Widgets automatically in <a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.user.client.ui.Panel.html">Panels</a>. Send your Widget to other developers in a JAR file.</div>
				</li>
				<li>
						<div class="heading">
								<a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.RemoteProcedureCalls.html">Really simple RPC</a>
						</div>
						<div class="description">To communicate from your web application to your web server, you just need to define serializable Java classes for your request and response. In production, GWT automatically serializes the request and deserializes the response from the server. GWT's RPC mechanism can even handle polymorphic class hierarchies, and you can throw exceptions across the wire.</div>
				</li>
				<li>
						<div class="heading">
								<a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.user.client.History.html">Browser history management</a>
						</div>
						<div class="description">No, AJAX applications <i>don't</i> need to break the browser's back button. GWT lets you make your site more usable by easily adding state to the browser's back button history.</div>
				</li>
				<li>
						<div class="heading">
								<a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.Fundamentals.HostedMode.html">Real debugging</a>
						</div>
						<div class="description">In production, your code is compiled to JavaScript, but at development time it runs in the Java virtual machine. That means when your code performs an action like handling a mouse event, you get full-featured Java debugging, with exceptions and the advanced debugging features of IDEs like <a href="http://www.eclipse.org/" rel="nofollow">Eclipse</a>.</div>
				</li>
				<li>
						<div class="heading">
								<a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.Fundamentals.WebMode.html">Browser compatible</a>
						</div>
						<div class="description">Your GWT applications automatically support IE, Firefox, Mozilla, Safari, and Opera with no browser detection or special-casing within your code in most cases.</div>
				</li>
				<li>
						<div class="heading">
								<a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.JavaScriptNativeInterface.html">Interoperability and fine-grained control</a>
						</div>
						<div class="description">If GWT's class library doesn't meet your needs, you can mix handwritten JavaScript in your Java source code using our <a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.JavaScriptNativeInterface.html">JavaScript Native Interface (JSNI)</a>.</div>
				</li>
		</ul>
		<p class="description">and there is a feedback that  it's not better than dojo.</p>
<img src ="http://www.blogjava.net/onlykeke/aggbug/46740.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/onlykeke/" target="_blank">奇葛格</a> 2006-05-18 09:34 <a href="http://www.blogjava.net/onlykeke/articles/46740.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用Java接口实现回调函数的等价功能</title><link>http://www.blogjava.net/onlykeke/articles/46023.html</link><dc:creator>奇葛格</dc:creator><author>奇葛格</author><pubDate>Sat, 13 May 2006 14:58:00 GMT</pubDate><guid>http://www.blogjava.net/onlykeke/articles/46023.html</guid><wfw:comment>http://www.blogjava.net/onlykeke/comments/46023.html</wfw:comment><comments>http://www.blogjava.net/onlykeke/articles/46023.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/onlykeke/comments/commentRss/46023.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/onlykeke/services/trackbacks/46023.html</trackback:ping><description><![CDATA[
		<p>用 Java 接口实现回调函数的等价功能</p>
		<p>引自：<a href="http://www-900.ibm.com/developerWorks/cn/java/jw-tips/tip010/">http://www-900.ibm.com/developerWorks/cn/java/jw-tips/tip010/</a></p>
		<p>作者：John D. Mitchell <br />摘要<br />在 Java 支持方法指针之前，Java 接口不能提供一种实现回调的好方法。如果您习惯于传递在事件驱动编程模型中调用的函数指针，则您会喜欢本技巧。<br />熟悉 MS-Windows 和 X Window System 事件驱动编程模型的开发人员，习惯于传递在某种事件发生时调用（即“回调”）的函数指针。Java 的面向对象模型目前并不支持方法指针，这样似乎就不可能使用这种很好的机制。但我们并不是一点办法都没有！ </p>
		<p>Java 的接口支持提供了一种获得回调的等价功能的机制。其技巧就是：定义一个简单接口，并在该接口中声明我们要调用的方法。</p>
		<p>例如，假定我们希望在某个事件发生时得到通知。我们可以定义一个接口：</p>
		<p>public interface InterestingEvent{<br />// 这仅是一个常规方法。因此如果需要，<br />// 它可有返回值，也可接收参数。<br />public void interestingEvent ();<br />}</p>
		<p>
				<br />这使得我们可以控制实现该接口的类的任何对象。因此，我们不必关心任何外部类型信息。与在将 C++ 代码用于 Motif 时使用窗口小部件的数据域来容纳对象指针的难以控制的 C 函数相比，这种方法要好得多。</p>
		<p>发出事件信号的类必须等待实现了 InterestingEvent 接口的对象，并在适当时候调用 interestingEvent() 方法。</p>
		<p>public class EventNotifier{<br />private InterestingEvent ie;<br />private boolean somethingHappened;</p>
		<p>public EventNotifier (InterestingEvent event){<br />// 保存事件对象以备后用。<br />ie = event;</p>
		<p>// 还没有要报告的事件。<br />somethingHappened = false;<br />}</p>
		<p>//...</p>
		<p>public void doWork (){<br />// 检查在别处设置的谓词。<br />if (somethingHappened){<br />// 通过调用接口的这个方法发出事件信号。<br />ie.interestingEvent ();<br />}<br />//...<br />}</p>
		<p>// ...<br />}</p>
		<p>
				<br />在上例中，我使用 somethingHappened 谓词来跟踪是否应触发事件。在许多情况下，调用此方法足以保证向 interestingEvent() 发出信号。</p>
		<p>希望接收事件通知的代码必须实现 InterestingEvent 接口，并将自身引用传递给事件通知程序。</p>
		<p>public class CallMe implements InterestingEvent{<br />private EventNotifier en;</p>
		<p>public CallMe (){<br />// 创建事件通知程序，并将自身引用传递给它。<br />en = new EventNotifier (this);<br />}</p>
		<p>// 为事件定义实际的处理程序。<br />public void interestingEvent (){<br />// 噢！必定发生了感兴趣的事件！<br />// 执行某些操作 ...<br />}</p>
		<p>//...<br />}</p>
		<p>
				<br />这就是所要做的全部工作。我希望这个简单的 Java 习惯用法会使您更有信心地转向 Java。</p>
		<p>JavaWorld 还有一个名为 Java Questions &amp; Answers 特色专栏！现在就将有关 Java 语言的问题发送到 <a href="mailto:javaqa@javaworld.com">javaqa@javaworld.com</a>。 我们也希望将您的 Java 技巧刊登在以后的 Java world 上。赶快将您最棒的技巧和窍门写出来 -- 参加 JavaWorld 的 "Java Tip of the Week" 竞赛。 如果您的 Java 技巧成为 JavaWorld "Java Tip of the Week"，您将获得 JavaWorld 奖励的一件 T 恤，以及一周的荣誉和声望。请将您的 Java 技巧和窍门发送到 <a href="mailto:javatips@javaworld.com">javatips@javaworld.com</a>。</p>
		<p>作者简介<br />John D. Mitchell 在过去九年的大部分时间里一直在 Geoworks 从事顾问工作，并用面向对象的汇编语言开发了 PDA 软件。他睡眠很少，靠咖啡因和糖维持着。他通过编写编译器、Tcl/Tk、 C++ 及 Java 系统支助着自己的 Java 嗜好。John D. Mitchell 还参与编写了一本畅销的 Java 著作，Making Sense of Java，目前正在开发一种 Java 编译器。</p>
<img src ="http://www.blogjava.net/onlykeke/aggbug/46023.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/onlykeke/" target="_blank">奇葛格</a> 2006-05-13 22:58 <a href="http://www.blogjava.net/onlykeke/articles/46023.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>use  LoadableDetachableModel directly in webpage</title><link>http://www.blogjava.net/onlykeke/articles/44724.html</link><dc:creator>奇葛格</dc:creator><author>奇葛格</author><pubDate>Sat, 06 May 2006 04:08:00 GMT</pubDate><guid>http://www.blogjava.net/onlykeke/articles/44724.html</guid><wfw:comment>http://www.blogjava.net/onlykeke/comments/44724.html</wfw:comment><comments>http://www.blogjava.net/onlykeke/articles/44724.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/onlykeke/comments/commentRss/44724.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/onlykeke/services/trackbacks/44724.html</trackback:ping><description><![CDATA[These words from Igor tell how to get  "Filterable ListViews":<br /><br />class MyPage extends WebPage {<br /><br />private String criteria;<br />//getter/setter for criteria<br /><br />public MyPage() {<br />  IModel listModel=new <font color="#0000ff">LoadableDetachableModel</font>() { <br />          Object load() {<br />              UserService service=...get user service;<br />               List users=service.findUsersFiltered(criteria);<br />              return users;<br />          }<br />  }<br />  add(new ListView("users", listModel) {....}); <br /><br />  // so here we have the listview that will show a list that is filtered on page's criteria property. now we hookup our dropdownchoice in such a way that it modifies this property and when the page refreshes so will the listview because it is using a detachble model. <br /><br />Form form=new Form();<br />add(form);<br /><br />List filters=new ArrayList();<br />filters.add("a");<br />filters.add("b");<br /><br />form.add(new DropDownChoice("filter", new PropertyModel(this, "criteria"), filters) { <br />wantOnChangeNotifiaction() { return true; });<br />// <font color="#ff1493">here we glue dropdown choice to our criteria property via the property model<br /></font>}}<br /><br />and thats it. to overview what we have done:<br /><br />the listview "pulls" its filter from the criteria property on the page and uses a detachable model so that it refreshes on every request <br /><br />dropdown choice puts its selection into the criteria property<br /><br /><font color="#008000">so the listview is glued to the dropdown choice by sharing a property</font><img src ="http://www.blogjava.net/onlykeke/aggbug/44724.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/onlykeke/" target="_blank">奇葛格</a> 2006-05-06 12:08 <a href="http://www.blogjava.net/onlykeke/articles/44724.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>111个知名Java项目集锦（转）</title><link>http://www.blogjava.net/onlykeke/articles/42022.html</link><dc:creator>奇葛格</dc:creator><author>奇葛格</author><pubDate>Wed, 19 Apr 2006 15:23:00 GMT</pubDate><guid>http://www.blogjava.net/onlykeke/articles/42022.html</guid><wfw:comment>http://www.blogjava.net/onlykeke/comments/42022.html</wfw:comment><comments>http://www.blogjava.net/onlykeke/articles/42022.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/onlykeke/comments/commentRss/42022.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/onlykeke/services/trackbacks/42022.html</trackback:ping><description><![CDATA[
		<div class="posttitle">
				<a class="singleposttitle" id="viewpost1_TitleUrl" href="/Andyluo/archive/2006/04/15/javaprojects.html">111个知名Java项目集锦（包括url和描述）</a>
		</div>
		<strong>
		</strong>
		<br />
		<table cellspacing="0" cellpadding="0" border="1">
				<tbody>
						<tr>
								<th>项目名称</th>
								<th colspan="3" rowspan="112"> </th>
								<th>项目描述<font color="#ffffff">转载自</font><a href="http://andyluo.blogjava.net/"><font color="#ffffff">http://andyluo.blogjava.net</font></a></th>
						</tr>
						<tr>
								<td>
										<a title="Homepage for ASM" href="http://asm.objectweb.org/" target="_blank">ASM</a>
								</td>
								<td style="FONT-SIZE: 75%">Java bytecode manipulation framework</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for AspectWerkz" href="http://aspectwerkz.codehaus.org/" target="_blank">AspectWerkz</a>
								</td>
								<td style="FONT-SIZE: 75%">AspectWerkz - Dynamic AOP for Java</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Axis" href="http://ws.apache.org/axis/" target="_blank">Axis</a>
								</td>
								<td style="FONT-SIZE: 75%">Axis - an implementation of the SOAP (Simple Object Access Protocol) submission to W3C</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Batik" href="http://xml.apache.org/batik/" target="_blank">Batik</a>
								</td>
								<td style="FONT-SIZE: 75%">Batik SVG Toolkit - Toolkit using images in the Scalable Vector Graphics (SVG) format</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for BCEL" href="http://jakarta.apache.org/bcel" target="_blank">BCEL</a>
								</td>
								<td style="FONT-SIZE: 75%">Byte Code Engineering Library - Analyze, create and manipulate Java class files</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for BeanUtils" href="http://jakarta.apache.org/commons/beanutils/" target="_blank">BeanUtils</a>
								</td>
								<td style="FONT-SIZE: 75%">BeanUtils - Utilities for working with JavaBeans</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Catalina" href="http://jakarta.apache.org/tomcat/" target="_blank">Catalina</a>
								</td>
								<td style="FONT-SIZE: 75%">Catalina - Servlet and JSP based web server</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Cayenne" href="http://objectstyle.org/cayenne/" target="_blank">Cayenne</a>
								</td>
								<td style="FONT-SIZE: 75%">Professional Object Relational Mapping</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for CGLIB" href="http://cglib.sourceforge.net/" target="_blank">CGLIB</a>
								</td>
								<td style="FONT-SIZE: 75%">CGLIB - Dynamic byte code generator<font color="#ffffff">转载自</font><a href="http://andyluo.blogjava.net/"><font color="#ffffff">http://andyluo.blogjava.net</font></a></td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Chain" href="http://jakarta.apache.org/commons/chain/" target="_blank">Chain</a>
								</td>
								<td style="FONT-SIZE: 75%">Chain - Implementation of the GoF "Chain of Responsibility" pattern</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Checkstyle" href="http://checkstyle.sourceforge.net/" target="_blank">Checkstyle</a>
								</td>
								<td style="FONT-SIZE: 75%">Checkstyle - Development tool to help writing Java code that adheres to a coding standard</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for CLI" href="http://jakarta.apache.org/commons/cli/" target="_blank">CLI</a>
								</td>
								<td style="FONT-SIZE: 75%">Command Line Library - Simple API for working with the command line arguments and options</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Codec" href="http://jakarta.apache.org/commons/codec/" target="_blank">Codec</a>
								</td>
								<td style="FONT-SIZE: 75%">Commons Codec - Encoders and decoders like Base64, Hex, phonetic encodings and URLs</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Collections" href="http://jakarta.apache.org/commons/collections/" target="_blank">Collections</a>
								</td>
								<td style="FONT-SIZE: 75%">Collections - Filling the holes left in Sun's Collections API</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Configuration" href="http://jakarta.apache.org/commons/configuration/" target="_blank">Configuration</a>
								</td>
								<td style="FONT-SIZE: 75%">Commons Configuration - Generic API enabling configuration from a variety of sources</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for DBCP" href="http://jakarta.apache.org/commons/dbcp/" target="_blank">DBCP</a>
								</td>
								<td style="FONT-SIZE: 75%">DBCP - Connection pooling implementations</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for DBUtils" href="http://jakarta.apache.org/commons/dbutils/" target="_blank">DBUtils</a>
								</td>
								<td style="FONT-SIZE: 75%">DbUtils - Set of classes designed to make working with JDBC easier</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Digester" href="http://jakarta.apache.org/commons/digester/" target="_blank">Digester</a>
								</td>
								<td style="FONT-SIZE: 75%">Struts Digester - Configure an XML/Java mapping with actions when patterns are recognized</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Discovery" href="http://jakarta.apache.org/commons/discovery/" target="_blank">Discovery</a>
								</td>
								<td style="FONT-SIZE: 75%">Discovery - Discovering, or finding, implementations for pluggable interfaces</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for DNSJava" href="http://www.xbill.org/dnsjava" target="_blank">DNSJava</a>
								</td>
								<td style="FONT-SIZE: 75%">DNS in Java - Supporting common record types, queries, zone transfers and dynamic updates</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for doclet" href="http://java.sun.com/j2se/1.5.0/docs/guide/javadoc" target="_blank">doclet</a>
								</td>
								<td style="FONT-SIZE: 75%">JavaDoc Doclet - Custom output from the types methods and fields in a source tree.</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Dom4j" href="http://www.dom4j.org/" target="_blank">Dom4j</a>
								</td>
								<td style="FONT-SIZE: 75%">DOM4J - XML, XPath and XSLT library</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for DTDParser" href="http://wutka.com/dtdparser.html" target="_blank">DTDParser</a>
								</td>
								<td style="FONT-SIZE: 75%">DTDParse DTD Library - You can use this library to parse a DTD</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for EL" href="http://jakarta.apache.org/commons/el/" target="_blank">EL</a>
								</td>
								<td style="FONT-SIZE: 75%">EL - The JSP 2.0 Expression Language Interpreter from Apache</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for fastutil" href="http://fastutil.dsi.unimi.it/" target="_blank">fastutil</a>
								</td>
								<td style="FONT-SIZE: 75%">FastUtil - Type-specific maps sets and lists with a small memory footprint and fast access</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for FileUpload" href="http://jakarta.apache.org/commons/fileupload/" target="_blank">FileUpload</a>
								</td>
								<td style="FONT-SIZE: 75%">HTTP File Upload Library - Add robust, fast file upload capability to your web applications</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for FreeMarker" href="http://freemarker.sourceforge.net/" target="_blank">FreeMarker</a>
								</td>
								<td style="FONT-SIZE: 75%">HTML Template Engine<a href="http://andyluo.blogjava.net/"><font color="#ffffff">http://andyluo.blogjava.net</font></a></td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for GJT" href="http://www.gjt.org/" target="_blank">GJT</a>
								</td>
								<td style="FONT-SIZE: 75%">Giant Java Tree - Java library consisting entirely of open source components</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for gnu-regex" href="http://www.cacas.org/java/gnu/regexp" target="_blank">gnu-regex</a>
								</td>
								<td style="FONT-SIZE: 75%">GNU Regular Expressions - Implementation of a traditional (non-POSIX) NFA regex engine</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Groovy" href="http://groovy.codehaus.org/" target="_blank">Groovy</a>
								</td>
								<td style="FONT-SIZE: 75%">Groovy - Scripting Language</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for GlassFish" href="http://glassfish.dev.java.net/" target="_blank">GlassFish</a>
								</td>
								<td style="FONT-SIZE: 75%">an oo app server implements JavaEE 5</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Hibernate" href="http://www.hibernate.org/" target="_blank">Hibernate</a>
								</td>
								<td style="FONT-SIZE: 75%">Hibernate - Relational Persistence For Idiomatic Java</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for HiveMind" href="http://jakarta.apache.org/hivemind/" target="_blank">HiveMind</a>
								</td>
								<td style="FONT-SIZE: 75%">HiveMind - A services and configuration microkernel</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for HSQLDB" href="http://hsqldb.sourceforge.net/" target="_blank">HSQLDB</a>
								</td>
								<td style="FONT-SIZE: 75%">HSQLDB - The Java SQL relational database</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for HTMLParser" href="http://htmlparser.sourceforge.net/" target="_blank">HTMLParser</a>
								</td>
								<td style="FONT-SIZE: 75%">HTML Parser - Java library used to parse HTML</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for HTTPClient" href="http://jakarta.apache.org/commons/httpclient/" target="_blank">HTTPClient</a>
								</td>
								<td style="FONT-SIZE: 75%">HTTP Client - Fills holes left by the java.net package, including most recent HTTP standards</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Informa" href="http://informa.sourceforge.net/" target="_blank">Informa</a>
								</td>
								<td style="FONT-SIZE: 75%">Informa - News aggregation library --- LGPL协议</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for IO" href="http://jakarta.apache.org/commons/io/" target="_blank">IO</a>
								</td>
								<td style="FONT-SIZE: 75%">Commons-IO - Utility classes, stream implementations, file filters and endian classes for IO</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for iText" href="http://www.lowagie.com/iText/" target="_blank">iText</a>
								</td>
								<td style="FONT-SIZE: 75%">iText - Generates PDF on the fly</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for J2EE" href="http://java.sun.com/j2ee/1.4/docs" target="_blank">J2EE</a>
								</td>
								<td style="FONT-SIZE: 75%">Java 2 Platform, Enterprise Edition</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for J2SE" href="http://java.sun.com/j2se/1.5.0/docs" target="_blank">J2SE</a>
								</td>
								<td style="FONT-SIZE: 75%">Java2 Standard Edition v5<a class="" title="" href="/Andyluo/archive/2006/04/15/javaprojects.html" target=""><font color="#ffffff">http://www.blogjava.net/Andyluo/archive/2006/04/15/javaprojects.html</font></a></td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JAI" href="http://java.sun.com/products/java-media/jai" target="_blank">JAI</a>
								</td>
								<td style="FONT-SIZE: 75%">Java Advanced Imaging - Network-enabled, scalable, platform-independent image processing</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Jalopy" href="http://jalopy.sourceforge.net/" target="_blank">Jalopy</a>
								</td>
								<td style="FONT-SIZE: 75%">Jalopy Source Formatter - Formats Java source code according to widely configurable rules</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Jasper" href="http://jakarta.apache.org/tomcat/" target="_blank">Jasper</a>
								</td>
								<td style="FONT-SIZE: 75%">Jasper - Tomcat JSP engine<a href="http://andyluo.blogjava.net/"><font color="#ffffff">http://andyluo.blogjava.net</font></a></td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JasperReports" href="http://jasperreports.sourceforge.net/" target="_blank">JasperReports</a>
								</td>
								<td style="FONT-SIZE: 75%">JasperReports - Free Java reporting library</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Java3d" href="http://java.sun.com/products/java-media/3D" target="_blank">Java3d</a>
								</td>
								<td style="FONT-SIZE: 75%">Java3D - Object-oriented interfaces that support a simple, high-level programming mode</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JavaComm" href="http://java.sun.com/products/javacomm/" target="_blank">JavaComm</a>
								</td>
								<td style="FONT-SIZE: 75%">Java Communications - API for technologies such as voice mail, fax and smartcards</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JavaGroups" href="http://www.javagroups.com/" target="_blank">JavaGroups</a>
								</td>
								<td style="FONT-SIZE: 75%">JavaGroups - Reliable multicast communication enable processes to send messages to each other</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Jaxen" href="http://jaxen.codehaus.org/" target="_blank">Jaxen</a>
								</td>
								<td style="FONT-SIZE: 75%">Jaxen XPath Processor - Object model walker; evaluate XPath expressions in dom4j and JDOM</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JAXME" href="http://ws.apache.org/jaxme/" target="_blank">JAXME</a>
								</td>
								<td style="FONT-SIZE: 75%">JaxMe 2 - Open source implementation of JAXB</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JClassLib" href="http://www.ej-technologies.com/products/jclasslib/overview.html" target="_blank">JClassLib</a>
								</td>
								<td style="FONT-SIZE: 75%">JClassLib - Library for reading, modifing and writing Java class files and bytecode</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JCommon" href="http://www.jfree.org/jcommon" target="_blank">JCommon</a>
								</td>
								<td style="FONT-SIZE: 75%">JCommon - Collection of useful classes used by JFreeChart, JFreeReport and other projects</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JCrontab" href="http://jcrontab.sourceforge.net/" target="_blank">JCrontab</a>
								</td>
								<td style="FONT-SIZE: 75%">JCronTab - Scheduler written in Java, provide a fully functional schedules for Java projects</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JDIC" href="https://jdic.dev.java.net/" target="_blank">JDIC</a>
								</td>
								<td style="FONT-SIZE: 75%">JDIC - JDesktop Integration Components</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JDNC" href="https://jdnc.dev.java.net/" target="_blank">JDNC</a>
								</td>
								<td style="FONT-SIZE: 75%">JDNC - JDesktop Network Components</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JDO" href="http://java.sun.com/products/jdo" target="_blank">JDO</a>
								</td>
								<td style="FONT-SIZE: 75%">Java Data Objects - Direct storage of Java domain model instances into a database</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JDOM" href="http://www.jdom.org/" target="_blank">JDOM</a>
								</td>
								<td style="FONT-SIZE: 75%">JDOM XML Library - For accessing, manipulating and outputting XML data from Java code.</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JetSpeed" href="http://portals.apache.org/jetspeed-1/" target="_blank">JetSpeed</a>
								</td>
								<td style="FONT-SIZE: 75%">JetSpeed - Java Portal Server<a class="" title="" href="/Andyluo/archive/2006/04/15/javaprojects.html" target=""><font color="#ffffff">http://www.blogjava.net/Andyluo/archive/2006/04/15/javaprojects.html</font></a></td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JEXL" href="http://jakarta.apache.org/commons/jexl/" target="_blank">JEXL</a>
								</td>
								<td style="FONT-SIZE: 75%">Java Expression Language - is an embedable expression language engine</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JFreeChart" href="http://www.jfree.org/jfreechart" target="_blank">JFreeChart</a>
								</td>
								<td style="FONT-SIZE: 75%">JFreeChart - Free library for generating charts, including pie, bar, line and areas charts</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JGroups" href="http://www.jgroups.org/" target="_blank">JGroups</a>
								</td>
								<td style="FONT-SIZE: 75%">JGroups - Multicast communication toolkit</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JMeter" href="http://jakarta.apache.org/jmeter/" target="_blank">JMeter</a>
								</td>
								<td style="FONT-SIZE: 75%">JMeter - Load testing applcation</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JMF" href="http://java.sun.com/products/java-media/jmf/" target="_blank">JMF</a>
								</td>
								<td style="FONT-SIZE: 75%">Java Media Framework - Library for audio, video and other time-based media</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JMock" href="http://jmock.codehaus.org/" target="_blank">JMock</a>
								</td>
								<td style="FONT-SIZE: 75%">JMock - Testing library<a class="" title="" href="/Andyluo/archive/2006/04/15/javaprojects.html" target=""><font color="#ffffff">http://www.blogjava.net/Andyluo/archive/2006/04/15/javaprojects.html</font></a></td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JSF" href="http://java.sun.com/j2ee/javaserverfaces" target="_blank">JSF</a>
								</td>
								<td style="FONT-SIZE: 75%">JavaServer Faces - Web Framework</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JSword" href="http://www.crosswire.org/jsword" target="_blank">JSword</a>
								</td>
								<td style="FONT-SIZE: 75%">JSword - Bible software in Java, compatible with the Sword project for C/C++</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JTidy" href="http://jtidy.sourceforge.net/" target="_blank">JTidy</a>
								</td>
								<td style="FONT-SIZE: 75%">JTidy - HTML syntax checker</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JUnit" href="http://www.junit.org/" target="_blank">JUnit</a>
								</td>
								<td style="FONT-SIZE: 75%">JUnit - Regression testing framework used by the developer who implements unit tests in Java</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for JXPath" href="http://jakarta.apache.org/commons/jxpath/" target="_blank">JXPath</a>
								</td>
								<td style="FONT-SIZE: 75%">JXPath Library - Simple interpreter of an expression language called XPath</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Lang" href="http://jakarta.apache.org/commons/lang/" target="_blank">Lang</a>
								</td>
								<td style="FONT-SIZE: 75%">Lang - Utilities including Enums, String manipulation, reflection, serialization and more</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Log4J" href="http://logging.apache.org/log4j/" target="_blank">Log4J</a>
								</td>
								<td style="FONT-SIZE: 75%">Log4J - Fast logging API that lets you configure logging at runtime</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Logging" href="http://jakarta.apache.org/commons/logging/" target="_blank">Logging</a>
								</td>
								<td style="FONT-SIZE: 75%">Commons Logging - Simple wrapper API around multiple logging APIs</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Lucene" href="http://jakarta.apache.org/lucene/" target="_blank">Lucene</a>
								</td>
								<td style="FONT-SIZE: 75%">Lucene - high-performance, full-featured text search engine written entirely in Java</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Math" href="http://jakarta.apache.org/commons/math/" target="_blank">Math</a>
								</td>
								<td style="FONT-SIZE: 75%">Math - Library of lightweight, self-contained mathematics and statistics components</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Net" href="http://jakarta.apache.org/commons/net/" target="_blank">Net</a>
								</td>
								<td style="FONT-SIZE: 75%">Network Library - Support for Finger, Whois, TFTP, Telnet, FTP, NNTP, etc developed by ORO</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for OJB" href="http://db.apache.org/ojb/" target="_blank">OJB</a>
								</td>
								<td style="FONT-SIZE: 75%">OJB - O/R tool that allows transparent persistence</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for OpenJMS" href="http://openjms.sourceforge.net/" target="_blank">OpenJMS</a>
								</td>
								<td style="FONT-SIZE: 75%">Open source JMS server</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for ORO" href="http://jakarta.apache.org/oro/" target="_blank">ORO</a>
								</td>
								<td style="FONT-SIZE: 75%">ORO - Text processing library</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for OSCache" href="http://www.opensymphony.com/oscache/" target="_blank">OSCache</a>
								</td>
								<td style="FONT-SIZE: 75%">OSCache - A high performance J2EE caching framework</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for PJA" href="http://www.eteks.com/pja/en/" target="_blank">PJA</a>
								</td>
								<td style="FONT-SIZE: 75%">Pure Java AWT - Toolkit for drawing graphics without any native graphics resources</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for PMD" href="http://pmd.sourceforge.net/" target="_blank">PMD</a>
								</td>
								<td style="FONT-SIZE: 75%">PMD - Scans Java source code for potential problems</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for POI" href="http://jakarta.apache.org/poi/" target="_blank">POI</a>
								</td>
								<td style="FONT-SIZE: 75%">POI - Java OLE 2 Manipulator</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Pool" href="http://jakarta.apache.org/commons/pool/" target="_blank">Pool</a>
								</td>
								<td style="FONT-SIZE: 75%">Commons Pooling - provides an generic, configurable Object-pooling API</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Primitives" href="http://jakarta.apache.org/commons/primitives/" target="_blank">Primitives</a>
								</td>
								<td style="FONT-SIZE: 75%">Primitives - Collection of types and utilities optimized for working with Java primitives</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Proxool" href="http://proxool.sourceforge.net/" target="_blank">Proxool</a>
								</td>
								<td style="FONT-SIZE: 75%">Java connection pool</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Quartz" href="http://www.opensymphony.com/quartz" target="_blank">Quartz</a>
								</td>
								<td style="FONT-SIZE: 75%">Quartz - J2EE open source job scheduler</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Regexp" href="http://jakarta.apache.org/regexp" target="_blank">Regexp</a>
								</td>
								<td style="FONT-SIZE: 75%">Jakarta Regular Expressions - Java RegEx library under BSD style license</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Rhino" href="http://www.mozilla.org/rhino" target="_blank">Rhino</a>
								</td>
								<td style="FONT-SIZE: 75%">Mozilla JavaScript - open-source implementation of JavaScript written entirely in Java</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Seraph" href="http://opensource.atlassian.com/seraph/" target="_blank">Seraph</a>
								</td>
								<td style="FONT-SIZE: 75%">Seraph - Atlassian Security Framework</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for SiteMesh" href="http://www.opensymphony.com/sitemesh" target="_blank">SiteMesh</a>
								</td>
								<td style="FONT-SIZE: 75%">A web-page layout and decoration framework</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Slide" href="http://jakarta.apache.org/slide/" target="_blank">Slide</a>
								</td>
								<td style="FONT-SIZE: 75%">Slide - Content repository, can serve as a basis for CMS</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for SOAP" href="http://ws.apache.org/soap/" target="_blank">SOAP</a>
								</td>
								<td style="FONT-SIZE: 75%">Apache Soap - implementation of the SOAP submission to W3C</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Speedo" href="http://speedo.objectweb.org/" target="_blank">Speedo</a>
								</td>
								<td style="FONT-SIZE: 75%">OSS JDO implementation<font color="#ffffff">转载自</font><a href="http://andyluo.blogjava.net/"><font color="#ffffff">http://andyluo.blogjava.net</font></a></td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Spring" href="http://www.springframework.org/" target="_blank">Spring</a>
								</td>
								<td style="FONT-SIZE: 75%">Server Side alternative to J2EE APIs</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Struts" href="http://struts.apache.org/" target="_blank">Struts</a>
								</td>
								<td style="FONT-SIZE: 75%">Jakarta Struts - open source framework for building web applications</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Tapestry" href="http://jakarta.apache.org/tapestry/" target="_blank">Tapestry</a>
								</td>
								<td style="FONT-SIZE: 75%">Tapestry - Web Framework</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Turbine" href="http://jakarta.apache.org/turbine/" target="_blank">Turbine</a>
								</td>
								<td style="FONT-SIZE: 75%">Turbine - Servlet based framework allowing developers to quickly build secure web applications</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for UDDI4J" href="http://uddi4j.sourceforge.net/" target="_blank">UDDI4J</a>
								</td>
								<td style="FONT-SIZE: 75%">UDDI4J - Library that provides an API to interact with a UDDI registry</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Validator" href="http://jakarta.apache.org/commons/validator/" target="_blank">Validator</a>
								</td>
								<td style="FONT-SIZE: 75%">Validtator - Validate data from user input</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Velocity" href="http://jakarta.apache.org/velocity/" target="_blank">Velocity</a>
								</td>
								<td style="FONT-SIZE: 75%">Velocity - Support for clean, quick MVC web development and support for the Struts framework</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Village" href="http://share.whichever.com/village" target="_blank">Village</a>
								</td>
								<td style="FONT-SIZE: 75%">Village - API that sits on top of the JDBC to make it easier to interact with a JDBC</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for WebWork 2" href="http://www.opensymphony.com/webwork/" target="_blank">WebWork 2</a>
								</td>
								<td style="FONT-SIZE: 75%">Next generation of WebWork</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Xalan" href="http://xml.apache.org/xalan-j/" target="_blank">Xalan</a>
								</td>
								<td style="FONT-SIZE: 75%">Xalan - XSLT processor for transforming XML documents into HTML, text, or XML</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for XDoclet" href="http://xdoclet.sourceforge.net/" target="_blank">XDoclet</a>
								</td>
								<td style="FONT-SIZE: 75%">XDoclet - Code generation engine</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for Xerces" href="http://xml.apache.org/xerces2-j" target="_blank">Xerces</a>
								</td>
								<td style="FONT-SIZE: 75%">Xerces2 - The next generation of high performance, XML parsers in the Apache Xerces family</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for XMLBeans" href="http://xmlbeans.apache.org/" target="_blank">XMLBeans</a>
								</td>
								<td style="FONT-SIZE: 75%">XMLBeans - XML-Java binding tool<font color="#ffffff">转载自</font><a href="http://andyluo.blogjava.net/"><font color="#ffffff">http://andyluo.blogjava.net</font></a></td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for XMLPull" href="http://www.xmlpull.org/" target="_blank">XMLPull</a>
								</td>
								<td style="FONT-SIZE: 75%">XMLPull - Defines a simple pull parsing API that does pull XML parsing from J2ME to J2EE</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for XMLRPC" href="http://ws.apache.org/xmlrpc/" target="_blank">XMLRPC</a>
								</td>
								<td style="FONT-SIZE: 75%">XML-RPC - Implementation of XML-RPC, using XML over HTTP to implement remote procedure calls</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for XNI" href="http://xml.apache.org/xerces2-j" target="_blank">XNI</a>
								</td>
								<td style="FONT-SIZE: 75%">Xerces Native Interface - Framework for streaming a document and constructing generic parsers</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for XOM" href="http://www.cafeconleche.org/XOM/" target="_blank">XOM</a>
								</td>
								<td style="FONT-SIZE: 75%">XML Object Model - Tree-based API for processing XML that strives for correctness and simplicity.</td>
						</tr>
						<tr>
								<td>
										<a title="Homepage for XStream" href="http://xstream.codehaus.org/" target="_blank">XStream</a>
								</td>
								<td style="FONT-SIZE: 75%">XML serialization</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/onlykeke/aggbug/42022.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/onlykeke/" target="_blank">奇葛格</a> 2006-04-19 23:23 <a href="http://www.blogjava.net/onlykeke/articles/42022.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java框架简单感受</title><link>http://www.blogjava.net/onlykeke/articles/42021.html</link><dc:creator>奇葛格</dc:creator><author>奇葛格</author><pubDate>Wed, 19 Apr 2006 15:13:00 GMT</pubDate><guid>http://www.blogjava.net/onlykeke/articles/42021.html</guid><wfw:comment>http://www.blogjava.net/onlykeke/comments/42021.html</wfw:comment><comments>http://www.blogjava.net/onlykeke/articles/42021.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/onlykeke/comments/commentRss/42021.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/onlykeke/services/trackbacks/42021.html</trackback:ping><description><![CDATA[jbob兄的几句话说得很好：<br />当jdbc写sql麻烦的时候，hibernate等orm工具出现了。<br />当ejb复杂，繁琐的时候，spring等等又出来了。<br />当jsp/servlet依然很繁琐的时候，struts,webwork等等MVC结构的引入，freemarker,velocity等等页面膜版语言出现了。然后便是tapestry,jsf等等.<br />随着框架的引入，带来最多的便是配置，大量的XML被引入到工程项目中。<br />于是java anototion不失时机地出来了，大家可以直接在java类里面进性配置。<br />工具，框架在发展，java人的关注点很多。几千个妖精在打架，大家学都学不完。<br /><br /><br /><br />曾用过JSF，目前来说仍然是基于jsp(虽然宣称可以有其他的实现)，大量的标签（我比较烦标签，标签的引入压根就是引增加复杂性），然后是比较烦琐的xml配置，像我这种懒人，觉得这样的开发就是不太爽。<br /><br />Tapestry没有仔细深究，只是感觉代码限制性较多，束缚手脚，不知道最新的版本什么效果。<br /><br />还是比较喜欢wicket的开发方式，虽然不太成熟且也有一定应用范围的限制。<br />（不断补充.....）<img src ="http://www.blogjava.net/onlykeke/aggbug/42021.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/onlykeke/" target="_blank">奇葛格</a> 2006-04-19 23:13 <a href="http://www.blogjava.net/onlykeke/articles/42021.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DetachableModel in Wicket</title><link>http://www.blogjava.net/onlykeke/articles/41734.html</link><dc:creator>奇葛格</dc:creator><author>奇葛格</author><pubDate>Tue, 18 Apr 2006 12:23:00 GMT</pubDate><guid>http://www.blogjava.net/onlykeke/articles/41734.html</guid><wfw:comment>http://www.blogjava.net/onlykeke/comments/41734.html</wfw:comment><comments>http://www.blogjava.net/onlykeke/articles/41734.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/onlykeke/comments/commentRss/41734.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/onlykeke/services/trackbacks/41734.html</trackback:ping><description><![CDATA[
		<p>POJO不直接显示在当前页面中的model部分，如果要传入下一个页面，可以在onAttach()方法中获取，既节省session，又满足“只取需要的”的精简原则。</p>
<img src ="http://www.blogjava.net/onlykeke/aggbug/41734.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/onlykeke/" target="_blank">奇葛格</a> 2006-04-18 20:23 <a href="http://www.blogjava.net/onlykeke/articles/41734.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>