发布于 2017-08-08 10:26:55 | 169 次阅读 | 评论: 0 | 来源: 网友投递
JFinal 基于Java极速WEB+ORM 框架
JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!为您节约更多时间
JFinal第一版于2011年3月诞生于公司内部,应用于公司项目后大受欢迎,一年后于2012年3月18日选择在OSChina社区开源。
历经6年工匠精神的打磨,现已进化成生机勃勃的生态系统,星星之火已成燎原之势。
1:jfinal.com极速开发社区注册用户达66036人
JFinal 极速开发社区于2016年6月正式上线,一年两个月零两天的时间注册用户已达66036人,作为一个没有公司支持,也没有任何外部资源支持的个人开源项目,仅凭一已之力干到这个程度,已经是奇迹。
相关链接:http://jfinal.com/share/1
假定中国的java开发者一共有20万人,按照当前的发展速度,明年的这个时间点JFinal将覆盖到全体中国java开发者的66.03%。具有网络效应的项目在网络节点达到某个临界值时,发展速度将呈指数级爆发性增长,如果注册用户过十万需要两年,但达到20万人很可能只需两年半。
有人问我为啥一直对开发、升级jfinal一直保有激情,一直在不知疲倦、十分耐心地回复无数小白的小白问题,一图胜千言,下面这个截图是最好的回答:
每天下班后我会看一遍当天注册用户,看着一个个鲜活的nickName,激情立即满满的,小伙伴们对jfinal的喜爱才是开发、升级下去的根本逻辑与源动力,否则如果面对的是一个乏人问津的项目,任何一个正常人都不可能对此保有六年的激情。
2:git.oschina.net 上 fork、star 数据排名第一
相关链接:http://git.oschina.net/languages/Java
3:问答数4226个,在OSChina 在收录的44246个项目中总排名第五
排前四位的项目分别是:java、android、php、mysql,前四个项目在 OSChina 的收录时间比 JFinal 要早一到四年。超过2008年就已被OSChina收录的Spring。问答数量充分表明JFinal是OSChina十分活跃的项目
相关链接:http://www.oschina.net/question/tags?catalog=1
4:git.oschina.net 与 JFinal 相关开源项目 689 个
该数字是JFinal 2.0版本发布时的4.2倍,相关链接:
http://git.oschina.net/search?utf8=%E2%9C%93&search=jfinal&group_id=&project_id=&type=
5:与 JFinal 相关博客 1039 篇
该数字是JFinal 2.0版本发布时的1.75倍:
https://www.oschina.net/search?scope=blog&q=jfinal
6:社区累计捐助人数达1526人
有不少小伙伴是多次捐助,有位昵称叫“杜福忠”的小伙伴甚至每个月捐助一次。
jfinal 从来没有在任何时间、任何地点推动或宣传过捐助的事情,所有捐助者是因为jfinal的口碑自发而来,这样得来的数据才能真实反馈出jfinal的口碑。
相关链接:http://www.jfinal.com/donate
以上是坚守六年多的工匠精神,超过一千多项的功能增强与改进,帮助无数小白所取得的成果,但jfinal追求极速开发的脚步从未停止过,以下是JFinal 3.2 的主要增强与改进:
1:action支持形参注入
public void action(Article article, int id) { ... }
action 形参注入早在两年就实现过,只不过当时认为实现不够简洁,学习成本也有一定的上升,在正式发布之前删除了此功能。action形参注入有利于与 swagger 之类的框架集成。
2:模板引擎支持spring、spring boot
<bean id="viewResolver" class="com.jfinal.template.ext.spring.JFinalViewResolver"> <!-- 是否热加载模板文件 --> <property name="devMode" value="true"/> <!-- 配置shared function,多文件用逗号分隔 --> <property name="sharedFunction" value="/view/_layout.html"/> <!-- 是否支持以 #(session.value) 的方式访问 session --> <property name="sessionInView" value="true"/> <property name="prefix" value="/view/"/> <property name="suffix" value=".html"/> <property name="order" value="1"/> <property name="contentType" value="text/html; charset=utf-8"/> </bean>
如上所示配置一个简单的bean即可,spring boot 的配置方式见jfinal手册
此外,JFinal Template Engine 已被独立发布为Enjoy项目,集成spring时可以直接使用enjoy 3.2,只有171KB的大小,并且无第三方依赖,传送门:http://git.oschina.net/jfinal/enjoy
3:添加ClassPathSource支持从class path及jar包读取模板文件
engine.setSourceFactory(new ClassPathSourceFactory());
通过上面一行代码,即可配置engine从class path加载模板文件,如果未找到则去jar包中加载,非常适合spring boot下面使用。
4:模板引擎添加extension method功能
public class MyIntegerExt { public Integer square(Integer self) { return self * self; } } engine.addExtensionMethod(Integer.class, MyInteger.class);
上面的代码即实现了类似于ruby中的mixin功能,为 Integer 添加一个求平方的功能,在模板中可以通过 123.square() 来调用这个方法。得益于jfinal的极简设计,实现上述功能只用了 87行代码。
5:ActiveRecordPlugin支持自动类型转换
int count = Db.queryInt("select count(*) from account");
以上代码,JDBC会返回 Long 型数值,所以在老版本jfinal中会出现类型转换异常,3.2版本对此做了自动类型转换。此外,对于Model、Record、DbPro中所有涉及String、int、long、float、double、short等类型都做了类型转换处理,使用 3.2 版本会无比顺滑。
6:添加 IDbProFactory,支持继承 DbPro 来定制 DbPro 功能
public class MyDbPro extends DbPro { .... } arp.setDbProFactory(new MyDbProFactory() { public DbPro getDbPro() { return new MyDbPro(); } });
通过如上代码即可对 DbPro 的功能进行定制与扩展。
7:文件上传支持input域使用同名name属性
使用该功能,只需要将 cos 升级到 2017.5 版本即可。
JFinal早已不是六年前的星星之火了,仍未尝试过jfinal朋友们如果还不试着改变一下,开发速度会被后起新生代小鲜肉远远甩在后面,尝试jfinal的成本十分之低,仅仅两万多行代码实现了完整的MVC + ORM + AOP + Template Engine,这一切全被浓缩在了一个jar包之中。
ONE MORE THING:JFinal 3.2 有近50项增强与改进,篇幅所限在此不在赘述。JFinal俱乐部将在本周六晚9点直播讲解3.2的新功能,加入俱乐部相约周六晚直播间,我们不见不散:http://jfinal.com/club