java高效开发框架nutz开发成员专访 -凯发k8国际

2013-12-17  编辑 wangguo 评论(20条) 有60924人浏览
nutz是一个优秀的国产开源项目,它是一组轻便小型的框架的集合,各个部分可以被独立使用,据作者称,nutz的使命就是“解决第三方类库在web项目开发中的低效问题”,而nutz也被称作是“除了ssh之外的另一个选择”。

nutz最初由zozoh(张志昊)于2009年发起,随着项目的发展,越来越多的开发者参与贡献(提交代码、撰写文档、测试bug等),后来逐渐形成了一个1000人左右的社区()。

nutz项目凯发k8国际娱乐官网入口官网:

本期我们采访了nutz开发者社区中的几位主要开发者,请他们来谈谈nutz这一项目的具体情况。


zozoh(张志昊)   wendal(陈镇铖)   胖五(武佩文)    juqkai(朱凯)     ywjno(杨文佳)

nutz 能做什么?设计目标是什么?

zozoh:nutz是一组轻便小型的框架的集合,可以做mvc、数据库访问、json转换、ioc等。目标是比市面上其他的类库设计的好用那么一点点而已。具体来说,包含的组件有:

  • dao:针对jdbc的薄封装,事务模板,无缓存
  • ioc:json 风格的配置文件,声明时切片支持
  • mvc:注解风格的配置,内置多文件上传功能
  • json:解析和渲染
  • castors:java 对象类型转换
  • lang:更简洁的 java 函数以及更丰富的反射支持
  • aop:轻便快速的切面编程支持
  • plugin:轻便的插件机制
  • resource:资源扫描
nutz的目标就是在力所能及的情况下,最大限度的提高web开发人员的生产力,并且这些以不损害运行时效率为前提。

胖五:做web开发比较方便,当然像nutz的dao、json等功能在其他地方也很适用的。

nutz项目发起的初衷、经过?

zozoh:当时做这个项目是因为业界对java在web开发中效率的质疑。其实,经过10多年的发展,java已经相当成熟了,现在从事web开发,大多是采用第三方的类库(框架),比如流行的ssh,所谓java在web开发中的低效,不妨说是由于采用第三方类库进行开发比较低效。

于是我就写了点代码,发到google code上去,然后发个了新闻(),当时也没用很大的企图心做的,毕竟它就是个小类库而已。

wendal:然后我就“上当受骗”了,被吸引进这个项目。

ywjno:我是到了1.b.4x版的时候才参与进来的。

zozoh:wendal是那时候唯一的一个只关注nutz代码质量的用户,其他什么都不关注。那时候有些人给我建议,说怎么发展云云,然后我说你们说得对,然后就给了wendal管理员权限,实际上现在wendal应该是nutz权限最高的一个,我也小心不能总潜水,怕他踢我 -_-!

juqkai:我在某次看见了nutz的新闻,觉得很新奇,就开始研究它的源码,在里面学到了很多东西,然后就开始按我的思路改一些地方,刚开始的时候老是被纠正,反正就是想法很好,代码很臭。

你们是如何设计nutz的?遵循的原则是什么?

zozoh:我希望nutz框架对使用者的态度不是“要这样编程序!”而是“我能为你做些什么?”。它存在的意义是在保证足够的效率的基础上,努力帮大家处理一些编程工作中很烦琐的问题,让编程者用最少的代码做最多的事情,同时控制功能不要膨胀。

我希望一个工具或者框架能够做到:替我做的,做到最好;不替我做的,别挡我的路。nutz努力地在理解现在的程序员主人真正喜欢什么,又讨厌什么。比如:

  • orm对于开发者最大意义是省却了拼装sql的烦恼,因此 nutz.dao 就替你拼 sql。 实际上,它是 hibernate 和 ibatis 的一个折中。
  • ioc 的意义在于解耦,但spring 的 xml 配置语法过于繁琐,而新的基于java注解的 ioc 框架(比如 guice)实际上就是把耦合写在另外的一堆 java 文件里,并且部署后似乎很难修改。所以 nutz.ioc 默认选用了 json(又是一个折中:书写不麻烦,部署以后可以随时修改)
  • 至于mvc,程序员最起码需要做的就是http 与 java 之间的映射,nutz.mvc力图做到刚刚够用,只负责粘合m-v-c,关于权限、日志、验证、ui组件的支持统统没有。同时也不限制你的扩展。
  • nutz努力让配置,约定的形式最自然
