首发,我写了一个 Java 10 CMS!

2018-07-23 08:47:48 +08:00
 sited

2 年零 6 个月,这个项目吞了我无尽的业余时间。本来我只是想做一个菜谱的 SEO 爬虫站,看着这一堆的代码,我现在才回过神来,程序员给自己当产品经理太可怕啦!

“模板引擎得自己写一个,thymeleaf 可以改进一下”
“好!”
“ Admin 后台用 react 吧,angular 打包太大了”
“好,必须 react !”
“数据库还是从 JDBC 切到 JPA 吧,JPA 容易写单元测试”
“好,必须切啊,不能测试的代码不是好代码”
“前端用 PureCSS 吧,小”
“好!”
“前端用 bootstrap 吧,能切主题”
“好!”
“微服务框架用 JAX-RS 吧,统统用标准”
“好!”
“切到 Java 10 吧,Java 10 可以打一个更小的带 JRE 安装包”
“好!”
“不支持 IE8 吧”
“好”
“ IE8 还是支持一下吧,两年了,份额也没降…”
“好”
“编辑器用 draftjs 来做个类似 Medium 的吧”
“好”
“编辑器还是用 Markdown 吧,draftjs 的原生数据,太占空间了”
“好…”

这个系统的底层是一个很薄封装的微服务模块框架,基本用的都是 Java 标准 API,每个功能拆分成基于 API 的 module,然后组合 module 形成解决方案,部署也随时可以拆分 API,不需要改动到代码。有点类似 OSGi,但和 Java 10 结合,要更简单。v0.9.0 包括基础的 CMS 功能:

• 用户登录注册密码权限相关(权限还有点小问题)
• 文件上传下载(目录权限是仿照 Linux 实现的,但没写完)
• 页面模板可视化编辑(支持自适应,这个功能老难了,你们来瞅瞅)
• 文章,文章分类管理
• 评论
• …等等,还有很多组件(大概 50 个)因为没有迁移框架,在本地仓库待命,但发出来的功能做个博客大概可能是够了…

Github 有系统截图和安装文档,

https://github.com/sited-io/sited-project

为了易用性,我做了一些 Jersey 的封装,比如硬把 HK2 的 DLS 改成 Guice 风格,基于接口自动生成 JAX-RS Client,JAX-RS 接口实现类不需要带着 rs 相关的注解等等,还发现了一个 Jersey 的 BUG,有机会我要分享一下 Java 10 上 JEE 的坑…

如果你对这个 CMS 有兴趣,或者志愿想当小白鼠,或者对 JEE 迁移 Java 10 有怨念,咱们聊聊,我微信:sited-io,备注 sited。

注:如果你觉得这个项目不错,请给我的一个 github Star,现在可怜巴巴的,请鼓励鼓励我!最近在补性能测试和单元测试,暂定一两周后发布 1.0。

5553 次点击
所在节点    Java
33 条回复
torbrowserbridge
2018-07-23 08:59:20 +08:00
好厉害!!赞!!!
carrywu
2018-07-23 09:03:40 +08:00
star 了
Cyron
2018-07-23 09:06:11 +08:00
厉害,学习了
Willjim
2018-07-23 09:08:01 +08:00
由此可见产品经理不懂一些实现原理还糊弄得过去,程序员自己当产品经理真的糊弄不过去。
siloong
2018-07-23 09:26:27 +08:00
前排留名 star
ghos
2018-07-23 09:58:32 +08:00
懂程序的产品是最可怕的!
lance7in
2018-07-23 10:19:36 +08:00
略臃肿
灵魂支持
id4alex
2018-07-23 10:37:40 +08:00
smtp:
host: smtp.qq.com
port: 587
username: 3262866804@qq.com
password:


兄弟你暴露了
sited
2018-07-23 10:40:37 +08:00
@id4alex 哈哈,专门注册来测试的,之前还有一个 SES 的 KEY 也传上来了
lovedebug
2018-07-23 10:44:05 +08:00
lz 泄密了 哈哈。
给点赞。顺便学习。
PS module 语法现在不推荐吧?
sited
2018-07-23 10:44:44 +08:00
@lance7in 第一版是完全自己写的框架,那时目标是把 jar 包打进 10M,自己实现的 ORM,DI,微服务框架,但后来发现不可能不用第三方框架,比如 lucene,markdown 相关,一旦放开,好吧,hibernate 也用了...

好处就是基本都是标准 API,文档可以少写点:)
ericgui
2018-07-23 10:57:40 +08:00
很牛逼的样子
darkcode
2018-07-23 11:24:45 +08:00
JAVA 10 感觉就不是重点啊
yhzwy
2018-07-23 11:48:33 +08:00
那么还有菜谱吗
sited
2018-07-23 11:59:01 +08:00
@darkcode 用 Java10 的目标有两个 1 )限制模块里类对其他模块的可见性,比如一个接口模块,应该只导出 webservice,而不是具体业务逻辑实现,如果不用 Java10,需要模块框架支持 export 操作 2 )打出带 JRE 的包,但现在第三方库还不成熟,jlink 也没法打自动模块,这个好处还不明显,等 Java 11 应该会好些。
sited
2018-07-23 12:00:48 +08:00
@yhzwy 有做哎,可是 SEO 去美国了,做到 100PV 关站了。最近在试水国外的 affilicate 站,检验一下这个 CMS。
gabon
2018-07-23 12:06:49 +08:00
还以为是 concurrent mark sweep😂
sited
2018-07-23 12:27:11 +08:00
@gabon 高手~
vjnjc
2018-07-23 12:37:18 +08:00
哈哈哈楼主厉害,下下来看看。
其实我是来学 react 和 JAX-RS 的~
metrxqin
2018-07-23 13:18:48 +08:00
我还以为 Concurrent Mark Sweep (CMS) collector。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/473191

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX