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

阅读哪个 java 开源项目源代码能极大提升功力?

  •  
  •   Acheron · 2016-10-25 14:58:45 +08:00 · 14669 次点击
    这是一个创建于 2949 天前的主题,其中的信息可能已经有所发展或是发生改变。
    35 条回复    2016-11-04 12:27:59 +08:00
    letitbesqzr
        1
    letitbesqzr  
       2016-10-25 15:19:51 +08:00
    spring
    misaka19000
        2
    misaka19000  
       2016-10-25 15:35:09 +08:00 via Android
    我觉得这种问题就是扯淡,关键你是要提升自己哪方面的能力
    q397064399
        3
    q397064399  
       2016-10-25 19:11:37 +08:00
    哪方面的功力要搞清楚,纯粹的开源代码大多都是工程项目,代码极度分散,你不懂设计模式,看起来特别辛苦
    Cbdy
        4
    Cbdy  
       2016-10-25 19:13:51 +08:00 via Android
    Spring 全家桶
    cuebyte
        5
    cuebyte  
       2016-10-25 19:14:15 +08:00
    武侠小说看多了吧,不如沉下心来好好看书
    wangpugod2003
        6
    wangpugod2003  
       2016-10-25 19:15:08 +08:00
    我也在想这个问题,觉得问题可以分为:
    1 、想提升基础的 JAVA 功底(各 API ,反射, IO/NIO ,基本设计模式等),读哪个开源项目源码比较好?
    2 、专业方向,比如 javaee ,大数据等等,分别读哪个框架源码最好?
    Infernalzero
        7
    Infernalzero  
       2016-10-25 19:17:05 +08:00
    光读没用的,只有结合实践的读源码才能更好理解
    wangpugod2003
        8
    wangpugod2003  
       2016-10-25 19:27:08 +08:00
    或者说哪个框架或者开源的项目代码最值得玩耍推敲下的?帮推荐下哈~
    q397064399
        9
    q397064399  
       2016-10-25 19:40:54 +08:00
    q397064399
        10
    q397064399  
       2016-10-25 19:41:28 +08:00
    @wangpugod2003 jsp 与 servlet head first 这本书可以,虽然有点老,但是 J2ee 这些年变化不大
    phoenixlzx
        11
    phoenixlzx  
       2016-10-25 19:53:00 +08:00
    我觉得去读读各种 Minecraft 的 mod/plugin 源码可以

    为了解决各种 Minecraft 的奇葩问题用尽了各种 hack/workaround/ugly patch (逃
    f1r1ng
        12
    f1r1ng  
       2016-10-25 20:07:28 +08:00
    具体情况具体分析,要是所有都有的话得看多久啊
    yidinghe
        13
    yidinghe  
       2016-10-25 20:10:52 +08:00 via Android
    对大的项目来说,源代码不足以体现全部的设计意图,所以光看源代码能看懂多少还真是个问题。
    Mogugugugu
        14
    Mogugugugu  
       2016-10-25 22:00:58 +08:00
    老大说 activiti 的代码最清晰,结构最好。可是我能力不足看不大懂。
    k9982874
        15
    k9982874  
       2016-10-25 22:05:50 +08:00 via iPad
    阅读一万个项目不如动手写一个
    wdlth
        16
    wdlth  
       2016-10-25 22:25:11 +08:00
    把 Apache 基金会的项目挨个搞一遍……
    zenliver
        17
    zenliver  
       2016-10-25 23:45:16 +08:00
    netty
    EreeBay
        18
    EreeBay  
       2016-10-25 23:47:52 +08:00 via Android
    @phoenixlzx 卷!
    wuyukai
        19
    wuyukai  
       2016-10-26 00:16:06 +08:00 via Android
    @q397064399 初学 web 开发, servlet jsp javabean 之类需要很深度的学习嘛,现在把书本看了一遍,原理概念语法类的东西有些感觉。不知道现在是不是要深入下去这方面的代码,又觉得现在很多都是用框架,这种知道大概基础原理是不是就可以呢?
    xiusedelang
        20
    xiusedelang  
       2016-10-26 00:30:34 +08:00
    openJDK
    q397064399
        21
    q397064399  
       2016-10-26 07:08:44 +08:00   ❤️ 2
    @wuyukai 写吧,我虽然写代码很多年了,最早应该是 15 岁开始写 ASP ,不过一直都是业余爱好,现在毕业快一年了,
    已经打算要走上码农这条路了

    原理,我个人认为是完全没必要深究的,在实际开发中,有需要就深入探索一下,专门花时间没有必要,
    像 ORM 框架,其实没什么新技术,无非就是虚拟机运行时反射获得注解,然后通过一些文法规则给你自动构建
    Java 对象模型-数据关系 ,你自己去深究这些原理,也搞不出个什么名堂来,顶多写个小轮子,实际意义不大,如果你的业务有高并发需求或者存储层有十分繁琐的任务再去深入了解这方面的知识也不迟,找工作为目的的话,最好是会用 熟练就好,有精力的话 前后端兼顾是最好,

    数据库方面,这么多年,底层用的还是那套玩意,无非是 B 树等常见的数据结构,作一下了解,写 SQL 的时候有优化方面的帮助

    我个人是从来不提倡搞一门技术,就一定要去深挖,第一没必要,第二很多技术刚开始很难用,但随着社区发展,技术门槛会越来越低,而且时代在变化,一门技术存在的价值也是在不断变化的,很多年前, Javascript 是作为一门十分糟糕商业早产儿出现的,但是因为各种原因,它并没有死,反而越活越好。而 Java 最早在国内开始大行其道的时候,应该是 05 左右,最早写 Java 是被 C++程序员鄙视的,而现在 Java 现在基本上是企业应用以及移动开发的首选
    q397064399
        22
    q397064399  
       2016-10-26 07:16:50 +08:00   ❤️ 1
    @wuyukai 如果是学生的话,就好好深入钻研底层知识,框架神马基本上是个熟练工,早晚都会
    best practise
    ihuotui
        23
    ihuotui  
       2016-10-26 08:47:54 +08:00 via Android
    netty dubbo spring
    wuyukai
        24
    wuyukai  
       2016-10-26 09:39:43 +08:00 via Android
    @q397064399 好的,非常感谢这么详尽用心的回答,收获颇丰。确实是学生, 985 小硕研二,过一年就毕业找工作了,非科班,所以知识基本是自学。

    JSE 方面基本是从研一开始学的,学完基础后也敲了一些基础的代码,那时应该还只是会点皮毛吧,还不算入门。后来因为课程繁忙及导师项目导致自由时间不多基本就放那了。

    后面到研二没课轻松点了的时候重新捡起来又学一遍 JSE ,然后朝着 java web 的方向一路走过来,包括 html/css ,数据库 mysql ,现在的 servlet/jsp 。这些也没有深究,代码也不是写的很多,基本是敲敲书上的例子,然后保证书上的每个例子的代码知其所以然,再高级的东西就没有深入了。

    因为 java web 涉及的东西还是挺多的,自己也快毕业了,除了 JSE ,其他地方不敢花费太多的时间,但是基础又不能略过的太多,要不然代码看不懂也是浑身难受,至少知道这些知识点知道去搜索引擎搜什么。其实我跟你的想法差不多,做个略懂基础,工具,框架熟练的码农哈哈,因为这样才能找到工作吧😂,需要深究的东西以后再深入
    wizardoz
        25
    wizardoz  
       2016-10-26 10:31:01 +08:00
    你自己写的 star 超过 1000 的那个,逃~
    chocotan
        26
    chocotan  
       2016-10-26 13:14:55 +08:00
    我以前也萌生过阅读某个大框架的源码的想法, 然而,连这个框架功能都没摸清 都不会用还看啥源码

    光看源码没啥用,实践才能提升功力,但也可能是我自己太笨了
    我只有实际项目中用到一些知识的时候才会去看与这部分有关的代码, 比如给 xstream 加了个小功能, dubbo 是如何跟 spring 整合的, spring-boot 缓存自动配置里是怎么用 aop 的.......
    q397064399
        27
    q397064399  
       2016-10-26 13:49:11 +08:00
    @wuyukai 很快要找工作的话,真的没必要深究,何况你不是科班,同我一样 是为了找工作,真没必要深究, Java 把 Util 给用熟,框架基本上会就行了,
    一开始深挖没有必要 而且很浪费时间,大多时候的业务场景 也不需要多么牛逼深奥的技术,有时间深挖的话,我个人建议还不如多掌握一门技术,例如把前端也搞一搞

    http://jonwinters.pw 你看我的小论坛,花了 4 天写的玩意,基本上是我上初中时候自学 SQL 的知识 写的玩意,没有 ORM 全是手写的 SQL 分页用的 SQL TAG 也是 SQL 查询然后做过滤处理,但是前端技术跟我初中那个时候学的前端概念就不一样了,那个时候我玩的都是 Jquery ,全是 DOM 操作,样板代码十分多,一般简单的页面都是后端脚本渲染的,现在流行 MVVM 框架,填了 Javascript 的大坑,双向绑定,前端抗起了渲染跟交互的大坑,后端只管提交数据了,不过目前我这个小论坛前端交互效果还很差,很多都没完善,不过后端基本搞定了
    inisun
        28
    inisun  
       2016-10-26 13:49:49 +08:00 via iPhone
    设计模式和算法基础跟不上的话,读这些源码真的有点受不了,不过 spring 的代码确实值得看看,而且也有帮助看源码的书籍
    ZiLong
        29
    ZiLong  
       2016-10-26 15:17:54 +08:00
    看完大家评论,突然想说 lz 最应该阅读的是**剑指 offer**(逃
    gowk
        30
    gowk  
       2016-10-26 16:18:42 +08:00
    Apache Common DBUtils
    Mybatis
    另外有两个比较简单的 MVC 框架,可以看看( github ):
    https://github.com/mastermay/Spectre
    https://github.com/JeffLi1993/fast-framework
    cjyang1128
        31
    cjyang1128  
       2016-10-26 23:25:37 +08:00
    netty 、 Spring
    unique
        32
    unique  
       2016-10-27 08:04:13 +08:00 via iPhone
    楼主可以看看我 github 有什么好玩的, java 相关 https://github.com/biezhi
    cs4814751
        33
    cs4814751  
       2016-11-01 20:51:37 +08:00
    @wuyukai 跟你的情况基本一模一样 要不要加个好友聊下
    wuyukai
        34
    wuyukai  
       2016-11-01 22:55:37 +08:00 via Android
    @cs4814751 微信: wuyukai879293 ,不过我这段时间都忙着老师的项目了,糟心
    errorlife
        35
    errorlife  
       2016-11-04 12:27:59 +08:00
    @wizardoz show me the url.ths
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1004 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 20:05 · PVG 04:05 · LAX 12:05 · JFK 15:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.