胖五:“write less do more”,nutz有着大量的utility方法藏在org.nutz.lang包下,简直就是java开发必备武器库呀。

wendal:好玩、好用。

juqkai:简单、方便、实用。

谈谈nutz项目发起与第1个版本发布之间的过程?遇到了哪些问题?是如何解决的?

zozoh:我是在2008年12月开始写,2009年3月出了第一个版本。由于不是什么高精尖的技术,所以基本没遇到啥问题。

在编码测试发布方面,没什么特别的,主要是我们会强调,如果有一个issue被报了,尽量先写一个测试用例把它重现,然后再修复。

因为nutz编译的时候几乎没什么依赖,所以我们构建项目的时候没用maven,但是wendal还是在maven库里提交了nutz,以便依赖nutz的项目比较方便集成编译。

你们的工作是什么?讲一讲是如何与nutz结缘的?

zozoh:程序员。我发的第一版,所有没有结缘的问题。

胖五:程序员。我是2011年左右才认识并参与nutz的,而且更多的时候算是使用者。当时e-hunter同学推荐给我的,他说来看看,这里有个好用的框架。

wendal:请叫我软件工程师。我是第15版被骗进来的,我“手贱”重写了nutz的aop,还报了一大堆issue,并自己修复了。

ywjno:程序员。当时忘记找啥资料,然后就发现了当时还在google code 上托管的nutz,然后就没然后了。

juqkai:程序员。我是2009年开始关注nutz,刚开始是看到mvc的代码很漂亮,然后看到json、el模块不爽,重写了两次。我只负责写我喜欢的部分,其他的全是zozoh、wendal在处理。

免不了拿nuts和ssh相比,两者的区别是什么?nuts有哪些优势?

zozoh:用起来更爽一点点。

胖五:nutz是简单又方便,ssh有一坨要搞得来的东西。

ywjno:nutz总是能在不经意间见到各种闪光点,而且通过阅读源代码还能对编程等能力有很大的帮助。

nuts的学习成本?

zozoh:个人认为,只要会servlet编程的程序员,8小时内能上手mvc部分,会jdbc的程序员 8 小时内能上手 dao 部分。其他的部分没啥太多学习成本,看看文档就用就是了。

胖五:wendal做了入门视频,看一遍,照着做一遍,一个小时包你入门。剩下的看文档就好了,通俗易懂且大部分都有代码例子,想学不会都难呀。

wendal:一个小时入门,但java菜鸟除外。

胖五:真心见过菜鸟,各种java的基本使用都不会,真心劝那些同学们先学会走路再尝试跑起来。框架是用来提高生产力的,别连语言都不熟悉就上来就用。

ywjno:跟着nutz-demo的readme来自己写一遍应该就能上手了,童叟无欺。当然要想更深入的使用的话,还是需要再仔细阅读文档的。

nutz项目宣称“代码绝对不会膨胀”,这需要你们额外做哪些工作?

zozoh:对某些需求说不,同时把内部抽象的好一些,这样别人扩展会非常方便。

wendal:我喜欢删代码。

juqkai:我的乐趣就在于将绞在一起的逻辑理顺,顺了还会膨胀么?

nutz未来还会加入哪些特性、组件?

zozoh:核心jar不会扩展,正在考虑是否要砍掉一些功能。但是会做一些扩展项目。

胖五:nutz这个核心包已经没啥好加的了,该做的都做了,不该做的也不会再碰。以后会重点放在nutz的扩展上。

nutz项目代码的质量比较高,这是如何做到的?目前有多少提交者?你们如何规范不同人不同风格的代码?

