Java应用框架 Nutz
fmms
13年前
<p><span style="font-size:small;">对于 Java 程序员来说,除 <i>SSH</i> 之外,的另一个选择: </span></p> <p><span style="font-size:x-large;"><b>Nutz</b></span> </p> <p><span style="color:#008800;">当然,它是开源的,并且是完全免费的,同时也是商业友好的(Licensed under the Apache License, Version 2.0)。 </span></p> <p><a href="/misc/goto?guid=4958195042225762948" rel="nofollow">最新的源码托管地址已经转移到 Github 上</a> </p> <h2><a name="同传统的_SSH_相比,它具备如下特点:"></a>同传统的 SSH 相比,它具备如下特点:</h2> <ul> <li><strong>轻</strong> -- 当前最新版,整个 jar 文件共 950k </li> <li><strong>薄</strong> -- 针对 <strong>JDBC</strong> 的薄封装,无缓存 </li> <li><strong>全</strong> -- 提供了 <strong>Dao</strong> (ORM, SQL 管理), Ioc, Aop, Mvc, Json解析 等必要功能 </li> <li><strong>活</strong> -- 各个部分可以独立使用,比如在 <span style="color:#ff0000;"><strong>Spring</strong></span> 里采用 <strong>Nutz.Dao</strong> ,又比如在 <strong>Nutz.Ioc</strong> 里使用 <span style="color:#ff0000;"><strong>Hibernate</strong></span> 等 </li> <li><strong>整</strong> -- 它所有功能均不依赖第三方 jar 文件。 </li> </ul> <blockquote> 这就意味着:如果一个 Web 应用,你在 WEB-INF/lib 下只 需要放置一个 nutz.jar 就够了 </blockquote> <p></p> <blockquote> <span style="color:#080;"><i>当然你要使用其它的连接池,数据库驱动,打印PDF支持等功能,还需要自行添置 jar 包。</i></span> </blockquote> <h2><a name="Nutz_为谁而设计?"></a>Nutz 为谁而设计?</h2> <ul> <li>如果你觉得 <span style="color:#f00;"><strong>Hibernate</strong></span> 控制比较繁琐,<span style="color:#f00;"><strong>iBatis</strong></span> 编写SQL又比较麻烦,<span style="color:blue;"><strong>Nutz.Dao</strong></span> 专为你设计。 </li> <li>如果你觉得在多个服务器部署或者修改 <span style="color:#f00;"><strong>Spring</strong></span> 配置文件很麻烦,<span style="color:blue;"><strong>Nutz.Ioc</strong></span> 专为你设计 </li> <li>如果你觉得直接写 <span style="color:#f00;"><strong>XML</strong></span> 配置文件很麻烦,可视化编辑器又没控制感,<span style="color:blue;"><strong>Nutz.Mvc</strong></span> 专为你设计 </li> <li>如果你觉得 JSON 转换很麻烦(要写超过一行以上的代码),<span style="color:blue;"><strong>Nutz.Json</strong></span> 专为你设计 </li> <li>如果你觉得 Java 语法不如 <span style="color:#f00;"><strong>Ruby</strong></span> 便捷, <span style="color:blue;"><strong>Nutz.Castor 以及 Nutz.Lang</strong></span> 专为你设计 </li> <li>如果你以前根本没接触过 <i>SSH</i> ,只使用 JDBC 编程, <span style="color:blue;"><strong>整个 Nutz</strong></span> 专门为你设计 </li> <li>你只要在你的 classpath 下部署这个 <span style="color:#ff00ff;font-size:medium;"><strong>900多K</strong></span> 的小 jar 包,你会得到上述所有好处 </li> </ul> <h2><a name="我要使用_Nutz,该从那里入手呢?"></a>我要使用 Nutz,该从那里入手呢?</h2> <ol> <li><a href="/misc/goto?guid=4958195056019343929" rel="nofollow">下载 Nutz</a> -- <i>包括文档和源码都包含在下载包中</i> </li> <li><strong>阅读文档</strong> -- <a href="/misc/goto?guid=4959499227955792938">Wiki 页面</a> 有充分的介绍,每个部分都有 Hello World </li> <li><strong>运行 Demo</strong> -- <a href="/misc/goto?guid=4959499228053539926" rel="nofollow">Demo 在不断的添加中 ...</a> <i>现在已有 7 个可用 Demo</i> </li> <li><strong>编译</strong> -- <a href="/misc/goto?guid=4959499228134016918">请看详细介绍</a> </li> <li><strong>运行测试</strong> -- <a href="/misc/goto?guid=4959499228212417910">请看详细介绍</a> </li> </ol> <p>另外: </p> <ol> <li>Amosleaf 写了一个 <a href="/misc/goto?guid=4959499228294201412" rel="nofollow">Nutz.Dao 入门的例子</a> </li> <li>Peter Tung 写的 <a href="/misc/goto?guid=4959499228373596965" rel="nofollow">Nutz Json Book</a> 几分钟可以让你对 Json 解析入门 </li> </ol> <h2><a name="Nutz_的质量"></a>Nutz 的质量</h2> <blockquote> 托社区的福,截至到现在为止,Nutz 一共通过了超过 <span style="color:#ff00ff;font-size:medium;"><strong>610</strong></span> 个 <a href="/misc/goto?guid=4959499228465112631" rel="nofollow">JUnit测试</a>。其中有 <span style="color:#ff0000;font-size:medium;"><strong>152</strong></span> 个用例针对数据库,并在如下数据库中工作良好: <ul> <li><a href="/misc/goto?guid=4958195072265808244" rel="nofollow">H2</a> </li> <li><a href="/misc/goto?guid=4958191778134083416" rel="nofollow">MySql</a> </li> <li><a href="/misc/goto?guid=4958195075082740092" rel="nofollow">Oracle</a> </li> <li><a href="/misc/goto?guid=4958183761065211007" rel="nofollow">Postgresql</a> </li> <li><a href="/misc/goto?guid=4958195076509185170" rel="nofollow">SqlServer2005</a> </li> <li><a href="/misc/goto?guid=4958195076509185170" rel="nofollow">SqlServer2000</a> </li> <li><a href="/misc/goto?guid=4958195077925379071" rel="nofollow">DB2</a> </li> </ul> </blockquote> <p></p> <blockquote> 截止到 1.b.35 为止,大约有 66% 的代码被 JUnit 测试用例覆盖: </blockquote> <blockquote> <img title="Java应用框架 Nutz" border="0" alt="Java应用框架 Nutz" src="https://simg.open-open.com/show/ee6a2320626ff36da11aef710ce4ab40.png" width="493" height="334" /> </blockquote> <blockquote> 更多详情,请请 <a href="/misc/goto?guid=4959499228831099231" rel="nofollow">查看最新emma测试报告</a> </blockquote> <blockquote> 在一个功能告一段落以后,我通常会花1-2个晚上在一边咂着廉价的红酒一边颇有成就感的书写JUnit测试。 通常我会用 JUnit 把我自己击溃,紧接着的那几天我都努力让那个该死红条变绿,之后,又想方设法写出 新的Junit测试试图让它再度变红。并且我还要保证所做的修改不能让代码膨胀,这的确让我死掉了不少脑 细胞。这些测试中,不仅涵盖各种功能上的测试,也涵盖了一些跨越线程的测试。在以后,我会针对代码执 行的效率加入一些新的测试。 </blockquote> <p></p> <blockquote> 我能保证的就是Nutz的代码是小巧的,以及通过尽可能多的 JUnit 测试。但是所有我能做的也就只是 这些了,找出剩下的那些代码上的缺陷,就应该交给 Nutz 第一批“小白”们了。“小白”们,加油!我 支持你们... </blockquote> <blockquote> <span style="color:#999999;"><sup>小白: 是小白鼠的简称。小白鼠是实验室的最爱,实验室是产生新东西的地方。</sup></span> </blockquote> <blockquote> <span style="color:#008800;">注: 从 09年9月开始,随着“小白”们的不断增多,项目的 Issue 列表越来越长,不断的有人发现缺陷,也不断的有人 提交修复,现在,基本上是整个社区在决定 Nutz 的品质。</span> </blockquote> <p></p> <hr /> <h2><a name="Nutz_的未来"></a>Nutz 的未来</h2> <blockquote> Nutz 是一个新兴的开源项目 </blockquote> <p></p> <blockquote> <b>它没有过去,只有未来</b> </blockquote> <blockquote> 我可以保证,在未来,Nutz 的代码 <span style="color:#ff0000;"><strong>绝对不会膨胀</strong></span>。 所有的功能设计的出发点就是最大限度给予程序员实惠。 </blockquote> <ul> <li>下面一些计划会被执行,但是不一定按照我给出的顺序:<strong> </strong></li> <pre class="prettyprint"><strong><span class="pun">*</span><span class="pln"> </span><span class="pun">为</span><span class="pln"> </span><span class="typ">Nutz</span><span class="pln"> </span><span class="pun">的</span><span class="pln"> </span><span class="typ">Ioc</span><span class="pln"> </span><span class="pun">和</span><span class="pln"> </span><span class="typ">Mvc</span><span class="pln"> </span><span class="pun">开发一个代码生成器</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> </span><span class="pun">让</span><span class="pln"> </span><span class="typ">Nutz</span><span class="pun">.</span><span class="pln">mvc </span><span class="pun">支持自动生成缩略图</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> </span><span class="pun">为</span><span class="pln"> </span><span class="typ">Nutz</span><span class="pln"> </span><span class="pun">建立一个项目主页,提供讨论区和</span><span class="pln"> </span><span class="typ">Wiki</span><span class="pln"> </span><span class="pun"> *</span><span class="pln"> </span><span class="pun">提供英文文档</span></strong></pre> </ul> <p></p> <ul> <li><strong><span style="color:#0000ff;"><b>Nutz 会是一个长期的项目</b></span>,因为 </strong></li> <pre class="prettyprint"><span class="pln"> </span><span class="lit">1.</span><span class="pln"> </span><span class="pun">我写它不花钱</span><span class="pln"> </span><span class="lit">2.</span><span class="pln"> </span><span class="pun">我喜欢写代码</span><span class="pln"> </span><span class="lit">3.</span><span class="pln"> </span><span class="pun">我不担心自己的生计</span><span class="pln"> </span><span class="lit">4.</span><span class="pln"> </span><span class="pun">社区很活跃,越来越多的人在贡献代码,测试,提交问题</span></pre> </ul> <p></p> <hr /> <h2><a name="你完全可以让这个项目变得更加美好"></a>你完全可以让这个项目变得更加美好</h2> <ul> <li><a href="/misc/goto?guid=4959499228907741991" rel="nofollow">不编写代码,你可以能为这个项目做很多事情</a> @<a href="/misc/goto?guid=4959499228992233182" rel="nofollow">hilliate</a> </li> <li>你可以随时 <a href="/misc/goto?guid=4958195041473750937" rel="nofollow">提交你发现的问题</a> </li> <li>在 <a href="/misc/goto?guid=4959499229101762628" rel="nofollow">讨论区</a> 分享你的使用心得 </li> <li><span style="color:blue;font-size:medium;"><strong>任何人</strong></span> 用 <span style="color:blue;font-size:medium;"><strong>任何方式</strong></span> => 指出 Nutz 的缺陷,都是被欢迎的 </li> <li>如果你想成为 <a href="/misc/goto?guid=4959499229180741209" rel="nofollow">Nutz Committers</a> 中的一员,请 <a href="/misc/goto?guid=4959499229255048330">阅读这里</a> </li> </ul>