JFinal

JFinal

JFinal 是基於Java 語言的極速 web 開發框架,其核心設計目標是開發迅速、代碼量少、學習簡單、功能強大、輕量級、易擴展、Restful。在擁有Java語言所有優勢的同時再擁有ruby、python等動態語言的開發效率。

基本信息

發展概況

Jfinal圖 Jfinal圖

JFinal 項目開發始於2011年初,作者詹波(James Zhan)曾任搜格信息技術有限公司Java架構師,北京信息管理科學研究所CTO,現任微格網際(北京)科技有限公司聯合創始人、網校網CTO。項目開源於2012年3月18日,採用對商業套用友好的Apache Licence 2.0協定。開源以來深受廣大開發者歡迎,目前採用JFinal框架開發的用戶群迅速壯大,同時不乏一些已經上線的商業化網際網路項目。JFinal在中國最大的開源社區備受矚目,自開源以來一直是熱門項目。

JFinal將一直堅持以下設計目標:開發迅速、代碼量少、學習簡單、功能強大、輕量級、易擴展、Restful。在堅持以上設計目標的同時,基於微核心+全方位擴展型架構,打造功能極度全面WEB+ORM開發框架。徹底解放開發者的生產力,徹底改善開發者的開發體驗,讓軟體開發成為一件輕鬆愉快的事情。

JFinal通過實踐逐步形成了一套極速開發方法,此法將在即將打造的JFinal極速開發社區展示出來。

系統架構

JFinal 採用微核心全方位擴展架構,全方位是指其擴展方式在空間上的表現形式。JFinal由Handler、Interceptor、Controller、Render、Plugin五大部分組成。

JFinal架構十分簡單,頂層是一個責任鏈模式變種,ActionHandler 內部結構也十分簡單,是一個Command模式變種。JFinal 架構圖如下:

JFinal JFinal

遵循COC原則,零配置,無xml

ActiveRecord支持,使資料庫開發極致快速

自動載入修改後的java檔案,開發過程中無需重啟web server

AOP支持,攔截器配置靈活,功能強大

Plugin體系結構,擴展性強

多視圖支持,支持FreeMarker、JSP、Velocity

強大的Validator後端校驗功能

功能齊全,擁有struts2的絕大部分功能

體積小僅218K,且無第三方依賴

簡要對比

JFinal WEB MVC和Struts簡要對比

JFinal遵循COC原則,零配置,無xml,而struts需要配置來支持action、result、interceptor配置與使用。

JFinal開發效率非常之高,相對Struts開發效率能提升五到十倍。

JFinal代碼量非常省,相對Struts開發能省50%到70%代碼量。

JFinal遵循Restful規範,而struts自身未提供Restful支持。Struts可以通過外掛程式來支持restful,但支持不徹底使用不方便。

JFinal提供資料庫支持,屬於一站式解決方案,而struts僅為WEB MVC框架並未提供資料庫支持。

JFinal學習成本極低,只需兩個小時學習即可上手開發,而Struts學習成本相對較高。

JFinal相對Struts來說更加輕量級,JFinal打包jar檔案僅173KB,而struts則為1.8MB。

JFinal ORM和Hibernate簡要對比

JFinal採用ActiveRecord實現資料庫操作支持,較Hibernate開發效率提升六到十倍。

JFinal ActiveRecord較Hibernate學習成本低,一小時內能上手開發。

JFinal零配置,對資料庫支持五個無特點:無xml、無annotation、無getter、無setter、無attribute,極大降低了代碼量,統計證實代碼量節省70%到95%。

JFinal資料庫操作完全採用原生sql,相對Hibernate採用的HQL學習成本低,功能更強大,性能更高,穩定性好。

開發框架簡介

JFinal 中的Controller

Controller是JFinal核心類之一,該類作為MVC模式中的控制器。基於JFinal的Web套用的控制器需要繼承該類。Controller是定義Action方法的地點,是組織Action的一種方式,一個Controller可以包含多個Action。以下是代碼示例:

public class HelloController extends Controller { public void index() { renderText("此方法是一個action"); } public void test() { renderText("此方法是一個action"); } }

JFinal 中的Model

Model是ActiveRecord中最重要的組件之一,它充當MVC模式中的Model部分。以下是Model定義示例代碼:

public class User extends Model<User> { public static final User dao= new User(); }

以上代碼中的User通過繼承Model,便立即擁有的眾多方便的運算元據庫的方法。在User中聲明的dao靜態對象是為了方便查詢操作而定義的,該對象並不是必須的。基於ActiveRecord的Model無需定義屬性,無需定義getter、setter方法,無需XML配置,無需Annotation配置,極大降低了代碼量。

以下為Model的一些常見用法:

// 創建name屬性為James,age屬性為25的User對象並添加到資料庫 new User().set("name", "James").set("age", 25).save(); // 刪除id值為25的User User. dao.deleteById(25); // 查詢id值為25的User將其name屬性改為James並更新到資料庫 User. dao.findById(25).set("name", "James").update(); // 查詢id值為25的user, 且僅僅取name與age兩個欄位的值 User user = User. dao.findById(25, "name, age"); // 獲取user的name屬性 String userName = user.getStr("name"); // 獲取user的age屬性 Integer userAge = user.getInt("age"); // 查詢所有年齡大於18歲的user List<User> users = User. dao.find("select * from user where age>18"); // 分頁查詢年齡大於18的user,當前頁號為1,每頁10個user Page<User> userPage = User. dao.paginate(1, 10, "select *", "from user where age > ?", 18);

實際案例

JFinal開發的案例有哪些?

目前學習和使用JFinal極速web開發框架的個人開發者或者公司團隊已經非常多了,項目類型範圍涵蓋也比較多,常見的後台管理系統,電商網站,金融系統,校務管理,進銷存系統,ERP系統,遊戲後台維護支撐系統,微信小程式社區俱樂部等,都已經有人在實踐中成功使用了JFinal框架開發,而且反饋都是積極正面的,很大程度上促進了JFinal框架的發展。

相關詞條

相關搜尋

熱門詞條

聯絡我們