OpenJDK源码研究笔记
OpenJDK源码研究过程中整理的学习笔记。
OpenJDK是GPL许可(GPL-licensed)的Java平台的开源实现。
小雷FansUnion
懂商业的技术合伙人。个人微信:FansUnion
微信订阅号:XiaoLeiFansUnion。
展开
-
OpenJDK源码研究笔记(十六):在Java中使用JavaScript脚本语言
友情提示本文主要参考了51CTO上的一篇文章,代码经过自己的模仿和整理,还算凑合。本文中的代码注释比较多,不再过多解释。更多用法,还是得看JDK的API或者看原文http://developer.51cto.com/art/201007/208812.htm。1.可用的脚本引擎 /** * Java内置只支持JavaScript一种脚本 * 打印Script引擎的一些信息原创 2014-01-07 23:06:53 · 3636 阅读 · 6 评论 -
OpenJDK源码研究笔记(十五):吐槽JDK中的10个富有争议的设计
前14篇文章,分享了JDK中值得学习和借鉴的编码和设计方法。每个硬币都是有两面的。Every coin has two sides。当然,JDK中也有很多值得改进或者说富有争议的设计。本篇,就来详细吐槽下JDK中的10个富有争议的设计。原创 2013-11-09 09:49:29 · 4752 阅读 · 9 评论 -
OpenJDK源码研究笔记(十四):三种经典的设计方法,接口,接口-抽象类-具体实现类,接口-具体实现类
在研究OpenJDK源码过程中,我发现常用的设计方法就是2种:接口,接口-抽象类-具体实现类 。在一些其它开源框架和业务开发中,经常存在着第3种设计,接口-具体实现类。原创 2013-11-08 00:04:43 · 3443 阅读 · 2 评论 -
OpenJDK源码研究笔记(十三):Javac编译过程中的上下文容器(Context)、单例(Singleton)和延迟创建(LazyCreation)3种模式
在阅读Javac源码的过程中,发现一个上下文对象Context。这个对象用来确保一次编译过程中的用到的类都只有一个实例,即实现我们经常提到的“单例模式”。今天,特意对这个上下文容器进行解析,主要是讲解上下文容器、单例模式和延迟创建。通过对OpenJDK和Javac源码的一点点解析,希望自己能够搞懂JDK和Javac的实现。原创 2013-11-06 12:24:21 · 3241 阅读 · 4 评论 -
OpenJDK源码研究笔记(十二):JDBC中的元数据,数据库元数据(DatabaseMetaData),参数元数据(ParameterMetaData),结果集元数据(ResultSetMetaDa
元数据最本质、最抽象的定义为:data about data (关于数据的数据)。它是一种广泛存在的现象,在许多领域有其具体的定义和应用。JDBC中的元数据,有数据库元数据(DatabaseMetaData),参数元数据(ParameterMetaData),结果集元数据(ResultSetMetaData)分别封装了数据库产品名字等数据库信息、查询参数的个数等参数信息、结果集的列数等结果集信息。原创 2013-11-05 12:23:33 · 3712 阅读 · 0 评论 -
OpenJDK源码研究笔记(十一):浅析Javac编译过程中的抽象语法树(IfElse,While,Switch等语句的抽象和封装)
浅析OpenJDK源码编译器Javac的语法树包com.sun.source.tree。抽象语法树,是编译原理中的经典问题,有点难,本文只是随便写写。原创 2013-11-03 08:47:16 · 5110 阅读 · 0 评论 -
OpenJDK源码研究笔记(十):枚举的高级用法,枚举实现接口,竟是别有洞天
在研究OpenJDK,Java编译器javac源码的过程中,发现以下代码。顿时发现枚举类竟然也有如此“高端大气上档次”的用法。内容摘要:沙场点兵(用法源码)、指点江山(代码说明)、别有洞天(受益匪浅)、小试牛刀(使用示例)。原创 2013-11-02 08:47:40 · 4021 阅读 · 9 评论 -
OpenJDK源码研究笔记(九)-可恨却又可亲的的异常(NullPointerException)
对于一个新人来讲,遇到异常经常会压力大,手忙脚乱,心生畏惧。对于一个程序老鸟来说,看到异常的名字,就能够镇定自若,很快搞定问题。没有异常,才是最难解决的问题。原创 2013-10-31 00:08:29 · 3377 阅读 · 0 评论 -
OpenJDK源码研究笔记(八)-详细解析如何读取Java字节码文件(.class)
在上一篇OpenJDK源码研究笔记(七)–Java字节码文件(.class)的结构 中,我们大致了解了Java字节码文件的结构。本篇详细地介绍了如何读取.class文件的大部分细节。原创 2013-10-27 20:36:47 · 5800 阅读 · 10 评论 -
OpenJDK源码研究笔记(七)–Java字节码文件(.class)的结构
最近在看OpenJDK源码的过程中,顺便看了Java编译器(javac)的源码。 为了理解javac的源码,需要先搞懂Java字节码文件(.class)的结构。 于是,我就认真看了下OpenJDK中Java字节码文件的相关源码,结合大学期间对JVM的研究,参考JVM规范第2版(英文原版),特意整理下。原创 2013-10-27 08:29:01 · 4211 阅读 · 0 评论 -
OpenJDK源码研究笔记(六)--观察者模式工具类(Observer和Observable)和应用示例
本文主要讲解OpenJDK观察者模式的2个工具类,java.util.Observer观察者接口,java.util.Observable被观察者基类。然后,给出了一个常见的观察者应用示例。原创 2013-10-26 06:25:15 · 3920 阅读 · 2 评论 -
OpenJDK源码研究笔记(五)-缓存Integer等类型的频繁使用的数据和对象,大幅度提升性能(一道经典的Java笔试题)
本文先给出一个看似很简单实则有深意的Java笔试面试题,引出JDK内部的缓存。JDK内部的缓存,主要是为了提高Java程序的性能。你能答对这道“看似简单,实则有深意”的Java题目?原创 2013-10-20 09:37:49 · 4370 阅读 · 1 评论 -
OpenJDK源码研究笔记(四)-编写和组织可复用的工具类和方法
本篇主要讲解java.util.Arrays这个针对数组的工具类。原创 2013-10-20 09:28:06 · 3512 阅读 · 7 评论 -
OpenJDK源码研究笔记(三)-RandomAccess等标记接口的作用
标识接口是没有任何方法和属性的接口。它仅仅表明它的类属于一个特定的类型,供其他代码来测试允许做一些事情。下面来看一个标记接口RandomAccess。public interface RandomAccessList 实现所使用的标记接口,用来表明其支持快速(通常是固定时间)随机访问。此接口的主要目的是允许一般的算法更改其行为,从而在将其应用到随机或连续访问列表时能提供良好的性能。将操作随机访问列原创 2013-10-17 12:43:59 · 3779 阅读 · 8 评论 -
OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)
Comparable和Comparator是JDK中定义的2个比较接口,很相似,但又有所不同。这2个接口的作用和区别也是Java中的常见经典面试题。下面我们就来详细介绍下这2个接口的定义、作用、区别、模式、应用场景和代码案例。定义public interface Comparable { public int compareTo(T o);}public interface Comparato原创 2013-10-16 15:58:03 · 4158 阅读 · 1 评论 -
OpenJDK源码研究笔记(一)-参数检查&抛出带关键错误提示信息的异常
OpenJDK源码研究笔记系列文章,是我在阅读OpenJDK7源码的过程中的一些体会、收获、看法。把研究过程中的成长和收获一点点地整理出来,是对自己研究学习的一个小结,也有可能给学习Java的一些同学带来一些启发。我打算每篇只讲解一点,这样篇幅较小,读起来没有太大压力。写起来压力也小,抽出10到20分钟就可以写1篇。本篇简要介绍,方法/函数体内的参数检查,遇到不合法的输入参数时,抛出带关键错误提示信息的异常。原创 2013-10-14 18:30:22 · 4841 阅读 · 2 评论