收藏 分享(赏)

2023年Java源码阅读的真实体会.docx

上传人:g****t 文档编号:515685 上传时间:2023-04-08 格式:DOCX 页数:13 大小:12.77KB
下载 相关 举报
2023年Java源码阅读的真实体会.docx_第1页
第1页 / 共13页
2023年Java源码阅读的真实体会.docx_第2页
第2页 / 共13页
2023年Java源码阅读的真实体会.docx_第3页
第3页 / 共13页
2023年Java源码阅读的真实体会.docx_第4页
第4页 / 共13页
2023年Java源码阅读的真实体会.docx_第5页
第5页 / 共13页
2023年Java源码阅读的真实体会.docx_第6页
第6页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、Java源码阅读的真实体会Java源码阅读的真实体会刚刚在论坛不经意间,看到有关源码阅读的帖子。回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种冲动。源码阅读,我觉得最核心有三点:技术根底+强烈的求知欲+耐心。说到技术根底,我打个比方吧,如果你从来没有学过Java,或是任何一门编程语言如C+,一开始去啃Core Java,你是很难从中吸收到营养的,特别是深入Java虚拟机这类书,别人觉得好,未必适合现在的你。虽然Tomcat的源码很漂亮,但我绝不建议你一开始就读它。我文中会专门谈到这个,暂时不展开。强烈的求知欲,我认为是阅读源码的最核心驱动力。我见到绝大多数程序员,对学习的态度,根

2、本上就是这几个层次(很偏激哦):1、只关注工程本身,不懂就baidu一下。2、除了做好工程,还会阅读和工程有关的技术书籍,看wikipedia。3、除了阅读和工程相关的书外,还会阅读IT行业的书,比方学Java时,还会去了解函数语言,如LISP。4、找一些开源工程看看,大量试用第三方框架,还会写写demo。5、阅读根底框架、J2EE标准、Debug效劳器内核。大多数程序都是第1种,到第5种不光需要浓厚的兴趣,还需要勇气:我能读懂吗其实,你能够读懂的。耐心,真的很重要。因为你极少看到阅读源码的指导性文章或书籍,也没有人要求或建议你读。你读的过程中经常会卡住,而一卡主可能就陷进了迷宫。这时,你需要

3、做的,可能是暂时中断一下,再从外围看看它:如API结构、框架的设计图。我就说说如何读Java源码,以及我曾经的阅读感悟。Java源码初接触如果你进行过一年左右的开发,喜欢用eclipse的debug功能。好了,你现在就有阅读源码的技术根底。我建议从JDK源码开始读起,这个直接和eclipse集成,不需要任何配置。可以从JDK的工具包开始,也就是我们学的数据结构和算法Java版,如List接口和ArrayList、LinkedList实现,HashMap和TreeMap等。这些数据结构里也涉及到排序等算法,一举两得。面试时,考官总喜欢问ArrayList和Vector的区别,你花10分钟读读源码

4、,估计一辈子都忘不了。然后是core包,也就是String、StringBuffer等。如果你有一定的Java IO根底,那么不妨读读FileReader等类。我建议大家看看Java In A Nutshell,里面有整个Java IO的架构图。Java IO类库,如果不理解其各接口和继承关系,那么阅读始终是一头雾水。Java IO 包,我认为是对继承和接口运用得最优雅的案例。如果你将来做架构师,你一定会经常和它打交道,如工程中部署和配置相关的核心类开发。读这些源码时,只需要读懂一些核心类即可,如和ArrayList类似的二三十个类,对于每一个类,也不一定要每个方法都读懂。像String有些方

5、法已经到虚拟机层了(native方法),如hashCode方法。当然,如果有兴趣,可以对照看看JRockit的源码,同一套API,两种实现,很有意思的。如果你再想钻的话,不妨看看针对虚拟机的那套代码,如System ClassLoader的原理,它不在JDK包里,JDK是基于它的。JDK的源码Zip包只有10来M,它像是有50来M,Sun公司有下载的,不过很隐秘。我曾经为自己找到、读过它很兴奋了一阵。Java Web开发源码在阅读Tomcat等源码前,一定要有一定的积累。我的切实体会,也可以说是比拟好的阶梯是:1、写过一些Servlet和JSP代码。注意,不是用什么Struts,它是很难接触到

6、Servlet精髓的。用好Struts只是皮毛。2、看过Servlet和JSP核心编程3、看过Sun公司的Servlet标准4、看过 协议的rfc,debug过 的数据包如果有以上根底,我也不建议你开始读Tomcat源码。我建议你在阅读Tomcat源码前,读过Struts源码,Struts源码比WebWork要简单得多。这个框架是可以100%读懂的,至少WebWork我没有100%读懂。我曾经因为读懂了Struts源码,自己写过一个Web框架。当然,在读Struts框架前,最好看过它的MailReader等demo,非常非常不错的。如果你做过一些Struts工程,那么读它时就更得心应手了。在读

