说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

【开源专访】JFinal作者詹波:以极简方式实现Web项目的极速开发

HTML文档下载 WORD文档下载 PDF文档下载
JFinal是一个基于Java的极速Web开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。本期【开源专访】我们采访了JFinal项目的作者詹波,请他来详细介绍这个项目。

JFinal是一个基于Java的极速Web开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful,在拥有Java语言所有优势的同时再拥有Ruby、Python等动态语言的开发效率。JFinal项目开发始于2011年初,并于2012年3月开源,采用对商业应用友好的Apache 2.0协议。

项目地址:https://github.com/jfinal/jfinal

本期【开源专访】我们采访了JFinal项目的作者詹波,请他来详细介绍这个项目。詹波曾任搜格信息技术有限公司Java架构师,北京信息管理科学研究所CTO,于2011年联合创办了微格网际科技有限公司,并担任旗下网校网的CTO。


CSDN:先做个自我介绍吧!

詹波:我叫詹波,英文名James,程序员一枚。爱好天文、物理、科幻、设计、编程、音乐、游戏、爬山、游泳。从小喜欢研究制造新东西,首次有用的制造是在八岁时独创的灭苍蝇手枪以及全新设计的火药玩具枪。对未知世界有着强烈的好奇心,终极理想是做一名自由发明家,财务自由后计划首先研究空间发电(非永动机)。

CSDN:JFinal是一个什么样的项目?提供了哪些功能?

詹波:JFinal是基于Java语言的极速Web + ORM框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有Ruby、Python、PHP等动态语言的开发效率!为开发者节约更多时间,去陪恋人、家人和朋友。

JFinal的主要特点如下:

  • MVC架构,设计精巧,使用简单;
  • 遵循COC原则,零配置,无xml;
  • ActiveRecord支持,使数据库开发极致快速;
  • 自动加载修改后的java文件,开发过程中无需重启Web server;
  • AOP支持,拦截器配置灵活,功能强大;
  • Plugin体系结构,扩展性强;
  • 多视图支持,支持FreeMarker、JSP、Velocity;
  • 强大的Validator后端校验功能;
  • 功能齐全,拥有Struts2的绝大部分功能;
  • 体积小仅180K,且无第三方依赖。

CSDN:JFinal项目是怎么诞生的?

詹波:JFinal始于2011年创业项目的实际需要。创业前曾使用Rails开发项目,被Rails的开发效率深深吸引,但无奈于Rails开发者稀有难招,以及Ruby语言固有的缺点,故决心打造JFinal,将静态语言与动态语言两者优点结合起来用于创业项目。

JFinal中的J代表Java语言,Final有最终的意思,希望JFinal能成为Java开发者的最终选择。Final还有稳固不变的意思,也因喜欢事物本质,热爱永恒的真理。

CSDN:JFinal的设计思想和理念是什么?有哪些创新点?

詹波:JFinal 遵循大道至简的设计思想。主要创新点:

  • 微内核+全方位扩展架构;
  • Db + Record 模式;
  • CPI模式;
  • ActiveRecord模式Java实现方式;
  • API引导式配置;
  • API引导Validate;
  • 采用Scanner + ClassLoader结合Jetty实现热加载;
  • 极简设计,核心代码约2000行实现Web MVC + ORM。

CSDN:介绍一下JFinal的架构?JFinal实现极速开发的原理是什么?又是如何实现的?

詹波:JFinal采用微内核全方位扩展架构,全方位是指其扩展方式在空间上的表现形式。

JFinal由Handler、Interceptor、Controller、Render、Plugin五大部分组成,以Action为参照,Handler处在扩展的最外围,Interceptor处在更贴近Action的周围,Controller承载Action处在扩展的中心,Render处于Action后端,Plugin处于在Action侧边位置。


JFinal实现极速开发主要是因为走的极简设计风格:零配置、代码量少、开发体验连续、无第三方依赖、概念最少化等等。

要实现极简设计,必须要为架构注入灵魂,系统才有自己的极简性格。设计前先在脑海中形成一整套的极简设计思想,让这套思想融入到灵魂的深处,在行动时每动一个设计念头时以此为指导思想,最后的结果就能如愿。

CSDN:讲讲项目开发过程的事情,从立项到发布首个版本之间有什么让你印象深刻的事情?

