2023年11月28日发(作者:)

如何在Eclipse下查看JDK源代码以及java源代码阅读⽅法

(转载)

不会看JDK源代码,相当于没学过Java。

⽹上不容易找到⼀篇帮助我解决了如何在Eclipse下查看JDK源代码 的⽂章。

核⼼提⽰:在Eclipse中查看JDK类库的源代码 设置: 1. window- Preferences - Java - Installed JRES 2.此时Installed JRES右边是

列表窗格,列出了系统中的 JRE 环境,选择你的JRE,然后点边上的 会出现⼀个窗⼝(Edit JRE) 3.选中⽂件的这⼀项

Eclipse中查看JDK类库的源代码

设置:

1. “window”-> "Preferences" -> "" -> "Installed JRES"

2.此时"Installed JRES"右边是列表窗格,列出了系统中的 JRE 环境,选择你的JRE,然后点边上的 "" 会出现⼀个窗⼝(Edit JRE)

3.选中⽂件的这⼀项:“c:program filesjavajre_1.5.0_”

左边的“+” 号展开它,

4.展开后,可以看到“Source Attachment:(none)”,点这⼀项,点右边的按钮“”, 选择你的JDK⽬录下的 “”⽂件

5.⼀路点"ok",结束。

是关于运⾏环境的类库,主要是swing的包

是关于⼀些⼯具的类库

包含了jdk的基础类库,也就是你在doc⾥⾯看到的所有的类的class⽂件

使⽤:

可以在 Java 源代码编辑器或代码⽚段编辑窗中选择类型、⽅法或字段的名称,然后对元素的定义打开编辑器。

Java 编辑器中,选择类型、⽅法或字段的名称。您也可以仅仅在名称中单击⼀次。

执⾏下列其中⼀项操作:

1.从菜单栏中,选择浏览 > 打开声明

2.从编辑器的弹出菜单中,选择打开声明

3. F3

⽂章分类:

1,你把⿏标放在⼀个jkd的类上按下F3,如果这时迁移到⼀个class⽂件拿去的话

2class⽂件画⾯会有⼀个关联源代码按钮,点击这个按钮,然后从系统⽂件选择jdk下的⽂件

这样就ok了,以后你就可以直接看到源码了。

转载⾃:

刚才在论坛不经意间,看到有关源码阅读的。回想⾃⼰前⼏年,阅读源码那种兴奋和成就感(),不禁⼜有⼀种激动。

源码阅读,我觉得最核⼼有三点:技术基础+强烈的求知欲+耐⼼。

说到技术基础,我打个⽐⽅吧,如果你从来没有学过Java,或是任何⼀门编程语⾔如C++,⼀开始去啃《Core Java》,你是很难从中吸收

到营养的,特别是《深⼊Java虚拟机》这类书,别⼈觉得好,未必适合现在的你。

虽然Tomcat的源码很漂亮,但我绝不建议你⼀开始就读它。我⽂中会专门谈到这个,暂时不展开。

强烈的求知欲,我认为是阅读源码的最核⼼驱动⼒。我见到绝⼤多数程序员,对学习的态度,基本上就是这⼏个层次(很偏激哦)

1、只关注项⽬本⾝,不懂就baidu⼀下。

2、除了做好项⽬,还会阅读和项⽬有关的技术书籍,看wikipedia

3、除了阅读和项⽬相关的书外,还会阅读IT⾏业的书,⽐如学Java时,还会去了解函数语⾔,如LISP

4、找⼀些开源项⽬看看,⼤量试⽤第三⽅框架,还会写写demo

5、阅读基础框架、J2EE规范、Debug服务器内核。

⼤多数程序都是第1种,到第5种不光需要浓厚的兴趣,还需要勇⽓:我能读懂吗?其实,你能够读懂的。

耐⼼,真的很重要。因为你极少看到阅读源码的指导性⽂章或书籍,也没有⼈要求或建议你读。你读的过程中经常会卡住,⽽⼀卡主可能就

陷进了迷宫。这时,你需要做的,可能是暂时中断⼀下,再从外围看看它:如API结构、框架的设计图。

我就说说如何读Java源码,以及我曾经的阅读感悟。

