@
fireflyc 在
晓风的这篇博文 的回复,引起了我的一些思考,考虑到内容较多,就单独写成一篇博客吧:
-------------------下面是正文的分隔线-----------------------------------
那么我也聊一下
Nutz 这个框架的设计思想,或者叫做“精神”,或者随便怎么叫它。
我希望 Nutz 是你一个乖巧的奴仆
并且它不是你唯一的奴仆
Nutz 框架对使用者的态度
不是:
“要这样编程序!”
而是:
“我能为你做些什么?”
它存在的意义是想努力
帮大家处理一些编程工作中很烦琐的问题。
它对自己的最低要求就是:
“不招人讨厌”
它努力的在理解现在的程序员主人真正喜欢什么,又讨厌什么
比如 ORM:
为什么大家用 ORM 呢?因为大多数人都讨厌拼 SQL,很麻烦。但是有时候又不得不用一下 SQL。所以 ORM 对大多数程序员主人的最大的意义(虽然不是唯一的)就是:
省却了拼装 SQL 的烦恼
因此
Nutz.Dao 就替你拼 SQL。 实际上,它是 Hibernate 和 iBatis 的一个折中。
它可以支持你随便怎么写自己的 SQL,也可以根据一个对象,替你拼出 SQL
但是
它仅此而已。
至于分页,条件查询什么的,则是顺理成章的事。
比如 Ioc
Ioc 的意义就是
解耦
我发现有很多程序员其实不习惯 Ioc 方式。
有些经验的人,拥有自己的解耦方式。
当然更多的人喜欢 Ioc 的方式,他们使用 Spring 。
Spring 的 XML 配置语法过于繁琐,而新的基于Java注解的 Ioc 框架(比如 Guice),实际上就是把耦合写在另外的一堆 Java 文件里,并且部署后似乎很难修改。
所以
Nutz.Ioc 默认选用了 JSON,(又是一个折中:书写不麻烦,但是部署以后可以随时修改)
当然,它也支持你把耦合写成任何样子,如 XML,甚至数据库,扩展它一个接口就可以了。
关于这一点, 这里有详细的描述:
http://code.google.com/p/nutz/wiki/ioc_ioc_loader
比如 Mvc
至于Mvc,其实什么要放到 M 里边,什么要做成是 V,哪一个又需要写成 C,程序员主人们的理解都有或多或少的偏差。但是无论如何,他们最起码需要做的就是:
HTTP 与 Java 之间映射
Nutz.Mvc 力图做到刚刚够用,只负责粘合 M-V-C, 关于权限,日志,验证,UI 组件的支持统统没有。
同时也不限制你的扩展,比如模板引擎,比如要想支持 freemarker, 添加起支持来很自然。
它努力让配置,约定的形式最自然
比如
Nutz.Dao 中的各种注解, 比如
Nutz.Ioc 的 JSON 配置文件语法。
基本上,现在还没有人抱怨它们很难懂。-- 当然现在
Nutz 使用的人很少也是一个主要原因。
我们还在不断聆听来自各方的抱怨,我们对于批评,尤其是具体的批评,是很饥渴的。
说点形而上的东西
对于现有工具和框架进行改良我是支持的,但是“改良”是一种手段,不是我们追求的目的,不是吗?
Nutz 追求的是让它的程序员主人们最大限度的少写代码:
- 可以让程序员主人少写一行代码
- 可以让程序员主人少读一段文档
- 可以让程序员主人少理解一个概念
- 可以让程序员主人少知道一个约定
这些在我们看来,都是有很有意义的
所以
Nutz 的任何设计,都会考虑到是不是能利用程序员主人现有的知识。
它只假设你熟悉 JAVA,SQL 和 Tomcat。
因为我们的工作要能变得轻松一些,
当市场让老板让我们修改一些代码时,我们不用加班,加班很毁身体。
而且我们也知道如何修改,
因为我们的工具很简单,它让我很容易摆弄,我总能让它服服帖帖的干活,
虽然我们只会 JAVA,SQL 和 Tomcat 的配置
当然
Nutz 不能帮你做到这一点,它不是“银弹”,甚至它是不是“银色的”的都是个问题。
但是起码我希望它能
“在你构思你的项目时,不会是你的另外的一个问题”。
你不会说,我要维护 XXX 的配置文件,我要维护 XXX 的支持类,好累啊。
我不希望它成为程序员主人们的另一个负担,
程序员主人们对待这个框架不需要小心翼翼的,不需要学习很多约定和规则。
我希望使用它不会为你增加工作量,相反,在很多时候,我希望它会帮你降低一点点工作量。
能做到这点我就很满足了。
如果通过改良 SSH 能做到这一点,我当然很高兴,因为能省了不少事。
但是真的能吗?
能做的彻底吗?
SSH 是头几年的设计,在它们发布之初,的确蕴含着很多创新的思想。
但是现在呢?
我想,你已经不会脱口而出的说:“扯淡!SSH 无懈可击!”,其实,很多人都不会,大家只能说:“SSH 真是好强大哟~~~”
我希望一个工具或者框架能够做到:
至于它强大不强大,干我屁事。
所以,
Nutz 也不是大框架,它当然不是,它很小。我很同意你 “
不走大框架的路” 和 “
提高工作效率” 的观点。
但是关于 “
a,一个开发框架,注重实用”
什么样的开发框架呢?
什么叫“实用”呢?
我想你给出的答案是: “
一组基于 SSH 的编码约定”
而
springside 的答案似乎是: “
一组代码例子”
这里的问题在于,你只能完善 SSH,而不能让它有本质上的提升。 Spring 团队可能不会为你做太多修改。
Spring 团队总是有很多伟大的思路
因此,他们很可能干脆不理你。
那么,这会不会限制你呢?
这会不会导致:如果你有更好的主意,可以提高程序员的生产力,有些时候不得不“曲线救国”。
不过我想,
努力做出些东西,让程序员的效率变高,应该是你和我的一个共识
实际上它也是大多数程序员的共识。
而我,希望
Nutz 能成为你所说的 “
a,一个开发框架,注重实用”
分享到:
相关推荐
【标题】:“Nutz迷你项目” “Nutz迷你项目”是一个基于Nutz框架的小型项目实例,旨在帮助开发者快速理解和...通过查看和分析这些文件,你可以更深入地了解Nutz框架的运用,以及如何在实际项目中灵活运用这些知识。
标题“nutz学习资料2”表明这是一份关于Nutz框架的学习资源集合,Nutz是一个基于Java的轻量级框架,旨在提供全面的MVC支持和企业级开发工具。通过这个压缩包,我们可以期待深入理解Nutz框架的核心特性和使用方法。 ...
Nutz是一个功能强大的Java开发框架,它以高效、简洁、灵活为设计原则,旨在简化Java开发者的工作流程。Nutz-1.r.62是该框架的一个版本,它包含了一系列优化和改进,使得开发者在构建应用程序时能更加得心应手。 在...
Nutz是一个轻量级、高性能的Java开发框架,它的核心在于提供了一整套方便快捷的开发工具和组件,使得开发者可以高效地进行Web应用的构建。`nutz-master`是Nutz项目的源码仓库,包含了整个框架的核心代码,是深入理解...
Nutz框架是一个基于Java语言的轻量级开源框架,它以简单、实用、高效为设计理念,为Java开发者提供了一整套全面的开发解决方案。Nutz框架由一系列子项目组成,包括Nutz IOC(依赖注入)、Nutz DAO(数据访问对象)、...
6. **模块化设计**:Nutz框架的设计是高度模块化的,开发者可以根据实际需求选择使用哪些模块,避免引入不必要的依赖,提高了项目的可维护性。 7. **社区活跃**:Nutz有一个活跃的社区,不断更新和维护,确保框架的...
Nutz v1.r.69.20220703是该框架的一个版本,提供了丰富的功能和优化,旨在简化Java开发过程,提高开发效率。这个版本的压缩包包含了必要的文件,如`说明.htm`可能是关于框架的使用指南或更新日志,而`nutz-v1.r.69.v...
为此,Nutz框架应运而生,旨在通过一系列轻量级的工具集来提高Java Web开发者的生产效率。 - **目标用户**:适用于希望提高开发效率的Java Web开发者,特别是对现有的框架如Spring、Hibernate等感到繁琐或复杂的...
Nutz 框架集成了许多功能,包括MVC、ORM、DAO、JSON、AJAX、安全控制等,为Java程序员提供了一站式的解决方案。"nutz-1.a.25_jdoc.zip" 是Nutz框架1.a.25版本的Java文档压缩包,其中包含了详细的API参考和使用指南,...
4. **MVC(Model-View-Controller)**:NUTZ提供了一个简单易用的MVC实现,帮助开发者将业务逻辑、视图呈现和数据模型分离,提高代码可读性和维护性。 5. **DAO(Data Access Object)**:NUTZ的数据库访问层,提供...
这个项目由Nutz社区维护,旨在增强Nutz的核心功能,提高开发者的生产力。 Nutzmore中的插件和集成库涵盖了多个方面,包括但不限于: 1. **ORM(对象关系映射)**:Nutz ORM提供了强大的数据库操作支持,包括SQL...
Nutz的核心特点包括轻量、快速、灵活,以及对现有Java生态系统的良好集成。这个压缩包文件包含的是Nutz开发中可能会用到的一些jar包,这些库是Nutz框架正常运行所必需的或者是与其相关的工具类库。 在Java开发中,...
6. **API友好**:Nutz的API设计简洁明了,遵循Java的编程习惯,易于理解和使用。同时,Nutz提供了丰富的文档和示例,帮助开发者快速上手。 7. **性能优化**:20170512版本的Nutz-jar包可能已经针对当时的Java版本...
Nutz框架提供了多个组件,包括针对JDBC的Dao、Ioc容器、Mvc框架、Json处理、类型转换、语言扩展、Aop(面向切面编程)、插件机制以及资源管理。 **Dao手册**: Nutz.Dao是Nutz框架的一个关键部分,它提供了一种轻量...
Nutz MVC的主要组件包括控制器(Controller)、模型(Model)和视图(View),它们共同构成了MVC设计模式的核心: 1. **控制器(Controller)**:控制器负责接收HTTP请求,解析请求参数,调用相应的业务逻辑(即...
Nutz的核心设计理念是“提高生产力”。这意味着框架的所有组成部分都围绕着如何帮助开发者更快地完成工作、减少冗余代码以及保持运行时效率而设计。具体而言: - **简化开发流程**:通过提供一系列轻量级模块,Nutz...
Nutz框架的缓存设计使得缓存操作变得简单易用,减少了编码工作量,让开发者能更专注于业务逻辑。 总结来说,Nutz框架的缓存机制提供了一套全面的解决方案,包括DAO层的自动缓存、多种缓存策略、自定义缓存实现以及...
1. **Nutz框架**:Nutz的核心特性,如依赖注入(DI)、AOP(面向切面编程)、ORM(对象关系映射)等,以及它们如何帮助简化代码和提高可维护性。 2. **MVC模式**:Nutz支持MVC架构,学习如何在Nutz中实现模型、视图...
本篇文章将详细阐述Nutz Redis集成过程中的关键知识点,以及如何避免因依赖包问题导致的困扰。 1. **Nutz框架**:Nutz是一个轻量级的Java Web开发框架,它提供了MVC模式,ORM支持,以及丰富的工具类。Nutz的目标是...