写了一个轻量级的 Java Web 框架 欢迎使用! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
hero0earth
V2EX    程序员

写了一个轻量级的 Java Web 框架 欢迎使用!

  •  
  •   hero0earth
    esotericman 2024-02-01 01:17:05 +08:00 5496 次点击
    这是一个创建于 617 天前的主题,其中的信息可能已经有所发展或是发生改变。

    基于 Netty 实现了一个轻量级的 Java Web 框架,麻雀虽小,五脏俱全。

    • 声明式路由,无注解
    • 过滤器,异常处理应有尽有
    • 静态资源托管,模板引擎支持
    • WebSocket 支持,自由化定制
    • 还有很多 ...

    项目地址 Windward,从此简简单单写 Java

    41 条回复    2024-02-02 11:33:01 +08:00
    8rmEHZ8WhVHVOb0E
        1
    8rmEHZ8WhVHVOb0E  
       2024-02-01 01:20:02 +08:00   9
    你们 javaer 不是都用 springboot 吗 我一直以为你们不用其它的
    sakuramanstein
        2
    sakuramanstein  
       2024-02-01 08:22:47 +08:00 via Android
    牛,支持一波
    lsk569937453
        3
    lsk569937453  
       2024-02-01 08:35:02 +08:00
    @xiaomada 反正我们公司是 jdk 1.8+springboot 2.x+http 。毕竟 web 项目主要就是增删改查。
    性能?我优化了项目,性能提升了,老板又不帮我加工资。
    websocket 协议? 100 个项目可能会有 1 两个项目会用其他的协议(websocket/grpc)。
    Dragonphy
        4
    Dragonphy  
       2024-02-01 08:38:39 +08:00   1
    @lsk569937453 Spring Data Rest 一把梭
    stinkytofu
        5
    stinkytofu  
       2024-02-01 08:45:45 +08:00
    正需要这个, 我倒不是想开发 web , 正儿八经写后端肯定用 springboot , 我想在 java 程序中实现 http api 实现外部调用, 用 springboot 就太重了。现在用的是 nanohttpd , 太老了, 也不好用。
    wxd21020
        6
    wxd21020  
       2024-02-01 08:46:39 +08:00
    是否可以讲讲项目架构,开发历程,功能实现等等,来促使更多想学习,想使用的人了解你的项目,学习你的思路,愚建,仅供参考。
    keepfun
        7
    keepfun  
       2024-02-01 09:15:13 +08:00   1
    rps 是怎么做到比 go 的 gin 还高的啊 有机会我试一把
    Goooooos
        8
    Goooooos  
       2024-02-01 09:17:20 +08:00
    我还喜欢用 vertx
    xiongperry
        9
    xiongperry  
       2024-02-01 09:19:13 +08:00
    不错呀楼主,有点像除了 java 以外的其他语言框架,楼主是 php,go 等其他语言的开发者吗

    看文档没有写查数据库之类的

    github 已经给你 star 星星了
    SvenWong
        10
    SvenWong  
       2024-02-01 09:22:10 +08:00   1
    @wxd21020 #6 代码开源了,地址也给了,项目主页也有手册和一些说明
    Philippa
        11
    Philippa  
       2024-02-01 09:38:20 +08:00   1
    配置还是 xml ,看着都头疼
    hero0earth
        12
    hero0earth  
    OP
       2024-02-01 09:58:34 +08:00
    @Philippa 你用 Maven 肯定还是 xml 啊,本身没有预置任何类型的配置文件
    hero0earth
        13
    hero0earth  
    OP
       2024-02-01 10:00:12 +08:00
    @xiongperry 哈哈,楼主就是写 Java 的。只是 Web 框架,数据库操作不是一个范畴
    jaylengao
        14
    jaylengao  
       2024-02-01 10:12:15 +08:00   1
    benchmark 不太准吧,gin 比 vertx 还高
    Ayanokouji
        15
    Ayanokouji  
       2024-02-01 10:21:35 +08:00
    @xiaomada 是的,要换 springboot ,java 也一起换了
    hero0earth
        16
    hero0earth  
    OP
       2024-02-01 10:24:32 +08:00
    @jaylengao IO 操作不重的情况下,Reactive 应用并不能发挥优势
    KING754
        17
    KING754  
       2024-02-01 11:06:38 +08:00
    https://github.com/KING754/unicorn 我有一个 DEMO 的。一直想细化和深入一下。一直懒,也不知道接下来该做些什么。
    williamshan
        18
    williamshan  
       2024-02-01 11:34:35 +08:00 via Android
    牛的,学习学习
    zzl22100048
        19
    zzl22100048  
       2024-02-01 11:38:25 +08:00
    小项目我都用 activej https://activej.io/ 启动是真快
    Dlin
        20
    Dlin  
       2024-02-01 11:40:06 +08:00
    不是 servlet 那一套
    Dlin
        21
    Dlin  
       2024-02-01 11:41:24 +08:00
    先打个关注一波
    mmdsun
        22
    mmdsun  
       2024-02-01 12:49:41 +08:00 via iPhone
    @xiaomada 我们公司也有用 Vert.X 和 Akka 和 spring boot 五五开
    diagnostics
        23
    diagnostics  
       2024-02-01 13:16:22 +08:00
    Web Backend 的架构来来回回就是那个样子,无非在用户 API 上做了些改变或者线程模式上有一些轻微的变化。
    ayayui
        24
    ayayui  
       2024-02-01 13:25:49 +08:00
    推荐下 Ktor
    90xchun
        25
    90xchun  
       2024-02-01 13:43:40 +08:00 via Android
    ,web 框架提供静态资源托管的还真不常见的

    小项目我都用 https//github.com/94fzb/simplewebserver ,不基于 netty ,内存使用量更小,更底层,更易控制,比如博客程序这种功能不复杂工程 https://blog.zrlog.com
    silentsky
        26
    silentsky  
       2024-02-01 13:45:36 +08:00
    spring webflux 也是基于 netty 的 不太相信比 springmvc 还差
    Leviathann
        27
    Leviathann  
       2024-02-01 13:46:29 +08:00
    @zzl22100048 这玩意好像有很多黑科技
    smartdoc647
        28
    smartdoc647  
       2024-02-01 15:20:36 08:00
    无注解框架的有一个痛点就是搞接口文档比较难,其实很多开发都不想手写文档,像我们开源的 smart-doc 对 spring 这种注解路由的框架,工程师已经只需要写几行简单的 javadoc 注释了。生成的文档质量也远超手写的。我同时也是一个 golang 开发者,我们发现 go 的框架基本也是声明式路由,搞文档就很头痛
    ychost
        29
    ychost  
       2024-02-01 15:51:04 +08:00
    和 ktor 的风格差不多,不过 Web 端入口写法都大同小异
    Philippa
        30
    Philippa  
       2024-02-01 16:20:14 +08:00 via iPhone
    @smartdoc647 可以自动生成 swagger ,不仅能看还能调用
    smartdoc647
        31
    smartdoc647  
       2024-02-01 16:50:46 +08:00
    @Philippa swagger 对群主框架就没啥用的,go 框架也能用 swagger 搞,但是我们发现这东西无脑让写一堆非标注释。理想的情况就是既不去影响用户的代码,又不能要求用户写一堆非标注释增加开发的负担。smart-doc 在国内在 java 领域非常受欢迎也是这个原因。我们的贡献者甚至都有小米、快手这些公司的。
    hongye
        32
    hongye  
       2024-02-01 17:57:45 +08:00
    稍微看了下,变量好像是依赖 context 进行传递的,请问是如何做线程安全的呢
    Philippa
        33
    Philippa  
       2024-02-01 18:03:20 +08:00
    @smartdoc647 不用写注释,就是代码直接生成 swagger 。代码变了就会跟着变了
    hero0earth
        34
    hero0earth  
    OP
       2024-02-01 18:05:31 +08:00
    @hongye Context 并不存在资源共享
    keepfun
        35
    keepfun  
       2024-02-01 18:18:56 +08:00
    学习了 下 文档太简单了 文档也就能跑个 hello world 。
    看到群主依有个 short url ,用了这个框架,但是版本不是最新的,想着换成最新的,然后吧 java17 的语法改下,结果 路由那块不知道咋改 test 里面也找不到例子。 所以如果这样子,用的代价有点大。
    hero0earth
        36
    hero0earth  
    OP
       2024-02-01 18:24:43 +08:00
    @fenglangjuxu 那个项目路由注册用了 Java 的语法糖,常见问题有个示例的入门项目啊
    keepfun
        37
    keepfun  
       2024-02-01 18:44:00 +08:00
    @hero0earth #36 嗯 看到了那个入门项目 那个基本也就一个 hello world 。其实我觉得 最起码实例应该加上 你这个框架的一个核心特性 就是 function 包括带有入参的那种 function 。

    当然 我的要求有点多了,但是我觉得既然把框架发到这里,就是想让大家使用的,提出的问题,没有恶意。更不是对作者水平的怀疑,毕竟能写出这样框架的人,水平肯定是很牛逼的。
    hero0earth
        38
    hero0earth  
    OP
       2024-02-01 18:48:10 +08:00
    @fenglangjuxu 那个是 Java 的特性,我不敢乱戴帽子,后续文档我提一嘴
    Braisdom
        39
    Braisdom  
       2024-02-01 19:43:07 +08:00
    @hero0earth 学习了一下,感觉不错,点赞。
    cnzjl
        40
    cnzjl  
       2024-02-02 09:04:24 +08:00
    轻量级是不是就意味着要舍弃很多功能,需要用户自己实现
    hero0earth
        41
    hero0earth  
    OP
       2024-02-02 11:33:01 +08:00
    @cnzjl 并不完全绝对,要视项目而言,用户更多的是做整合
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2968 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 13:34 PVG 21:34 LAX 06:34 JFK 09:34
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86