zozoh:因为都是老手写的嘛。手潮的不给提交权限就是了。现在核心包的代码比较稳定了,提交也不多。我个人比较鼓励大家有不同的风格,但是要采用同样的eclipse的代码模板就是了。

胖五:用的人多,大家提的bug就比较多,加上wendal跟zozoh比较勤快,解决迅速,自然质量就上去了。比如经常看到有人在群里咋呼“wendal,给你提了个issue xxx”,不消一两分钟就边能看到wendal回复“done”,神一般的效率。

wendal:一天不敲代码就手痒,伤不起啦。

zozoh:其中将近 1年多,我代码写的很少,wendal提交比较多,注意到这一点以后,我悲哀地发现现在好像没有啥好特别修改的了,于是弱弱地想,要不要出一个重构版,那样就有代码可写了。

ywjno:其实是现在托管到了github的原因,发个pull request过来然后成为提交者是很简单的事情。当然,这需要楼上这几位的code review通过了才行。其实还是很希望看到各位能多提供pull request的。

nutz文档也比较全面,写文档占据了整个项目的多长时间?

zozoh:陆陆续续写的,代码和文档各占一半时间吧。目前正在开发新版的文档写作工具zdoc,通过一个svn服务器就可以实现多人协作,写出漂亮的文档,这种感觉会很美妙的。不喜欢zdoc的同学也可以用markdown来写。

胖五:很惭愧,几乎没怎么写过。

wendal:都是他们干的,我打酱油的。

ywjno:基本就是对文档进行fix typo的人掩面路过……

juqkai:以前都是写一个模块,就把这个模块的文档补上。重点是如果不补,某些人会催,很烦的。

目前nutz社区的情况?

zozoh:nutz目前已经形成了一个1000人左右的社区,有热心的朋友捐给我们几个qq群,方便大家加入、问问题。由于考虑到qq群的氛围,所以wendal会定期踢掉一批长时间潜水的人。所以在qq群里,不时的有人会冒出来说“冒泡防踢”,因此我们的qq群还比较活跃,大家互相也比较亲热。

不过很多问问题的人,通常都会有人来回答你,而且很多问题不是局限于nutz的,但是大多和web 开发有关。

你可以通过这个视频( ) 和这个幻灯片()来更多地了解nutz社区情况。

nutz项目已经4年了,支持你们的动力是什么?在开源项目方面,有哪些心得和感悟?

胖五:动力无非就是想做一件好用的工具给大家,当然首先自己得用着觉得舒服,“吃自己的狗食”嘛,现在只要是java相关开发,必导入nutz.jar。做开源项目,我感觉最难的是坚持更新与坚持投入。

zozoh:因为没有啥放弃的动力就继续搞咯。没啥心得,感悟到是有一点,所谓“天下熙熙,皆为利来;天下攘攘,皆为利往”,我倒要看看这个发誓不盈利的小开源项目是不是能在熙熙攘攘的“天下”保持一份自己的纯静。

wendal:全中国都有自己写的代码,这难道不是件很爽的事情么?

ywjno:在代码里面看到有pull request进去的代码,这就是我的动力。

juqkai:能有一份纯静的东西让自己写,很安心。

nutz项目未来的发展规划?

胖五:会有更多好用好玩的东西出来,语言不再仅限于java,涉及的内容也不在仅限于后台,比如nutz-ui之类的

zozoh:说到这个,维持一个小的核心jar容易,如果java 8出来了,可能考虑重写部分功能。但是继续发展方面颇有点商业的味道,所以我们暂时保密,哈哈。

ywjno:我听楼上几位的安排。

juqkai:有事说一声就行了。

之前wendal提议创建nutz基金会,现在的情况是什么样?

胖五:现在就有呀,之前每个月都给nutz的一个支付宝账号捐钱的,说好等着用这笔钱搞点东东,好像最近几个月都忘了捐了……

zozoh:大半年没有捐了吧,呵呵。等哥们有了钱,捐死它!

wendal:钱?哪里?哪里?
  • 大小: 42 kb


