【手把手带你撸jdk源码一】看源码的正确打开方式

博客主页:进入博客

作者简介:从业2.5年的全栈工程师,分享关于Java、数据库、设计模式等后端内容,偶尔分享前端知识

本文介绍了为什么要阅读jdk源码,jdk文件夹中目录结构及其作用,Java程序能够运行的原理

目录

一、为什么要阅读源码?

二、jdk目录结构和作用

1.bin文件夹:jdk中包含各种Java开发工具的二进制文件所在的文件夹。重要工具有:

2.lib文件夹:这个文件夹包含了jdk所需的库文件,一些重要的jar包括:

3.jre文件夹:JRE(Java运行时环境)包含Java运行时环境 ,用于执行Java程序。JRE包括一些子文件夹和文件,如:

4.include文件夹:这个文件夹包含了用于本地开发的头文件,用于在本地编写和编译与Java Native Interface(JNI)相关的代码,以便在Java和本地代码之间进行交互。

5.src.zip文件:这个文件包含了Java标准库的源代码,可以用于查看标准库的实现细节。

三、Java程序是如何跑起来的?

四、阅读jdk源码做法


一、为什么要阅读源码?

    当你做项目时,你要使用列表,使用ArrayList还是LinkedList?当要求线程安全时,你又是否了解线程安全的集合类?多线程中,面对如此多的队列类型,不了解它们的前提下,选择哪一个呢?作为一个Javaer,不熟悉自己手中的工具如何得行?

   当你面试时,对面穿着格子衬衫圆顶的25岁小伙问你,HashMap的底层原理是什么?你多少有点尴尬吧?

   通过学习Jdk源码,我们不单单能深入了解Java的各种工具类,还能学习到源码中蕴含的各种设计模式,学习jdk的代码设计。

   好,决定要学了,我猜现在马上便在搜索引擎输入“jdk源码下载”,咔咔一顿安装网上五花八门的教材去下载源码,导入到你的eclipse或者idea里面去,咔咔开始看起了源码。这样的做法是能够顺利搭出来一个阅读环境,但后面可能会面临一些其他麻烦。

  既然是看的jdk——Java开发者工具源码,我们先了解jdk文件夹的结构、作用以及其工作原理。

二、jdk目录结构和作用

jdk1.8的目录
jdk1.8的文件夹

1.bin文件夹:jdk中包含各种Java开发工具的二进制文件所在的文件夹。重要工具有:

  • javac:Java编译器,用于将Java源代码编译成字节码文件。
  • java  :Java运行时环境,执行已编译的Java字节码文件
  • javap:Java反编译工具,用于查看字节码文件的内容
  • javadoc:用于生成Java文档的工具

2.lib文件夹:这个文件夹包含了jdk所需的库文件,一些重要的jar包括:

  • rt.jar:Java标准库的运行时部分,包含Java核心类和API
  • tools.jar:包含一些开发工具类,例如javac编译器的实现,也就说明javac依赖于tools.jar

3.jre文件夹:JRE(Java运行时环境)包含Java运行时环境 ,用于执行Java程序。JRE包括一些子文件夹和文件,如:

  • lib文件夹:包含JRE运行时所需的库文件,包括各种支持的类和JAR包
  • bin文件夹:包含了JRE运行时使用的可执行文件,如java命令

   注意:lib文件夹中的endorsed文件夹,这个目录允许我们一些特殊的类库放到其中供项目使用,并且项目运行时会优先使用这些jar包。此文件夹在Java9已被弃用。

4.include文件夹:这个文件夹包含了用于本地开发的头文件,用于在本地编写和编译与Java Native Interface(JNI)相关的代码,以便在Java和本地代码之间进行交互。

5.src.zip文件:这个文件包含了Java标准库的源代码,可以用于查看标准库的实现细节。

三、Java程序是如何跑起来的?

  众所周知,Java是跨平台的语言,之所以跨平台还是依靠其运行机制。Java源码需要跑起来,先通过编译器编译成字节码文件,该字节码文件在jvm(Java虚拟机)执行。JVM需要JRE来运行程序,后者包括前者。

  java文件 ——(编译器)——>class文件——(jre,jvm)——程序启动 

其中jre中含有rt.jar等jar包,而rt.jar包其实就是jdk源码编译打包而来。程序依赖于jre环境,jre中jar包是Java源码编译而来。

四、阅读jdk源码做法

  1. 找到我们本地的jdk安装路径,找到其中src包并解压
  2. IDE中新建项目,将解压出来的文件复制到项目中(此事便可阅读并修改源码)
  3. 编译上述项目,并将编译后文件复制到endorsed文件夹中(覆盖jre中相同java源文件编译后文件,在该jre运行的程序优先选择此jar包)
  4. IDE中Debug Configurations配置source为上述项目,打断点会关联java源文件,如图所示
Debug Configurations
eclipse中Debug Configurations配置

    好的,现在我们就可以在IDE中阅读jdk源码,并且让编译后的jar在系统中的jre中生效并被优先选择,经过配置调试程序也会走源代码中的.java文件(而不是.class文件)。

   但请注意,开发项目时请删除endorsed文件夹内jar包,避免污染开发环境。

   本文仅介绍了我们为什么要阅读jdk源码、jdk目录结构和浅谈了程序运行的原理。

   后续作者将详细介绍jdk阅读环境的搭建,重要工具类的介绍。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值