写在前面的话
Java 为什么不能是一门敏捷的语言呢?
起码 Java 是一门优美的编程语言,经过10多年的发展,它几乎已经被应用到了任何地方,在高端的企业服务器上,
手持设备的芯片里,车载设备,智能家电甚至火星车上。在功能上,它广泛的涉足到了软件应用的各个领域,现在,
它开始向桌面和图像处理方面频频发力。 从历史上看它是一门成熟的语言,从现在来看,它是世界上使用最广泛的
语言,从将来看,它是最有前途的语言(现在它依然充满了活力和创新)。
但是,在越来越流行的 Web 开发领域, Java 似乎逐渐露出了疲态。是的,脚本语言们卷起了一场热潮,似乎已经
快可以用“革命”两个字来形容了。而Java,被“脚本小子们”诟病最多的便是 低下的开发效率。
但是,真的是这样的吗?
从本质上来说, Java 语言本身为程序员提供的帮助只有两点,一是语言的语法,二是内置的类库。 现在
从事 Web 开发,大多是采用第三方的类库(或者说是框架),比如流行的 SSH。 所谓 Java 在
Web 开发的低效,不妨这样说比较贴切一些: 采用第三方类库进行开发比较低效。
为了证明这一点,我写作了 Nutz, 它是一组轻便小型的框架的集合, 各个部分可以被独立使用。 而 Nutz 的目标
就是
在力所能及的情况下,最大限度的提高Web开发人员的生产力。
是的,提高生产力是这个框架唯一的目标。 就像 Java 设计之初,考虑最多的是程序员的易用性和运行时效率
的权衡, Nutz 也是这样。希望通过 Nutz, Java 的开发人员可以获得更快的开发速度,更少的代码量,并且这些
以不损害运行时效率为前提。
本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用。
Nutz 可以做什么?
- Dao -- 针对 JDBC 的薄封装,事务模板,无缓存
- Ioc -- JSON 风格的配置文件,声明时切片支持
- Mvc -- 注解风格的配置,内置多文件上传功能
- Json -- 解析和渲染
- Castors -- Java 对象类型转换
- Lang -- 更简洁的 Java 函数以及更丰富的反射支持
- Aop -- 轻便快速的切面编程支持
- Resource -- 资源扫描
它所有的功能均不强制依赖第三方 jar 包
这就意味着:
- 如果一个 Web 应用,你在 WEB-INF/lib 下只 需要放置一个 nutz.jar 就够了
- 当然你要使用连接池,数据库驱动, websocket等功能,还需要自行添置 jar 包。
支持的环境
- JDK5+, 推荐JDK8
- 任意SQL数据库,例如MySQL,Oracle,SqlServer等等
- 任意支持servlet 2.5的web容器, 推荐Tomcat 8.5+/Jetty 9.2+
Nutz 为谁而设计?
- 如果你觉得 Hibernate 控制比较繁琐,iBatis 编写SQL又比较麻烦,Nutz.Dao 专为你设计。
- 如果你觉得在多个服务器部署或者修改 Spring 配置文件很麻烦,Nutz.Ioc 专为你设计
- 如果你觉得直接写 XML 配置文件很麻烦,可视化编辑器又没控制感,Nutz.Mvc 专为你设计
- 如果你觉得 JSON 转换很麻烦(要写超过一行以上的代码),Nutz.Json 专为你设计
- 如果你觉得 Java 语法不如 Ruby 便捷, Nutz.Castor 以及 Nutz.Lang 专为你设计
- 如果你以前根本没接触过 SSH ,只使用 JDBC 编程, 整个 Nutz 专门为你设计
Nutz 的质量
截至到现在为止,Nutz 的 JUnit 用例覆盖率大概是这样的
并且这个数字还在不断增加。
在一个功能告一段落以后,我通常会花1-2个晚上在一边咂着廉价的红酒一边颇有成就感的书写JUnit测试。
通常我会用 JUnit 把我自己击溃,紧接着的那几天我都努力让那个该死红条变绿,之后,又想方设法写出
新的Junit测试试图让它再度变红。并且我还要保证所做的修改不能让代码膨胀,这的确让我死掉了不少脑
细胞。这些测试中,不仅涵盖各种功能上的测试,也涵盖了一些跨越线程的测试。在以后,我会针对代码执
行的效率加入一些新的测试。
我能保证的就是Nutz的代码是小巧的,以及通过尽可能多的 JUnit 测试。但是所有我能做的也就只是
这些了,找出剩下的那些代码上的缺陷,就应该交给 Nutz 第一批“小白”们了。“小白”们,加油!我
支持你们...
小白: 是小白鼠的简称。小白鼠是实验室的最爱,实验室是产生新东西的地方。
Nutz 的未来
Nutz 是一个新兴的开源项目
它没有过去,只有未来
我可以保证,在未来,Nutz 的代码 绝对不会膨胀。 所有的功能设计的出发点就是最大限度给予程序员实惠。
你完全可以让这个项目变得更加美好
- 上 Nutz社区论坛 发帖讨论
- 不编写代码,你可以能为这个项目做很多事情 @hilliate
- 你可以随时 提交你发现的问题(Git@OSC提交你发现的问题)
- 任何人 用 任何方式 => 指出 Nutz 的缺陷,都是被欢迎的
- 如果你想成为 Nutz Committers 中的一员,请 阅读这里
我使用的时候如果出现问题怎么办?
- 上 Nutz社区论坛,有问必答,秒回复
- 到 github(Git@OSC)上报告 issue
- 或者加入 QQ 群
- Nutz社区群(68428921)超级群 -- 感谢 c.A 的支持
- Nutz & XBlink (58444676 超级群) -- 感谢 E-Hunter 的支持