评论 共 20 条
20 楼 mcloginandpwd 2017-08-11 10:44
分享一款代码生成器,拖拽式组件结合流式处理,很容易的访问数据库、http、文件读写操作等等,支持编写javascript、java、freemaker,功能丰富强大,编制规则,可生成一切想要的代码,详见:http://blog.csdn.net/loginandpwd/article/details/76944900,更多资讯:http://blog.csdn.net/loginandpwd/article
19 楼 一个橘子 2016-10-31 19:46
可以,以前也研究过java,不过现在在研究魔方网表了
18 楼 2016-03-09 17:15
还容易误导新手
17 楼 2016-03-09 17:10
别人我不知道,wendal的视频看着太难受了,讲的根本不清楚,说话语无伦次。
16 楼 2014-02-26 09:13
徐风子 写道
国外的公司一般来说都是"各自做精一个功能,然后大家一起协同运作。"
国内的公司一般是 "把一堆别人已经做过的东西拿来“优(shan)化(zhai)”成另一套,向大家兜售。"
嗯,开源界也是这样。

嗯,因为上手快,适合新手使用,这是在坑人家吧?
新手学会了ssh至少好找工作,能进一步提高。学会nuts能干嘛。

你可以在自己说了算的项目中用,或者干私活啥的用,我们单位一直在用,很不错
15 楼 2014-02-13 12:38
我想如果很多企业都用nutz的话,那会有更多的人愿意用这个框架的。新手都要学ssh,才能找到工作
14 楼 2014-01-20 10:22
看来,又要造就一批,悲催的码农了...........
13 楼 2013-12-24 00:17
用了点 感觉真挺好用的
12 楼 2013-12-23 10:09
国外的公司一般来说都是"各自做精一个功能,然后大家一起协同运作。"
国内的公司一般是 "把一堆别人已经做过的东西拿来“优(shan)化(zhai)”成另一套,向大家兜售。"
嗯,开源界也是这样。

嗯,因为上手快,适合新手使用,这是在坑人家吧?
新手学会了ssh至少好找工作,能进一步提高。学会nuts能干嘛。
11 楼 2013-12-18 13:18
支持支持。。。一直再用。。走到哪宣传到哪。真正的精品项目
10 楼 2013-12-18 12:43
花了点时间去看了下,很不错的一个东东。很有意思的一个东东。轻便,好用。如果有越来越多的大型项目使用他,一步一步变成熟,那就完美了。
9 楼 2013-12-18 09:29
看了视频,什么呀,不好。嘻嘻哈哈~~~~~~
8 楼 2013-12-18 09:27
nutz 解决插件模式,不同页面在不同jar中。动态热插拔。
需要这个基本功能才行。
7 楼 2013-12-18 09:18

