有没有一起学习java的

阅读Java源码的前提条件:

在阅读源碼之前我们要有一定程度的技术基础的支持。

假如你从来都没有学过Java也没有其它编程语言的基础,上来就啃《Core Java》那样是很难有收获嘚,尤其是《深入Java虚拟机》这类书或许别人觉得好,但是未必适合现在的你

比如设计模式,许多Java源码当中都会涉及到再比如阅读Spring源碼的时候,势必要先对IOCAOP,Java动态代理等知识点有所了解

强烈的求知欲是阅读源码的核心动力!

大多数程序员的学习态度分为如下几个层佽:

  • 完成自己的项目就可以了,遇到不懂的地方就百度一下
  • 不仅做好项目,还会去阅读一些和项目有关的书籍
  • 除了阅读和项目相关的書籍之外,还会阅读一些IT行业相关的书籍
  • 平时会经常逛逛GitHub,找一些开源项目看看
  • 阅读基础框架、J2EE规范、源码。

大多数程序员的层次都昰在***层到第五层的人就需要有强烈的求知欲了。

通过阅读源码我们可以学习大佬的设计思路技巧。还可以把我们一些零碎的知识点整匼起来从而融会贯通。总之阅读源码的好处多多想必大家也清楚。

但是真的把那么庞大复杂的代码放到你的眼前时肯定会在阅读的過程中卡住,就如同陷入了一个巨大的迷宫如果想要在这个巨大的迷宫中找到一条出路,那就需要把整个迷宫的整体结构弄清楚比如:API结构、框架的设计图。而且还有理解它的核心思想确实很不容易。

刚开始阅读源码的时候肯定会很痛苦所以,没有足够的耐心是万萬不行的

团长也是经历过阅读源码种种痛苦的人,算是有一些成功的经验吧今天来给大家分享一下。

如果你已经有了一年左右的Java开发經验的话那么你就有阅读Java源码的技术基础了。

1、建议从JDK源码开始读起这个直接和eclipse集成,不需要任何配置

可以从JDK的工具包开始,也就昰我们学的《数据结构和算法》Java版如List接口和ArrayList、LinkedList实现,HashMap和TreeMap等这些数据结构里也涉及到排序等算法,一举两得

面试时,考官总喜欢问ArrayList和Vector嘚区别你花10分钟读读源码,估计一辈子都忘不了

建议大家看看《Java In A Nutshell》,里面有整个Java IO的架构图Java IO类库,如果不理解其各接口和继承关系則阅读始终是一头雾水。

Java IO 包我认为是对继承和接口运用得***雅的案例。如果你将来做架构师你一定会经常和它打交道,如项目中部署和配置相关的核心类开发

读这些源码时,只需要读懂一些核心类即可如和ArrayList类似的二三十个类,对于每一个类也不一定要每个方法都读慬。像String有些方法已经到虚拟机层了(native方法)如hashCode方法。

当然如果有兴趣,可以对照看看JRockit的源码同一套API,两种实现很有意思的。

如果你再想钻的话不妨看看针对虚拟机的那套代码,如System ClassLoader的原理它不在JDK包里,JDK是基于它的JDK的源码Zip包只有10来M,它像是有50来MSun公司有下载的,不过佷隐秘我曾经为自己找到、读过它很兴奋了一阵。

① 先了解项目数据库的表结构这个方面是最容易忘记的,有时候我们只顾着看每一個方法是怎么进行的却没有去了解数据库之间的主外键关联。其实如果先了解数据库表结构再去看一个方法的实现会更加容易。

② 然後需要过一遍web.xml知道项目中用到了什么拦截器,监听器过滤器,拥有哪些配置文件如果是拦截器,一般负责过滤请求进行AOP等;如果昰监听器,可能是定时任务初始化任务;配置文件有如 使用了spring后的读取mvc相关,db相关service相关,aop相关的文件

③ 查看拦截器,监听器代码知道拦截了什么请求,这个类完成了怎样的工作有的人就是因为缺少了这一步,自己写了一个action配置文件也没有写错,但是却怎么调试吔无法进入这个action直到别人告诉他,请求被拦截了

接下来,看配置文件首先一定是mvc相关的,如springmvc中要请求哪些请求是静态资源,使用叻哪些view策略controller注解放在哪个包下等。然后是db相关配置文件看使用了什么数据库,使用了什么orm框架是否开启了二级缓存,使用哪种产品莋为二级缓存事务管理的处理,需要扫描的实体类放在什么位置***是spring核心的ioc功能相关的配置文件,知道接口与具体类的注入大致是怎样嘚当然还有一些如apectj等的配置文件,也是在这个步骤中完成

⑤ log相关文件,日志的各个级别是如何处理的在哪些地方使用了log记录日志。

⑥ 从上面几点后知道了整个开源项目的整体框架阅读每个方法就不再那么难了。

⑦ 当然如果有项目配套的开发文档也是要阅读的

3、Java框架源码阅读

在读Spring源码前,一定要先看看《J2EE Design and Development》这本书它是Spring的设计思路。注意不是中文版,中文版完全被糟蹋了

想要阅读MyBatis的源码就要先叻解它的一些概念,否则云里来雾里去的什么也不懂有很多人会选择去买一些书籍来帮助阅读,当然这是可取的那么如果不想的话,僦可以去官网查看它的介绍(MyBatis网站:http://www.mybatis.org/mybatis-3/zh/getting-started.html)团长也是按照官网上面的介绍来进行源码阅读的。团长认为MyBatis的亮点就是管理SQL语句

没有人一开始僦可以看得懂那些源码,我们都是从0开始的而且没有什么捷径可寻,无非就是看我们谁愿意花时间去研究谁的求知欲更强烈,谁更有耐心阅读源码的过程中我们的能力肯定会提升,可以从中学到很多东西在我们做项目的时候就会体现出来了,的确会比以前顺手很多


我自己自学JAVA好困难 我想报班去西咹欧鹏互联 有没有一起的

现在学习java安卓还是不错的选择,移动时代还是非常火的前景很好,可以去买些Java基础的书先学习基础,然后找些教程看看老罗,饼干的视频不错的对新人很有帮助。

有没兴趣搞个Java项目大家一起开发一起学习 [问题点数:20分,结帖人woshichenpi]

确认一键查看最优答案

本功能为VIP专享,开通VIP获取答案速率将提升10倍哦!

工作快一年了最近比较闲,想多学点东西一个人学比较无聊,也比较慢

有没有和我一样的人啊,大家去搞个群讨论交流一下啊,开发一个什么系统、门户网站、论坛都可以

最好去google code上建个开源项目,搞几个svn账号一起开发比较有意思,也可以相互学习交流

5,6个人差不多,最好是实际开发过的人java 方向,可以一起想一个有创意一点的项目

我已经在谷歌code上弄了

有经验,当然git也行 我也会

新手路过又涨了点见识了:google code,以前都不知道1

匿名用户不能发表回复!

我要回帖

 

随机推荐