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

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

  •  
  •   hero0earth ·
    esotericman · 304 天前 · 4773 次点击
    这是一个创建于 304 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

    当然 我的要求有点多了,但是我觉得既然把框架发到这里,就是想让大家使用的,提出的问题,没有恶意。更不是对作者水平的怀疑,毕竟能写出这样框架的人,水平肯定是很牛逼的。
    hero0earth
        38
    hero0earth  
    OP
       303 天前
    @fenglangjuxu 那个是 Java 的特性,我不敢乱戴帽子,后续文档我提一嘴
    Braisdom
        39
    Braisdom  
       303 天前
    @hero0earth 学习了一下,感觉不错,点赞。
    cnzjl
        40
    cnzjl  
       303 天前
    轻量级是不是就意味着要舍弃很多功能,需要用户自己实现
    hero0earth
        41
    hero0earth  
    OP
       303 天前
    @cnzjl 并不完全绝对,要视项目而言,用户更多的是做整合
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2574 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:14 · PVG 13:14 · LAX 21:14 · JFK 00:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.