juqkai 真帅气
6 楼 tyrion 2013-12-17 23:46
支持,抽空用下再评论。
5 楼 2013-12-17 23:05
很愧疚啊,希望nutz越来越好~~
4 楼 2013-12-17 14:45
该项目竞争对手还是很多的。
3 楼 2013-12-17 13:48
用着舒坦,支持了!!
2 楼 2013-12-17 12:47
重复造的大轮子,不好。插件机制怎么应用,是什么和osgi有什么区别于联系。
lang里面封装了一下方法。不好不知道
1 楼 osacar 2013-12-17 10:43
是否和jfinal可以拿来 对比一下?

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 遇到这种问题,是因为没有安装器件库,就像用keil建立c51的工程,你需要选择用什么型号的单片机,如果没有这个库文件,你就没办法选择勇士芯片。 在altera凯发k8国际娱乐官网入口官网的下载中心,找到你所需要的器件库即可 https://www.altera.com/downloads/download-center.html 然后,将下载下来的.qdz文件放到一个英文路径下 然后打开quartus ii

  • 目录一、quartus ii 13.1的安装及使用1、quartus ii的下载2、quartus ii的安装(1)下载解压,运行安装程序 一、quartus ii 13.1的安装及使用 1、quartus ii的下载 百度网盘下载链接: https://pan.baidu.com/s/1a9d-bq9rzmwrrv542x4iea 提取码:ifte 2、quartus ii的安装 (1)下载解压,运行安装程序 ...

  • 原来安装好的quartus 11.0 是可以用的,编译没有任何毛病,但是今年敲了一段代码之后,编译后出现了下面这么一幕令人很不开心的一句话: error: current license file does not support the ep4ce6f17c8 device 头脑里第一想到的是:不支持这一款芯片,于是在设置里把芯片的类型换了之后,编译发现结果是一样了。 接下来想到的才是破解不

  • 今天又遇到点技术麻烦,因为要做一个项目用到altera,所以根据开发板需求配套了quartus12.1的安装软件,因为开始学fpga是通过altera上手的,而现在用的xilinx的,所以删掉了,但因为用过,就非常自信的认为自己安装软件肯定没问题(有一年多没用了),顺理成章的安装好了,然后发现里面又有器件库,ok,查找得知需要安装器件库,网上查了半天,刚要查到,突然想到安装软件中有一个exe文件没...

  • 摘要: nutz是一个优秀的国产...nutz是一个优秀的国产开源项目,它是一组轻便小型的框架的集合,各个部分可以被独立使用,据作者称,nutz的使命就是“解决第三方类库在web项目开发中的低效问题“,而nutz也被称作...

  • servcieframework是一个敏捷、快速、富领域模型的java mvc 框架,其设计理念是让用户真正能够用最简单的方式解决80%的问题。 该项目目前应用于作者公司内部的一个产品中,刚开源不久,便引起了开发者的广泛关注与...

  • servcieframework是一个敏捷、快速、富领域模型的java mvc 框架,其设计理念是让用户真正能够用最简单的方式解决80%的问题。 该项目目前应用于作者公司内部的一个产品中,刚开源不久,便引起了开发者的广泛关注与...

  • firefly是一个高性能的一站式java web框架,涵盖了web开发的主要技术栈,包含模板引擎、ioc/mvc框架、http服务器、common工具、log、json解析器等模块。 项目凯发k8国际娱乐官网入口主页:http://www.fireflysource.com/ github地址:...

  • 1、quartus 中导入device的方法 进入 http://dl.altera.com/?edition=subscription 下载相应的qdz文件,然后打开quartus ii 软件,在菜单栏的tools->install device中选择你保存.qdz的路径,进行安装即可。 注意:一定要选择对应的版本,不然会发现不能导入()错误提示‘can’t find quartus ii subscription editon device file(.qdz)’。 2、可能遇到的问题‘can

  • eweb4j 是一款基于 servlet/jdbc 构建的轻量级 web 开发框架,它不仅融合了 ssh 的核心优点(全栈式),而且提供了诸如模块化、热加载、多数据源、restful等非常吸引人的特性。它小巧灵活,遵守约定优于配置的原则。...

  • 现任阿里巴巴公司系统架构师黄勇,从事近十年的javaee应用开发工作。内容包含了技术人生、it职场、程序员、java web框架、研发管理、敏捷开发、开源等问题,希望你在技术这条路上不孤单。

  • 社区文旦专访黄勇架构框架javajava web 摘要:本文采访了现任阿里巴巴公司系统架构师黄勇,从事近十年的javaee应用开发工作。采访内容包含了技术人生、it职场、程序员、java web框架、研发管理、敏捷开发、开源等...

  • 管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统通常被设计用来提高效率、减少错误、加强安全性,同时提供数据和信息支持。以下是一些常见类型的管理系统: 学校管理系统: 用于学校或教育机构的学生信息、教职员工信息、课程管理、成绩记录、考勤管理等。学校管理系统帮助提高学校的组织效率和信息管理水平。 人力资源管理系统(hrm): 用于处理组织内的人事信息,包括员工招聘、培训记录、薪资管理、绩效评估等。hrm系统有助于企业更有效地管理人力资源,提高员工的工作效率和满意度。 库存管理系统: 用于追踪和管理商品或原材料的库存。这种系统可以帮助企业避免库存过剩或不足的问题,提高供应链的效率。 客户关系管理系统(crm): 用于管理与客户之间的关系,包括客户信息、沟通记录、销售机会跟踪等。crm系统有助于企业更好地理解客户需求,提高客户满意度和保留率。 医院管理系统: 用于管理医院或医疗机构的患者信息、医生排班、药品库存等。这种系统可以提高医疗服务的质量和效率。 财务管理系统: 用于记录和管理组织的财务信息,包括会计凭证、财务报表、预算管理等。财务管理系统

  • gb2312字符集 作用:国家简体中文字符集,兼容ascii。 位数:使用2个字节表示,能表示7445个符号,包括6763个汉字,几乎覆盖所有高频率汉字。 范围:高字节从a1到f7, 低字节从a1到fe。将高字节和低字节分别加上0xa0即可得到编码。 gbk字符集 作用:它是gb2312的扩展,加入对繁体字的支持,兼容gb2312。 位数:使用2个字节表示,可表示21886个字符。 范围:高字节从81到fe,低字节从40到fe。 gb18030字符集 作用:它解决了中文、日文、朝鲜语等的编码,兼容gbk。 位数:它采用变字节表示(1 ascii,2,4字节)。可表示27484个文字。 范围:1字节从00到7f; 2字节高字节从81到fe,低字节从40到7e和80到fe;4字节第一三字节从81到fe,第二四字节从30到39。

  • 毕业设计,安卓app,基于java开发的学生成绩课件管理系统app,包括pc端和安卓anroid手机app,内含java完整源码 安卓andriod学生成绩课件管理系统 系统开发环境: windows myclipse(服务器端) eclipse(手机客户端) mysql数据库 服务器也可以用eclipse或者idea等工具,客户端也可以采用android studio工具! 系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,mvc设计思想! 服务器和客户端数据通信格式:json格式,采用servlet方式 【服务器端采用ssh框架,请自己启动tomcat服务器,hibernate会自动生成数据库表的哈!】 hibernate生成数据库表后,只需要在admin管理员表中加个测试账号密码就可以登录后台了哈! 下面是数据库的字段说明: 班级: 班级编号,班级名称,开办日期,班主任 学生: 学号,登录密码,所在班级,姓名,性别,出生日期,学生照片,联系电话,家庭地址 老师: 教师编号,登录密码,姓名,性别,出生日期,联系电话,邮件,地址,

  • 管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统通常被设计用来提高效率、减少错误、加强安全性,同时提供数据和信息支持。以下是一些常见类型的管理系统: 学校管理系统: 用于学校或教育机构的学生信息、教职员工信息、课程管理、成绩记录、考勤管理等。学校管理系统帮助提高学校的组织效率和信息管理水平。 人力资源管理系统(hrm): 用于处理组织内的人事信息,包括员工招聘、培训记录、薪资管理、绩效评估等。hrm系统有助于企业更有效地管理人力资源,提高员工的工作效率和满意度。 库存管理系统: 用于追踪和管理商品或原材料的库存。这种系统可以帮助企业避免库存过剩或不足的问题,提高供应链的效率。 客户关系管理系统(crm): 用于管理与客户之间的关系,包括客户信息、沟通记录、销售机会跟踪等。crm系统有助于企业更好地理解客户需求,提高客户满意度和保留率。 医院管理系统: 用于管理医院或医疗机构的患者信息、医生排班、药品库存等。这种系统可以提高医疗服务的质量和效率。 财务管理系统: 用于记录和管理组织的财务信息,包括会计凭证、财务报表、预算管理等。财务管理系统

  • 软件开发设计:php、qt、应用软件开发、系统软件开发、移动应用开发、网站开发c 、java、python、web、c#等语言的项目开发与学习资料 硬件与设备:单片机、eda、proteus、rtos、包括计算机硬件、服务器、网络设备、存储设备、移动设备等 操作系统:linux、ios、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络与通信是一个非常广泛的领域,它涉及到计算机科学、电子工程、数学等多个学科的知识。 云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。

  • 企业定价策略分销策略与促销策略.docx

global site tag (gtag.js) - google analytics
网站地图