Java源码初接触

如果你进⾏过⼀年左右的开发,喜欢⽤eclipsedebug功能。好了,你现在就有阅读源码的技术基础。

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

可以从JDK的⼯具包开始,也就是我们学的《数据结构和算法》Java版,如List接⼝和ArrayListLinkedList实现,HashMapTreeMap

等。这些数据结构⾥也涉及到排序等算法,⼀举两得。

⾯试时,考官总喜欢问ArrayListVector的区别,你花10分钟读读源码,估计⼀辈⼦都忘不了。

然后是core包,也就是StringStringBuffer等。

如果你有⼀定的Java IO基础,那么不妨读读FileReader等类。我建议⼤家看看《Java In A Nutshell》,⾥⾯有整个Java IO的架构图。Java

IO类库,如果不理解其各接⼝和继承关系,则阅读始终是⼀头雾⽔。

Java IO 包,我认为是对继承和接⼝运⽤得最优雅的案例。如果你将来做架构师,你⼀定会经常和它打交道,如项⽬中部署和配置相关的核

⼼类开发。

读这些源码时,只需要读懂⼀些核⼼类即可,如和ArrayList类似的⼆三⼗个类,对于每⼀个类,也不⼀定要每个⽅法都读懂。像String有些

⽅法已经到虚拟机层了(native⽅法),如hashCode⽅法。

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

如果你再想钻的话,不妨看看针对虚拟机的那套代码,如System ClassLoader的原理,它不在JDK包⾥,JDK是基于它的。JDK的源码Zip

包只有10M,它像是有50MSun公司有下载的,不过很隐秘。我曾经为⾃⼰找到、读过它很兴奋了⼀阵。

Java Web开发源码

在阅读Tomcat等源码前,⼀定要有⼀定的积累。我的切实体会,也可以说是⽐较好的阶梯是:

1、写过⼀些ServletJSP代码。注意,不是⽤什么Struts,它是很难接触到Servlet精髓的。⽤好Struts只是⽪⽑。

2、看过《ServletJSP核⼼编程》

3、看过Sun公司的Servlet规范

4、看过http协议的rfcdebughttp的数据包

如果有以上基础,我也不建议你开始读Tomcat源码。我建议你在阅读Tomcat源码前,读过Struts源码,Struts源码⽐WebWork要简单得多。

这个框架是可以100%读懂的,⾄少WebWork我没有100%读懂。我曾经因为读懂了Struts源码,⾃⼰写过⼀个Web框架。

当然,在读Struts框架前,最好看过它的MailReaderdemo,⾮常⾮常不错的。

如果你做过⼀些Struts项⽬,那么读它时就更得⼼应⼿了。

在读Struts前,建议看看mvnforum的源码,它部分实现了Struts的功能,虽然这个BBS做得不敢恭维。

如果你读过Struts,再开始考虑Tomcat源码阅读吧。

不过,我还是不建议直接读它,先读读onJava⽹站上的系列⽂章《How Tomcat Works》吧,它才是Tomcat的最最简易版。它告诉你

HttpServletRequest如何在容器内部实现的,Tomcat如何通过Socket来接受外⾯的请求,你的Servlet代码如何被Tomcat容器调⽤的(回调)

学习JSP,⼀定要研读容器将JSP编译后的Servlet源码。

为什么我总是称呼Tomcat为容器,⽽不是服务器?这个疑问留给⼤家吧。

如果你⼀定要读Tomcat,那么就读Jetty吧。⾄少它是嵌⼊式,可以直接在eclispe⾥⾯设置断点debug。虽然Tomcat也有嵌⼊式版本。

Java数据库源码阅读

我建议,先读读SunJDBC规范。

我想你⼀定写过JDBC的代码,那么这时候可以开始阅读源码了。

如果了解JDBC规范(接⼝),那么它的实现,JDBC Driver就⼀定要开始了解,我的建议是,读读mysqljdbc驱动,因为它开源、设计优

雅。在读mysqlJDBC驱动源码时,建议看看mysql的内幕,官⽅正好有本书,《Mysql Internals》,我五年前读过⼀部分。⽐如你可以知

