一言不合就开始搞JDK源码
Java是一门面向对象的编程语言,那什么是面向对象呢,下面将是历史上最通俗易懂的解释了,请看下图:
哈哈,解释的够清楚的了吧。闪。
从源码学编程的好处
学Java编程时,最好同时看一些Java的源码,即JDK的底层源码,尽量做到知其然知其所以然,这样一步一步打牢基础了,后面学习一些Java的高级功能时会很得心应手,遇到问题了也知道哪里出了问题,这就是大佬和小白的区别,声明一下我还是小白一枚,正在往大佬的路上发展,目前看来遥遥无期,对自己说声,继续加油你个帅小伙子。
获得JDK源码
想看JDK的底层源码,首先得下载到源码,不过JDK源码在安装JDK时就下载好了(JDK自带的),在JDK的根目录里,文件名为“src.zip” ,如下图。
在IDEA中创建JDK源码项目
为什么把JDK源码配置到IDEA中呢,因为方便自己去阅读、注释、调试等。同时压缩格式的源码文件在JDK目录中是只读格式,不能修改,也不能注释,这怎么能忍。那就单独创建一个项目,把源码解压进去,进行研究。
(1)在IDEA中创建一个Java项目,我给项目命名为“OracleJDK1.8Src”,可以根据自己习惯命名。
(2)创建保存JDK源码的文件夹,并把源码解压进去。此处一定要切记,要单独新建一个和Java项目src目录同级的目录,因为IDEA默认会编译src目录中的所有源码,如果你把JDK源码直接解压到src目录中,编译时你的电脑有可能被卡死哦。
创建一个存放JDK源码的目录“JDKSrc”,如下图。
然后把JDK根目录的源码压缩文件“src.zip”解压到此目录即可。
解压后如下图。
至此源码项目已经创建好了,但要想让IDEA指向解压出来的源码位置,必须修改IDEA对源码的指向。
(3)修改IDEA对源码的指向
先进入到 File->Project Structure->SDKs->Sourcepath,然后先把指向“src.zip”源码的那个路径删掉,删除方法为,选中那个路径,然后点左下角的减号即可。然后再点左下角的加号新建一个源码路径,路径选择刚刚创建好的那个Java项目,注意路径指到“JDKSrc”目录即可。结果如下图。
现在就可以大胆放心的研究JDK源码了,可以修改,也可以加中文注释,总之一切由你决定,可以对它为所欲为了。
(4)在IDEA中再修改一个进行debug时的小配置。
先进入到 File->Settings->Build, Execution, Deployment->Debugger->Stepping
把Do not step into the classes 选项前的对勾去掉,使其处于未选中状态,如果不把这个选项关掉,当你debug代码时,就不能进入到其它的类内部,去掉勾选就可以了。结果如下图。
应该阅读哪些JDK源码包
JDK源码包里的内容并不是都要读完,如果你想读完我也不拦你,而是阅读其中的重要的部分就行了。重点阅读:
(1)java.lang 此包包含Java基础语法,如各种包装类、Object基类等。
(2)java.util 此包包含Java的各种工具类,如集合类。同时这个包里有个很牛B的包,JUC(java.util.concurrent的缩写)并发包,如果你还不知道此包,那请你再好好学学基础。
(3)java.nio 此包包含非阻塞IO代码。Netty框架就是基于它做的。
当然其它的包也可以读读,如java.time,java.io等。
好了,终于写完了,睡觉。
一言不合就开始搞JDK源码的更多相关文章
- 重新编译jdk源码,启用debug信息
我有一个不知道是好还是不好的习惯,搞不懂的一些玩意儿,喜欢调试然后单步执行看这玩意儿到底是怎么运行的. 今天看到正则表达式的时候,appendReplacement()这个方法怎么也看不明白它是怎么工 ...
- jdk源码调试功能
JDK源码重新编译——支持eclipse调试JDK源码--转载 最近在研究jdk源码,发现debug时无法查看源码里的变量值. 因为sun提供的jdk并不能查看运行中的局部变量,需要重新编译一下rt. ...
- JDK源码重新编译——支持eclipse调试JDK源码--转载
最近在研究jdk源码,发现debug时无法查看源码里的变量值. 因为sun提供的jdk并不能查看运行中的局部变量,需要重新编译一下rt.jar. 下面这六步是编译jdk的具体步骤: Step 1: ...
- 如何阅读jdk源码?
简介 这篇文章主要讲述jdk本身的源码该如何阅读,关于各种框架的源码阅读我们后面再一起探讨. 笔者认为阅读源码主要包括下面几个步骤. 设定目标 凡事皆有目的,阅读源码也是一样. 从大的方面来说,我们阅 ...
- 【并发编程】【JDK源码】J.U.C--AQS (AbstractQueuedSynchronizer)(1/2)
J.U.C实现基础 AQS.非阻塞数据结构和原子变量类(java.util.concurrent.atomic包中的类),concurrent包中的基础类都是使用这种模式来实现的.而concurren ...
- 随手用python写一个下载jdk源码爬虫
最近在研读jdk源码,网上找了下资源,发现都不完整. 后来新发现了一个有完整源码的地方,主要包括了java,c,c++的东西,装逼需要,就想拿来玩玩.但是,找了好多种下载打开的方式,发现都不对.于是, ...
- 如何阅读JDK源码
JDK源码阅读笔记: https://github.com/kangjianwei/LearningJDK 如何阅读源码,是每个程序员需要面临的一项挑战. 为什么需要阅读源码?从实用性的角度来看,主要 ...
- 关于JDK源码:我想聊聊如何更高效地阅读
简介 大家好,我是彤哥,今天我想和大家再聊聊JDK源码的几个问题: 为什么要看JDK源码 JDK源码的阅读顺序 JDK源码的阅读方法 为什么要看JDK源码 一,JDK源码是其它所有源码的基础,看懂了J ...
- 使用NetBeans、Eclipse阅读JDK源码
下面说明在Netbeans.Eclipse环境下怎么查看JDK源码: Netbeans: 在"工具->java平台->源"里添加下路径,如果你安装jdk的时候选择安装了 ...
随机推荐
- 第15.33节 PyQt(Python+Qt)入门学习:containers容器类部件QTabWidget选项窗部件简介
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有 ...
- PyQt学习随笔:Model/View开发时在view数据项中设置不同角色数据的方法
在往Model中通过QStandardItem等类插入数据项时,除了实际插入的存储数据,还可以设置不同角色(请参考<PyQt学习随笔:Model/View中诸如DisplayRole的数据角色及 ...
- PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象的toolButtonStyle属性
tooButtonStyle属性保存主窗口工具栏按钮的样式设置,用来表示工具栏按钮的文字和图标怎么显示. 该属性的可设置值类型为枚举类型Qt.ToolButtonStyle,它包含如下值: 该属性的缺 ...
- 关于我 About Me
重庆某大学计算机专业大三学渣 CTF酱油选手 web安全菜鸡 SRC低危小子 精通多门语言 hello world 输出 和 windows linux单词拼写 扣扣:MjU4NTYxNDQ2NA== ...
- APP非功能测试
1.移动APP启动时间测试 问题:如何获取启动时间? 答:通过adb的logcat来获取Activity启动时间.用户体验时间=Activity启动时间+启动中异步UI绘制的时间. 启动时间的测试主要 ...
- jQuery插件的2种类型
1.封装方法插件 封装方法插件在本质上来说,是一个对象级别的插件,这类插件首先通过jQuery选择器获取对象,并为对象添加方法,然后,将方法进行打包,封闭成一个插件,这种类型的插件编写简单,极易调用 ...
- Panda交易所获悉,五地股权市场获批参与「区块链建设试点」
Panda交易所获悉,北京市地方金融监督管理局官网于7月21日发布信息显示,"证监会发布<关于原则同意北京.上海.江苏.浙江.深圳等5家区域性股权市场开展区块链建设工作的函>,原 ...
- 【题解】「P6832」[Cnoi2020]子弦
[题解]「P6832」[Cnoi2020]子弦第一次写月赛题解( 首先第一眼看到这题,怎么感觉要用 \(\texttt{SAM}\) 什么高科技的?结果一仔细读题,简单模拟即可. 我们不难想出,出现最 ...
- Trie 练习记录
蒟蒻以前写的逊爆讲解 Trie CF665E Beautiful Subarrays 代码 把之前每个前缀和放进 trie 树里,然后 trie 树上查询即可. CF37C Old Berland L ...
- 算法——n皇后问题
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案. 每一种解法包含一个明确的 n 皇后问题的棋 ...