7、Struts前,建议看看mvnforum的源码,它局部实现了Struts的功能,虽然这个BBS做得不敢恭维。如果你读过Struts,再开始考虑Tomcat源码阅读吧。不过,我还是不建议直接读它,先读读onJava网站上的系列文章How Tomcat Works吧,它才是Tomcat的最最简易版。它告诉你 ServletRequest如何在容器内部实现的,Tomcat如何通过Socket来接受外面的请求,你的Servlet代码如何被Tomcat容器调用的(回调)。学习JSP,一定要研读容器将JSP编译后的Servlet源码。为什么我总是称呼Tomcat为容器,而不是效劳器这个疑问留给大家吧。如果

8、你一定要读Tomcat,那么就读Jetty吧。至少它是嵌入式,可以直接在eclispe里面设置断点debug。虽然Tomcat也有嵌入式版本。Java数据库源码阅读我建议,先读读Sun的JDBC标准。我想你一定写过JDBC的代码,那么这时候可以开始阅读源码了。如果了解JDBC标准(接口),那么它的实现,JDBC Driver就一定要开始了解,我的建议是,读读mysql的jdbc驱动,因为它开源、设计优雅。在读mysql的JDBC驱动源码时,建议看看mysql的内幕,官方正好有本书,Mysql Internals,我五年前读过一局部。比方你可以知道mysql的JDBC驱动,如何通过socket数

9、据包(connect、query),给这个C+开发的mysql效劳器交互的。通过上面的阅读,你可以知道,你的业务代码、JDBC标准、JDBC驱动、以及数据库,它们是如何一起协作的。如果你了解这些内幕,那么你再学习Hibernate、iBatis等持久化框架时,就会得心应手的。读过JDBC驱动,那么下一步一定要读读数据库了。而正好有一个强大的数据库是用Java开发的,Hsqldb。它是嵌入式数据库,比方用在桌面客户端软件里,如Mail Client。我四年前为此写过一篇小文,就不介绍了。Java通讯及客户端软件我强烈推荐即时通讯软件wildfire和Spark。你可以把wildfire理解成MS

10、N效劳器,Spark理解成MSN客户端。它们是通过XMPP协议通讯的。我曾经在一个工程中,定制过Spark,当然也包括效劳端的一些改动。所以它们的源码我都读过。我之所以推荐它们。是因为:1、XMPP够轻量级,好理解2、学习Socket通讯实现,特别是C/S架构设计3、模块化设计。它们都是基于module的,你既可以了解模块化架构,还可以了解模块化的技术支撑:Java虚拟机的ClassLoader的应用场景。4、Event Driven架构。虽然GUI都是Event驱动的,但Spark的设计尤其优雅这么说吧,读它们的源码,你会为做一名程序员而自豪,因为无论是他们的架构设计还是代码,都太漂亮了。J

11、ava企业级应用当然了,就是Hibernate、Spring这类框架。在读Spring源码前,一定要先看看Rod Johnson写的那边J2EE Design and Development,它是Spring的设计思路。注意,不是中文版,中文版完全被糟蹋了。在读Hibernate源码前,一定要读读Gavin King写的那本Hibernate in Action,同时,应该再读读Martin Fowler写的企业应用架构模式,它专门谈到持久化框架的设计思路。当你觉得这两本书读透了,再去看它们源码吧。而且,在读源码前,你会发现它们用到很多第三方Jar包,二三十个,你最好把那些Jar包先一个个搞明

12、白。说到企业应用,一定会涉及到工作流。我当年读过jBPM的源码,网上有介绍jBPM内核的文章(银狐)。我感觉它的内核也就两千行,不要害怕。我曾经阅读jBPM源码的博客。当然了,读工作流源码,前提是一定要对其理论模型有深入的了解,以及写过一些demo、或做过一些工程。我上面介绍的这些,是我自己读过的,也适合一般人阅读。我也读过一些非Java源码,感觉不错,也推荐给大家:dojo源码 它的架构设计得很优雅,仿Java的import和extends。但实际应用起来一塌糊涂。我们当年基于这个开发了自己的框架,不过我不是主力。Flex源码 Flex 08年底刚刚开源后,我就用它做过一个中型工程,应该说是国内的技术先行者。当时市面没有有深度的书,也没有开源工程。我纯粹是看Flex的Help文档和源码,把工程搞定的。两三年过去了,现在觉得系统设计得蛮优雅的。好了,先介绍到这里。上面说到的这些Java源码,我都是4年前、甚至更早读过的。技术变化这么快,像互联网的高速开展,催生很多高性能、分布式数据库,如hadoop。我一看,发现自己已经落伍了。这几年,想必已经出现了很多优秀的框架,大家不妨分享出来。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用范文 > 心得体会

copyright@ 2008-2023 wnwk.com网站版权所有

经营许可证编号:浙ICP备2024059924号-2