V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sited
V2EX  ›  Java

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

  •  1
     
  •   sited · 2018-07-23 08:47:48 +08:00 · 5545 次点击
    这是一个创建于 2302 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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。

    33 条回复    2018-07-24 13:03:39 +08:00
    torbrowserbridge
        1
    torbrowserbridge  
       2018-07-23 08:59:20 +08:00
    好厉害!!赞!!!
    carrywu
        2
    carrywu  
       2018-07-23 09:03:40 +08:00
    star 了
    Cyron
        3
    Cyron  
       2018-07-23 09:06:11 +08:00
    厉害,学习了
    Willjim
        4
    Willjim  
       2018-07-23 09:08:01 +08:00 via Android
    由此可见产品经理不懂一些实现原理还糊弄得过去,程序员自己当产品经理真的糊弄不过去。
    siloong
        5
    siloong  
       2018-07-23 09:26:27 +08:00
    前排留名 star
    ghos
        6
    ghos  
       2018-07-23 09:58:32 +08:00
    懂程序的产品是最可怕的!
    lance7in
        7
    lance7in  
       2018-07-23 10:19:36 +08:00
    略臃肿
    灵魂支持
    id4alex
        8
    id4alex  
       2018-07-23 10:37:40 +08:00   ❤️ 1
    smtp:
    host: smtp.qq.com
    port: 587
    username: [email protected]
    password:


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

    好处就是基本都是标准 API,文档可以少写点:)
    ericgui
        12
    ericgui  
       2018-07-23 10:57:40 +08:00
    很牛逼的样子
    darkcode
        13
    darkcode  
       2018-07-23 11:24:45 +08:00
    JAVA 10 感觉就不是重点啊
    yhzwy
        14
    yhzwy  
       2018-07-23 11:48:33 +08:00
    那么还有菜谱吗
    sited
        15
    sited  
    OP
       2018-07-23 11:59:01 +08:00
    @darkcode 用 Java10 的目标有两个 1 )限制模块里类对其他模块的可见性,比如一个接口模块,应该只导出 webservice,而不是具体业务逻辑实现,如果不用 Java10,需要模块框架支持 export 操作 2 )打出带 JRE 的包,但现在第三方库还不成熟,jlink 也没法打自动模块,这个好处还不明显,等 Java 11 应该会好些。
    sited
        16
    sited  
    OP
       2018-07-23 12:00:48 +08:00
    @yhzwy 有做哎,可是 SEO 去美国了,做到 100PV 关站了。最近在试水国外的 affilicate 站,检验一下这个 CMS。
    gabon
        17
    gabon  
       2018-07-23 12:06:49 +08:00 via Android   ❤️ 1
    还以为是 concurrent mark sweep😂
    sited
        18
    sited  
    OP
       2018-07-23 12:27:11 +08:00
    @gabon 高手~
    vjnjc
        19
    vjnjc  
       2018-07-23 12:37:18 +08:00
    哈哈哈楼主厉害,下下来看看。
    其实我是来学 react 和 JAX-RS 的~
    metrxqin
        20
    metrxqin  
       2018-07-23 13:18:48 +08:00   ❤️ 1
    我还以为 Concurrent Mark Sweep (CMS) collector。
    Sharuru
        21
    Sharuru  
       2018-07-23 13:25:35 +08:00
    Java 10 的支持周期了解下,接下来该换 Java 11 了
    sited
        22
    sited  
    OP
       2018-07-23 14:46:46 +08:00   ❤️ 1
    @Sharuru 是啊,已经等的急不可耐了。之前 Javassist 在 JDK 11 上 break,貌似 fix 了。所以现在应该可以运行在 JDK 11 才对。
    Cbdy
        23
    Cbdy  
       2018-07-23 15:00:29 +08:00 via Android
    怎么打一个更小的 JRE ?有啥文章参考一下吗?
    sdalkesioe
        24
    sdalkesioe  
       2018-07-23 15:26:28 +08:00
    @Cbdy 根据需要精简 jer 包就行,可以参考: https://wenku.baidu.com/view/c265c4f1360cba1aa811da3c
    sited
        25
    sited  
    OP
       2018-07-23 16:04:42 +08:00
    Java 9 命令行程序可以打一个 10M 左右的带 JRE 的包。https://steveperkins.com/using-java-9-modularization-to-ship-zero-dependency-native-apps/
    0915240
        26
    0915240  
       2018-07-23 20:37:23 +08:00
    擦,这不是我想要的 cms。。。。



    但还是要支持下了。
    sited
        27
    sited  
    OP
       2018-07-23 21:42:41 +08:00
    @0915240 兄弟,说下你的需求~
    crack105
        28
    crack105  
       2018-07-24 03:18:18 +08:00
    已 star,学习一个哈哈
    zmxnv123
        29
    zmxnv123  
       2018-07-24 08:38:18 +08:00 via Android
    第一眼想到的是 cms 垃圾回收器 看到后来发现不是,但还是给楼主一个 star
    Heanes
        30
    Heanes  
       2018-07-24 08:42:07 +08:00
    学习一个
    thisisgpy
        31
    thisisgpy  
       2018-07-24 10:30:45 +08:00
    吓我一跳,还以为楼主写了个 GC。
    sited
        32
    sited  
    OP
       2018-07-24 12:32:51 +08:00
    @zmxnv123 谢谢!写垃圾回收器是不可能的~
    archer2ee
        33
    archer2ee  
       2018-07-24 13:03:39 +08:00
    吓我一跳,还以为楼主写了个 GC。+1
    哈哈,还是给楼主点个赞!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2665 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:34 · PVG 14:34 · LAX 22:34 · JFK 01:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.