sited
V2EX  ›  Java

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

  •  1
     
  •   sited · Jul 23, 2018 · 6168 views
    This topic created in 2876 days ago, the information mentioned may be changed or developed.

    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 replies    2018-07-24 13:03:39 +08:00
    torbrowserbridge
        1
    torbrowserbridge  
       Jul 23, 2018
    好厉害!!赞!!!
    carrywu
        2
    carrywu  
       Jul 23, 2018
    star 了
    Cyron
        3
    Cyron  
       Jul 23, 2018
    厉害,学习了
    Willjim
        4
    Willjim  
       Jul 23, 2018 via Android
    由此可见产品经理不懂一些实现原理还糊弄得过去,程序员自己当产品经理真的糊弄不过去。
    siloong
        5
    siloong  
       Jul 23, 2018
    前排留名 star
    ghos
        6
    ghos  
       Jul 23, 2018
    懂程序的产品是最可怕的!
    lance7in
        7
    lance7in  
       Jul 23, 2018
    略臃肿
    灵魂支持
    id4alex
        8
    id4alex  
       Jul 23, 2018   ❤️ 1
    smtp:
    host: smtp.qq.com
    port: 587
    username: [email protected]
    password:


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

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



    但还是要支持下了。
    sited
        27
    sited  
    OP
       Jul 23, 2018
    @0915240 兄弟,说下你的需求~
    crack105
        28
    crack105  
       Jul 24, 2018
    已 star,学习一个哈哈
    xe2vherd
        29
    xe2vherd  
       Jul 24, 2018 via Android
    第一眼想到的是 cms 垃圾回收器 看到后来发现不是,但还是给楼主一个 star
    Heanes
        30
    Heanes  
       Jul 24, 2018
    学习一个
    thisisgpy
        31
    thisisgpy  
       Jul 24, 2018
    吓我一跳,还以为楼主写了个 GC。
    sited
        32
    sited  
    OP
       Jul 24, 2018
    @zmxnv123 谢谢!写垃圾回收器是不可能的~
    archer2ee
        33
    archer2ee  
       Jul 24, 2018
    吓我一跳,还以为楼主写了个 GC。+1
    哈哈,还是给楼主点个赞!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2519 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 70ms · UTC 01:36 · PVG 09:36 · LAX 18:36 · JFK 21:36
    ♥ Do have faith in what you're doing.