詹波:JFinal项目始于2011年3月左右,第一个版本大约两周左右开发完成,再用了一周时间将手头SSH项目切换至JFinal。

这期间最令人兴奋的事情是脑海中不断迸发出新的想法,然后立即将想法变为现实,这段时间更加确信可以通过持续地专注来激发创造力,后续工作中也验证了此法的有效性。

CSDN:开发过程中你遇到了哪些困难?是如何解决的?

詹波:开发过程最大的困难就是写代码实现,想法很快就能有,但实现起来需要花费更多时间,代码极简比仅仅实现功能要困难得多。

解决这些问题,需要对各种因素进行深入透彻分析,权衡得到最优方案。

CSDN:你每天投入在JFinal项目上的时间大概有多少?是否有其他人参与了项目贡献?

詹波:不同时期投入时间不一样,如果工作不紧张,每天两三个小时都没问题。最近几个月工作极忙,一般是在临睡前回复一下热心网友们的问题。有很多热心的网友提了很多建议,也有少部分人在Github上提交过代码。

CSDN:JFinal下一步的计划和目标是什么?

詹波:JFinal将一直坚持极简设计风格,在不断优化发展内核的同时,通过扩展的方式加强周边工具设施的建设,进一步提升开发体验。另外jfinal.com大部分构想已经完成,时间允许情况下会开发上线,jfinal.com关注开发者群体,将是完全不一样的模式。

CSDN:将JFinal开源的初衷是什么?你从开源中得到了什么?在开源方面有什么感悟?

詹波:本人是乐于助人的性格,有好东西乐于分享出来。造福于广大的工程师,自己会更快乐,更有成就感。另外开源出来也希望JFinal变得越来越好。

开源给我的感悟是做开源项目需要为其注入思想与灵魂,让其具有鲜明的个性与主张,并且要让更多的人接受并喜欢才能快速发展。乐于分享会使自己变得更快乐、幸福,帮助他人就等于帮助自己!

CSDN:你怎么看待开源以及国内的开源环境?你最希望对其他打算从事开源的开发者说的话是?

詹波:国内大部分工程师大都忙于生计,参与开源相对比较困难,国人对国产开源项目信心不足也是个问题。

建议打算从事开源的开发者在自己喜欢的方向和擅长的领域设定一个目标,尝试做个开源项目,会使你变得更充实、更快乐,以及很多意想不到的收获。

【开源专访】系列文章致力于对国内外优秀开源项目作者、团队的专访,挖掘项目背后的故事和更多技术细节,以及对项目的宣传、推广。同时,我们也希望广大开源开发者和爱好者自荐或推荐更多优秀的开源项目。欢迎留言或@CSDN研发频道。

