前序
前几天,一个人经常在QQ群里问一些java热更新的知识。后来他实现了热更新,但是还是遇到各种问题。我给他做了解答,并看了下他写的类加载器,他的实现大概是这样子的:
(问我此问题的网友,如果你看到这篇文章,请不要生气。你遇到的问题可能以后别人也会遇到,我拿出来做例子说明,希望你不要怪我哈^_^)
他实现的很简单,这个类加载器确实可以实现热更新java类,但是这么写的类加载器是完全不符合类加载器机制,逻辑思路也是有问题的。他遇到的问题是,创建类加载器对象时它使用了A类的url做参数,而A类引用了B类,A类是需要热更新的,B类不需要,当他用此类加载器实例加载A类时发生了报错。(这里我不作解答了,我相信看完我对于这个知识点的介绍,都会知道其中的原因。)
看了该网友对类加载器的实现,我觉着他很可能没有搞清楚一些类加载器的道理和机制,因此想起了写一些关于类加载器的文章,来详细的介绍下类加载器。以下是关于此系列文章的目录:
1、系统类加载---介绍JDK的自带的类加载器,以及相应的机制,最后按照JDK建议我们的方式实现自己的类加载器。
2、Tomcat类加载器---以tomcat6的类加载器作为例子,详细介绍类加载器。
3、热更新类加载器---介绍热更新的实现例子。