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

Java 值得读源码的开源项目

  •  
  •   errorMsg0xff · 2023-12-15 19:16:16 +08:00 · 4496 次点击
    这是一个创建于 369 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前几天听人说 Spring 源码很多设计模式是错误的,jdk 的源码也有不优雅的地方(这里不是黑印度人,没有任何歧视),不知道他是装 x 的,还是事实

    所以想问一下大家有没有比较值得读源码的开源项目?或者非常值得读的一段代码
    27 条回复    2023-12-18 16:38:58 +08:00
    hello2090
        1
    hello2090  
       2023-12-15 19:32:03 +08:00   ❤️ 1
    他工资多少哇
    smalljop
        2
    smalljop  
       2023-12-15 20:13:49 +08:00
    那读一下 go 的源码
    xuanbg
        3
    xuanbg  
       2023-12-15 20:28:22 +08:00
    值得学习的是设计思想,源码真的没必要去读,除非遇到了 bug
    jeesk
        4
    jeesk  
       2023-12-15 20:53:42 +08:00
    什么叫做错误的? 应该说很多代码是为了兼容和历史遗留问题。 并且文件命名晦涩难懂。
    awalkingman
        5
    awalkingman  
       2023-12-15 20:56:15 +08:00
    netty 吧如果一定要推荐
    Leviathann
        6
    Leviathann  
       2023-12-15 21:18:27 +08:00
    学下整体架构设计就行了,具体代码写法就别学了,基本都是屎山

    spring 那代码我看着就想吐
    securityCoding
        7
    securityCoding  
       2023-12-15 21:47:43 +08:00
    可以找个 rpc 框架看看 ,比如 dubbo,motan 都很不错
    simanW
        8
    simanW  
       2023-12-15 22:44:32 +08:00
    mybatis 的设计还不错,自我感觉
    chenqh
        9
    chenqh  
       2023-12-15 23:05:47 +08:00
    开源项目的源代码维护得越久,就越是屎山,我至今记得我读 celery 那个配置的代码看得我好像被人用大锤猛锤几百下
    followNew
        10
    followNew  
       2023-12-15 23:24:06 +08:00
    商业项目的源码,迭代了很多年,是各种妥协的结果。
    看它们只能粗读,细读会进死胡同。

    程序员都有点理想化,代码不完美就看成是屎山。
    kuituosi
        11
    kuituosi  
       2023-12-15 23:26:32 +08:00   ❤️ 1
    jdk 有历史原因和兼容原因,不可能很优雅
    但是无脑挑战 spring 就是脑袋进水了
    值得读的源码都是经常用的框架啊
    jdk spring tomcat mybatis netty rocketmq dubbo guava
    zookeeper nacos
    L0L
        12
    L0L  
       2023-12-15 23:33:36 +08:00 via Android
    jdk 里面有两个 concurrentHashMap ,感觉值得看一看
    trzzzz
        13
    trzzzz  
       2023-12-16 15:07:54 +08:00 via iPhone
    @L0L 是的 我看过 jdk 里面的线程池,还是可以的
    pengtdyd
        14
    pengtdyd  
       2023-12-16 18:52:34 +08:00
    netty
    gowk
        15
    gowk  
       2023-12-16 20:15:40 +08:00
    自荐一下我 Star 过的 Repo: https://github.com/gowk?tab=stars
    逛 GitHub 这些年积攒下来的,有些还不错
    前几天听说淘宝竟然有打包卖书签的
    不知道 Star 的代码库可不可以卖 😂
    ychost
        16
    ychost  
       2023-12-16 21:29:59 +08:00
    Netty 不错,没那么多设计模式,且无论是性能还是易读性都还可以
    dlmy
        17
    dlmy  
       2023-12-16 23:38:37 +08:00   ❤️ 2
    入门:MyBatis
    进阶:Netty ,Disruptor
    精读:Tomcat ,Dubbo
    ikas
        18
    ikas  
       2023-12-16 23:41:30 +08:00
    自己哪个用的多,就优先读哪个

    为啥读源码一定就要是无暇的?还是要自己体会与思考

    还有,不一定要读最新的版本,成熟的框架往往都会加入非常多的兼容与妥协,直接选择旧版本看反而更容易理解意图
    jiakme
        19
    jiakme  
       2023-12-17 10:35:47 +08:00
    底层: JUC 包
    设计模式:
    - https://github.com/iluwatar/java-design-patterns
    - Spring/SpringBoot: 主要关注 Bean 初始化, SPI, 拓展性设计
    网络: Netty
    RPC: Dubbo
    看完以上, 再结合自身需求看一些其它项目
    acerphoenix
        20
    acerphoenix  
       2023-12-17 10:42:15 +08:00
    上来先简单的,apache 的一些包,
    dddys
        21
    dddys  
       2023-12-17 15:22:01 +08:00
    apache doris ,时序数据库
    fkdog
        22
    fkdog  
       2023-12-18 09:58:09 +08:00
    没有明确目的的读源码行为,跟 xx 没什么区别。
    卷也没个卷的正确方法,跟个无头苍蝇一样乱撞,笑死个人。
    aoxg2019
        23
    aoxg2019  
       2023-12-18 09:59:20 +08:00 via iPhone
    一定要读一个的话可以选择 netty
    nolog
        24
    nolog  
       2023-12-18 10:15:08 +08:00
    @fkdog 那应该带着怎样的目的去读源码才是有意义的?
    errorMsg0xff
        25
    errorMsg0xff  
    OP
       2023-12-18 11:19:27 +08:00
    @jeesk 他的意思是这样,举个例子: 命名是 Adapter 适配器模式,但实际是其他的设计模式
    LoNeZ
        26
    LoNeZ  
       2023-12-18 13:25:08 +08:00
    Netty 是最值得看的,别的可以参看一些 Java 实现的中间件的.
    Aresxue
        27
    Aresxue  
       2023-12-18 16:38:58 +08:00
    值得的:Netty
    架构设计的好看的:Dubbo
    理念完善的:Spring
    实现巧妙的:AQS 、ConcurrentHashMap
    贴近业务的:Rocketmq
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1829 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:21 · PVG 00:21 · LAX 08:21 · JFK 11:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.