JPress 是一个基于 Java 开发设计的类似 WordPress 的产品,并在此基础上增强了电商平台的功能。它使用 JFinal 开发设计,支持类似 WordPress 的几乎所有功能,是一个使用 Java 研发的建站工具,目前已有 10 万个网站使用 JPress 进行推动。
软件亮点:
轻量级:JPress 仅有 8 张数据表,却能完成 WordPress 的几乎所有功能。依赖的 jar 包也极其轻,目前仅有 14 个 jar 包,包括 cos-26Dec2008.jar、druid-1.0.16.jar、ehcache-2.7.5.jar 等。所有工程在 20MB 左右。
快速:无论多么复杂的网页页面,JPress 响应时间基本上在 10ms 内。同时JPress 支持阿里云服务器、七牛、又拍云等 CDN 作为加速,支持分布式部署等功能,即使是中国香港的网络服务器,也只需用“很快”来形容。
灵活:JPress 提出“模板即实体模型”的定义,模板制作者可以用 JPress 来做 blog、新闻系统、社区论坛、问答社区、商城系统等。再加上其灵活的插件功能,几乎可以用于做其他种类的网站。
国内化:由于是国内,所以更符合中国人需求。JPress 与生俱来结合了微信公众平台,内嵌了阿里大鱼的群发短信功能,支持了 QQ 邮箱、163 邮箱等作为发送邮件服务器,后续会提升微信模板信息推送通知客户等更符合中国人需要的功能。最为关键的是 JPress 采用了最宽松的 LGPL 开源协议,和中国内地的这些使用了闭源协议的“开源系统”产品并没有一个等级的。
软件功能:
支持自定义实体模型,自定义实体模型根据模板来定义,而不是后台功能。同时实体模型内容支持自定义类型,例如文章内容实体模型支持专题讲座、分类、标签等类型。
支持多模板模块,默认应用 Freemarker,模板制作者可以采用其他模块例如 thymeleaf 来 3D 渲染,同时支持后台在线文档编辑模板(目前临时只支持 Freemarker 模块)。
支持多数据库类型,可以配置不同的数据库查询(目前暂只支持 mysql)。
支持多在线编辑器,后台数据可视化编写和 markdown 编写随意转换,默认支持免费图片编写和代码高亮等功能。
支持插件化两行源代码就可以进行一个插件的开发设计,和 github 上早已有的插件的 helloworld 案例。
支持 CDN 设置,包括七牛、阿里云服务器、又拍云等。
上传照片支持图片水印设置,同时上传照片自动裁剪成模板需要的多种图片尺寸,确保照片显示不会拉伸。
账号登录支持第三方登录,支持 QQ、微信、新浪微博、开源中国、github 的登录。
支持自定义 URL,网站内容 URL 设计风格自定义。
API 支持,方便 APP 或其他第三方启用数据信息。
现代化支持应用 JPress 轻松制作任何语言的网站。
简约的 SEO 功能,可以为单篇文章内容、每一个分类、每一个标签独立设置 SEO,支持 sitemap 输出。
新用户注册支持电子邮件和手机短信验证,目前短信服务提供商暂只支持阿里大鱼。
在微信层面:
支持微信菜单设置。
支持自动回复,添加关键词和回复内容。
支持默认回复,包括:客户关注时、进入多客服时、退出多客服时、推送图片时、推送语音时、推送视频时、推送位置时、推送链接时、客户扫描了带参数的二维码时、客户摇一摇时。
所有的自动回复或默认回复支持“高级回复”功能,例如回复一篇文章,回复一个网址…高级回复是由 JPress 内嵌开发设计的独特回复,但完全可配置,未来会提升更多的“高级回复”功能。
自动回复或默认回复支持插件回复,启用 JPress 插件进行回复。
支持文章内容检索,回复关键词就可以回到关键词匹配文章内容。
未来会支持文章内容同步或微信导入等好用功能。
在工艺层面:
引以为豪的运用了 JFinal 作为核心,JPress 也是归功于 JFinal 灵活的架构。在 JFinal framework 开源系统管理体系里,JPress 关注每一排逻辑性的完成,高度重视每一排编码品质,应当属于 JFinal 的最佳实践,所以也应该是每一个 JFinaler 必看的项目。
应用 Freemarker 和 thymeleaf 作为模板模块。
JPress 内嵌的独创性缓存文件,使得的 UI 3D 渲染速率已经和模板模块不相干。
应用 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,在分布式框架上没有压力。