JPress是一個wordpress的java代替,使用JFinal開發。支援類似wordpress的幾乎所有功能,例如:模板,外掛程式等。同時在模板上,JPress提出了「模板即模型」的概念,方便模板製作人靈活製作業務模型,移除了widget等繁雜功能,同時在模板和插件製作上比wordpress更加靈活簡潔。
但是,JPress又不是wordpress的java,它天生融合了微信公眾平台,整合了國內眾多雲端平台、簡訊發送、郵件發送平台,獨創的「模板即模型」概念是wordpress所不具備的,只有資深的wordpress玩家才能體會裡面的微妙關係。同時後續會加入微信文章同步,QQ公眾平台,今日頭條,一點資訊等新媒體的文章同步功能,更加國產和在地化。
在功能方面
支援自訂模型,自訂模型透過模板來定義,而不是後台功能。同時模型內容支援自訂類別,例如文章模型支援專題、分類、標籤等類別。
支援多模板引擎,預設使用Freemarker,模板製作者可以使用其他引擎例如thymeleaf來渲染,同時支援後台線上編輯模板(目前暫時只支援freemarker引擎)。
支援多資料庫類型,可以配置不同的資料庫(目前暫時只支援mysql)。
支援多編輯器,後台視覺化編輯和markdown編輯自由切換,預設支援線上圖片編輯和程式碼高亮等功能。
支援插件化,幾行程式碼就可以完成一個插件的開發,git.oschina.net和github上已經有插件的helloworld實例。
支援自訂URL,網站內容URL風格自訂。
API支持,方便APP或其他第三方呼叫資料。
國際化支持,使用JPress輕鬆製作任何語言的網站。
極簡的SEO功能,可以為每篇文章、每個分類、每個標籤單獨設定SEO,支援sitemap輸出。
用戶註冊支援郵件和簡訊驗證,目前簡訊服務商暫時只支援阿里大魚。
支援CDN設置,包括七牛,阿里雲,又拍雲等。
上傳圖片支援浮水印設置,同時上傳圖片自動剪切成為模板所需的多種圖片尺寸,保證圖片顯示不會拉伸。
用戶登入支援第三方登錄,支援QQ、微信、微博、開源中國、github、Facebook、twitter、linkedin(目前只完成QQ、微信、微博、開源中國、github的登陸)。
在微信方面
支援微信選單設定。
支援自動回复,添加關鍵字和回复內容。
支援預設回复,包括:用戶關注時、進入多客服時、退出多客服時、發送圖片時、發送語音時、發送視頻時、發送位置時、發送連接時、用戶掃描了帶參數的二維碼時、用戶搖一搖時。
所有的自動回复或預設回复支援“高級回复”功能,例如回復一篇文章,回復一個網址…高級回復是由JPress內置開發的特殊回复,但完全可配置,今後會增加更多的“高級回复”功能。
自動回復或預設回复支援外掛程式回复,呼叫JPress外掛完成回复。
支援文章搜索,回复關鍵字即可返回關鍵字匹配文章。
未來會支援文章同步或微信匯入等實用功能。
在技術方面
自豪的採用了JFinal作為核心,JPress也是得益於JFinal靈活的架構。在JFinal framework開源體系裡,JPress關心每行邏輯的實現,重視每行程式碼質量,應該屬於JFinal的最佳實踐,所以也應該是每個JFinaler必讀的項目。
使用Freemarker和thymeleaf作為模板引擎。 JPress內建的獨創緩存,使得的UI渲染速度已經和模板引擎無關。
使用了tinymce做視覺化編輯器,使用simplemde做markdown編輯器。兩者可以後台自由切換。
檔案和圖片上傳的UI外掛程式使用了fine-uploader。
在前端上,JPress使用了jquery,bootstrap,admin lte,font-awesome,x-editable,fastclick,toastr,tag-editor,pace,layer等。
在安全性方面,儘管我個人做了非常多的努力,已經在XSS,CSRF,SQL注入,Cookie安全等方面做了很多的工作,但是還是需要更多的人來一起挖掘和完善,安全是一個永恆的話題。 (但是對於新手朋友來說,這些安全應該都是值得學習和了解的,不是嗎?)
支援分散式部署,JPress重寫了HttpSession,使用ehcache實現了session的功能,同時在專案中大量依賴cookie,在分散式架構上毫無壓力。
JPress有以下特點
1、 輕。
輕到只有8張資料表,卻能實現wordpress的幾乎所有功能。依賴的jar包也極度輕,目前只有cos-26Dec2008.jar、druid-1.0.16.jar、ehcache-2.7.5.jar、fastjson-1.2.7.jar、freemarker-2.3.23.jar、javax. mail.jar、jfinal-2.2-bin-with-src.jar、jfinal -weixin-1.7-bin-with-src.jar、jsoup-1.8.3.jar、log4j-1.2.17.jar、mysql-connector-java-5.1.36.jar、slf4j-api-1.7.7.jar 、slf4j-log4j12-1.7.7.jar、jetty-server-8.1.8.jar這14個jar包,而且其中jetty-server-8.1.8.jar 不是必須的,只用於方便調試。
包括jar包在內的整個項目在20MB左右。
2、快。
無論多麼複雜的頁面,JPress響應幾乎在10毫秒內,同時JPress支援阿里雲,七牛,又拍雲等CDN作為加速,支援分散式部署等功能,就算是香港的伺服器,只能用“飛快”來形容。
3、靈活。
JPress提出的「模板即模型」的概念,模板製作人可以用JPress來做博客,新聞系統,論壇,問答社區,商城…加上其靈活的插件功能,幾乎可以用來做任何類型的網站。
4、國產。
因為國產,所以比較符合國人需求。 JPress天生融合了微信公眾號,JPress內建了阿里大魚的簡訊發送功能,支援了QQ郵箱,163郵箱等作為郵件發送伺服器,後續會增加微信範本訊息通知用戶等更符合國人需求的功能。
最重要的是
JPress使用了最寬鬆的LGPL開源協議,而國內的那些採用了私有協議的「開源」產品並不是一個等級的。
jpress v4.2.0 更新日誌
新增:新增後台驗證碼開關,方便在某些場景下進行自動化測試
新增:支援發布0元的商品,支付金額為0 時,直接支付成功,感謝@AlienJunX
新增:插件安裝目錄自訂的功能,方便安裝插件後,在編譯清空target 目錄時,插件仍然可用
優化:完善文章模組添加收藏功能,感謝@嚇死貓的老鼠
最佳化:Option 系統配置允許傳入空數據,用於清空配置
最佳化:調整上傳預設附件大小,圖片預設為10MB,其他檔案預設為100MB
最佳化:升級Jboot、Log4j2 等到本
修復:後台自訂非法關鍵字無效的問題
修復:透過API 刪除Option 可能不及時生效的問題
修復:插件依賴外部jar ,在某些情況下可能會導致無法被安裝的問題
修復:微信H5 付款成功回頁後出現500 錯誤,感謝@AlienJunX
修復:文章插入附件,當出現附件文件過大錯誤時,頁面沒有提示的問題
修復:CKEditor 編輯器圖片無法貼上上傳的問題