mysqlJDBC驱动,如何通过socket数据包(connectquery),给这个C++开发的mysql服务器交互的。

通过上⾯的阅读,你可以知道,你的业务代码、JDBC规范、JDBC驱动、以及数据库,它们是如何⼀起协作的。

如果你了解这些内幕,那么你再学习HibernateiBatis等持久化框架时,就会得⼼应⼿的。

读过JDBC驱动,那么下⼀步⼀定要读读数据库了。⽽正好有⼀个强⼤的数据库是⽤Java开发的,Hsqldb。它是嵌⼊式数据库,⽐如⽤在桌

⾯客户端软件⾥,如Mail Client

我四年前为此写过,就不介绍了。

Java通讯及客户端软件

我强烈推荐即时通讯软件wildfireSpark。你可以把wildfire理解成MSN服务器,Spark理解成MSN客户端。它们是通过XMPP协议通讯的。

我曾经在⼀个项⽬中,定制过Spark,当然也包括服务端的⼀些改动。所以它们的源码我都读过。

我之所以推荐它们。是因为:

1XMPP够轻量级,好理解

2、学习Socket通讯实现,特别是C/S架构设计

3、模块化设计。它们都是基于module的,你既可以了解模块化架构,还可以了解模块化的技术⽀撑:Java虚拟机的ClassLoader的应⽤场

景。

4Event Driven架构。虽然GUI都是Event驱动的,但Spark的设计尤其优雅

这么说吧,读它们的源码,你会为做⼀名程序员⽽⾃豪,因为⽆论是他们的架构设计还是代码,都太漂亮了。

Java企业级应⽤

当然了,就是HibernateSpring这类框架。

在读Spring源码前,⼀定要先看看Rod Johnson写的那边《J2EE Design and Development》,它是Spring的设计思路。注意,不是中⽂

版,中⽂版完全被糟蹋了。

在读Hibernate源码前,⼀定要读读Gavin King写的那本《Hibernate in Action》,同时,应该再读读Martin Fowler写的《企业应⽤架构模

式》,它专门谈到持久化框架的设计思路。当你觉得这两本书读透了,再去看它们源码吧。

⽽且,在读源码前,你会发现它们⽤到很多第三⽅Jar包,⼆三⼗个,你最好把那些Jar包先⼀个个搞明⽩。

说到企业应⽤,⼀定会涉及到⼯作流。我当年读过jBPM的源码,⽹上有介绍jBPM内核的⽂章(银狐)。我感觉它的内核也就两千⾏,不要害

怕。我曾经。

当然了,读⼯作流源码,前提是⼀定要对其理论模型有深⼊的了解,以及写过⼀些demo、或做过⼀些项⽬。

我上⾯介绍的这些,是我⾃⼰读过的,也适合⼀般⼈阅读。

我也读过⼀些⾮Java源码,感觉不错,也推荐给⼤家:

dojo源码 它的架构设计得很优雅,仿Javaimportextends。但实际应⽤起来⼀塌糊涂。我们当年基于这个开发了⾃⼰的框架,不过我不

是主⼒。

Flex源码 Flex 08年底刚刚开源后,我就⽤它做过⼀个中型项⽬,应该说是国内的技术先⾏者。当时市⾯没有有深度的书,也没有开源项

⽬。我纯粹是看FlexHelp⽂档和源码,把项⽬搞定的。两三年过去了,现在觉得系统设计得蛮优雅的。

好了,先介绍到这⾥。

上⾯说到的这些Java源码,我都是4年前、甚⾄更早读过的。技术变化这么快,像互联⽹的⾼速发展,催⽣很多⾼性能、分布式数据库,如

hadoop。我⼀看,发现⾃⼰已经落伍了。

这⼏年,想必已经出现了很多优秀的框架,⼤家不妨分享出来。

题后记

这三年,⼀直在创业,主要是技术应⽤,偏业务,源码阅读不多,但很欣赏那些专注于技术的狂热者。

现暂别创业,进⼊⼀家电⼦商务公司,负责其B2C⽹站的改版和运营。

(⼴告)如果你对技术、对⾼负载的⼤型B2C开发也情有独钟,不妨看看。