jQuery Mobile 开发入门手册--组件 SMTP/POP3收发邮件的C#类库SmtPop.Net 用C#编写的Telnet开源类库 Visual Studio C#创建Windows服务(Windows Service) C#取得Windows服务列表 C#编程自动安装Windows服务 C#安装/删除 .NET Windows服务 C#启动、停止、重启Windows服务 jQuery实现Ajax提交form表单的简单方法 字符串String与枚举Enum之间的转换[C#] Javascript统计DOM元素里文字的行数 C#从Web网站下载文件 C#得到区域名称列表 C#合并多个PrintDocument WpWidgetLibrary - Windows Phone的HTML部件库(Widgets) 让你不再害怕C语言指针 C语言概述-C语言教程 Turbo C 2.0集成开发环境的使用(上)-C语言教程 Turbo C 2.0集成开发环境的使用(下)-C语言教程 程序的灵魂—算法-C语言教程 数据类型、运算符与表达式(上)-C语言教程 数据类型、运算符与表达式(下)-C语言教程 最简单的C语言顺序程序设计-C语言教程 分支结构程序-C语言教程 循环控制-C语言教程 数值数组-C语言教程 字符数组-C语言教程 函数(上)-C语言教程 函数(下)-C语言教程 预处理命令-C语言教程 C语言指针(上)-C语言教程 关于时间字段的问题 怎样用ATL制作一个Dialog容器,里面可以放置别的窗口 请问VC中为什么需要动态创建(与序列化有关的)?求通俗的解释或举例说明。谢。 紧急求助!! 请问那里有tc++ 3.0的下载?小弟先行谢过啦! 怎样从句柄得到对象,附有具体代码? 关于CStringArray的使用问题???? 我的程序错了么?? 我的程序错了么? DHCP问题 关于IIS的使用 XML中华网(www.xmlchina.net)诚邀您的加盟,让我们共同讨论.NET!! 请问:DCOM连接成功,但是不执行客户微服务器代码是什么原因? 建议有CMM实施经验的同仁定期召开一个讨论会,交流一些方法和思想。 请问在哪儿可以下载c++编译期(在UNIX环境下运行) 听说新出的JB6是4张盘,是吗?都是什么内容?大家讨论一下好吗? 一个菜鸟的问题,请问 rs_user.open sql,conn,3,2 中的3,2 是什么意思 test 如何显示AUTOCAD 生成的DWG矢量文件?(来者有分) 我送分来了 名词解释........ 一个菜鸟的问题,请问 rs_user.open sql,conn,3,2 中的3,2 是什么意思 c#中的DataGrid问题 请教关于jdk库的文档的问题 机器一启动,IE就跳出来,转到指定的网站,怎么办? 有空来坐坐啊各位大虾们 微狗是什么東西﹐它的原理是什么. 谁知道用vb怎么编出来能读出PCI数据的程序啊。我有高分相送啊 jsp 中 include 的问题 高手请指点:winuser.h明明有KBDLLHOOKSTRUCT的说明,但在程序中却老是出现未定义,你知道原因吗? 可以用例子说明一下ORACLE的外连接的SQL语句吗? 水晶报表的菜鸟问题 visual C#能制作类似于它自已的菜单吗?也就是office xp的菜单 在ADO中怎么用模糊查询? ftp的多线程下载问题 请教有关jdk库的文档的问题 谁有在启动时候装载引导界面的程序呀?先告诉我给分,都给了 一个SQL生成脚本,在查询分析中运行后,同一个源程式,客户端界面成乱码。 谁知道用vb怎么编出来能读出PCI数据的程序啊。我有高分相送啊 那个兄弟试过在delphi里用互斥元来实现多线程? 请问如何判断一个对象是否已经初始化??? 谁知道用vb怎么编出来能读出PCI数据的程序啊。我有高分相送啊 显示中文遇到困难,有经验的请进 建索引的问题。 2000里的关机函数?? 网上哪里有供测试用的数据库? 求救!SQL Server2000个人版在Win98和WinXp都安装不进去了,详情请看里面...谢谢! 如何点住界面的任一位置都可移动界面? 怎样把数据库安装到客户端? 2000里的关机函数? 2000里的关机函数? 如何实现以下功能? 铝、氮气、氖气、氧化镁的保持化学性质的粒子【名称及符号】 可以用硫酸钡转化成碳酸钡比较ksp吗 如何判断某物质能否导电 如何判断某物质是否是电解质 不明白导电和电解质的关系 酸性玻璃胶完全固化至少需要多久?如题,最好在什么条件下固化的更好,耐久,这种固化需要多长时间?固化后的玻璃胶是什么感觉?硬邦邦的吗?谢谢 英语翻译cung khoe.cac em da di lam roi,dao nay rat ban.em nho VN roi.(>﹏ 中国古代商业的发展特点 玻璃胶固化后有毒性么!玻璃胶凝固后接触皮肤,皮肤破了接触,还有接触粘膜,吞食有害么?请详细回答! 请熟悉越南语的朋友们帮忙翻译下, 回答下列问题 (1)判断上述物质能导电的是 (2)属于电解质的是,非电解质的是 (3)电解质但不能导电1稀盐酸 2液态 3氨水 4铝条 5熔融氯化钠 6石墨 7氢氧化钡固体 8二氧化硫 9水 10熔融氧 玻璃胶多久凝固 英语翻译QUÔC DOANH SÂN XUÂTDIÊM VIÊT NAMKỸ NIÊM TRIÊN LAM NÂM 1958HƯU (第二个字母上方还有一个~,电脑打不出来)NGH!只知道和中国、越南、火柴有关,急用, 什么物质能导电,怎么判断电解质与非电解质 为什么快干型玻璃胶和慢干型玻璃胶固化时间一样长?所谓的快干型玻璃胶和中性玻璃胶固化时间是一样的.快干的在十分钟内形成表层,24小时左右完成固化.中性玻璃胶3-5分钟形成表层,24小时 是不是非电解质都不导电 现在的食醋怎么样? 教大家怎样鉴别购买酿造食醋的一种方法 英语翻译1寸,白色底,彩色照片. 如何从颜色上区分氢氧化钙、碳酸钙和生石灰同上 碳酸钙可以生成氢氧化钙吗? 英语翻译对不起!我骂你是我不对,我错了,不要生气了好吗?请你原谅我,我真的很想你,也想天天见到你. 如何鉴别勾兑醋和酿造醋,要有具体的实验方法 氢氧化钙生成碳酸钙属于什么基本反应类型反应方程式是Ca(OH)2+CO2=CaCO3+H2O这个方程式属于4大基本反应类型的哪一种啊? 英语翻译老婆我来河口接你你什么时候过来 为什么酒、醋等都说勾兑的不好,酿造的好主要成分不都是一样的吗? 氢氧化钙+碳酸钙生成什么 英语翻译老婆我很想你早点回来,我在家等你,现在还没找工作,等你回来一起去开家店,开家我们自己的店. 1、蔗糖的物理性质?2、水的化学性质?3、变速运动概念?简短小小,唔该~ 碳酸钙和什么反应生成氢氧化钙? 中国古代商业发展繁荣的原因帮帮忙啊 中国史原始社会,奴隶社会,封建社会分界点.并说明一下他们区分的标志. 我国原始农耕时代遗址有哪些?在什么方位?(除了红山文化遗址、半坡遗址、大汶口遗址和河姆渡遗址) 如何挑选食醋 三种白色粉末分别是碳酸钡,硫酸钡,碳酸钠,设计实验把这三种粉末区分开来. 原始农耕时代中国三项领先世界的贡献(注明分别出自于哪个遗址) 如何选择食醋?纯酿造、看标签 用(低压羰基化法)生产的冰醋酸勾兑食用醋对身体有益吗?石油等原料合成的是不是工业冰醋酸? 原始农耕时代遗址分布的特点是什么 求营养健康方面小知识,选择题和简单的问答题多多益善 为什么封建社会能够代替奴隶社会? 为什么资本主义能都代替封建社会?(列举一些重大的事件).作业需要.求帮助 ! 我国的远古居民在原始农耕时代取得的重要成就包括()①种植粟②铸造铁器③种植水稻④能制造陶器A.①②④B.②③④C.①③④D.①②③ 电解质本身不一定能导电为什么! 封建社会代替奴隶社会,为什么说是历史前进发展的必然之路! 化学.关于碳的化学性质1 .从原子的结构解释,为什么在常温下,碳的化学性质稳定?2碳与氧气反应的产物是不是只有一种呢?如果有不同的产物,为什么会有不同的产物? 下列几种物质:a石灰石,b盐酸,c熟石灰,d纯碱,e食盐(不得重复)1.除铁锈是____2.降低土壤酸性____3.做馒头时用于除去发酵生成的酸____ 电解质不一定导电吗 乙烯的催化氧化乙烯催化氧化会生成什么物质?和氧气怎么反应?不是燃烧,别的呢? 我国原始农耕时代有哪些世界性的贡献 归纳中国古代商业发展的特点?(从商人组织 ,活动场所及经营领域等方面的变化来归纳) 能否由乙烯得到醛 我国原始农耕时代两项世界性的贡献是什么简练,注意是两项 如何识别勾兑醋 乙烯的催化氧化生成醛 【历史】中国古代农耕经济怎么学好高中历史课本必修2第一单元农业生产模式啊 土地制度啊 没有很多内容 但我觉得很乱 看了很容易忘 也很容易看不下去希望有网友可以教教我 如何鉴别酿造醋和勾兑醋 乙烯催化氧化会变成乙二醛吗高中好像只学过变成乙醛的,但我觉得应该也可以变成乙二醛吧 为什么说大化改新标志着日本由奴隶社会向封建社会过渡? 铝和铝粉的化学性质有甚区别 碳酸镁和氧化镁的化学性质和区别 硫酸钡为什么能转为碳酸钡?硫酸钡在饱和碳酸钠溶液中能转为碳酸钡,硫酸钡的溶度积比碳酸钡的要小啊,那不就是难溶转易溶了吗?那么硫化银在饱和氯化钠中能转为氯化银吗? 液态发酵的醋是勾兑醋吗
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