一.引言 【程序编程相关:快速上手 MySQL --图形化操作详解】
作者:刘学超 【推荐阅读:『JSP学习——全面解析JDBC(6)』】
二.java虚拟机的类装载实现与应用 【扩展信息:『JSP学习——全面解析JDBC(2)』】
java虚拟机(jvm)的类装载就是指将包含在类文件中的字节码装载到jvm中, 并使其成为jvm一部分的过程.jvm的类动态装载技术能够在运行时刻动态地加载或者替换系统的某些功能模块, 而不影响系统其他功能模块的正常运行.本文将分析jvm中的类装载系统,探讨jvm中类装载的原理.实现以及应用.2.1 装载过程简介
所谓装载就是寻找一个类或是一个接口的二进制形式并用该二进制形式来构造代表这个类或是这个接口的class对象的过程,其中类或接口的名称是给定了的.当然名称也可以通过计算得到,但是更常见的是通过搜索源代码经过编译器编译后所得到的二进制形式来构造. 在java中,类装载器把一个类装入java虚拟机中,要经过三个步骤来完成:装载.链接与初始化,其中链接又可以分成校验.准备与解析三步,除了解析外,其它步骤是严格按照顺序完成的,各个步骤的主要工作如下: 装载:查找与导入类或接口的二进制数据; 链接:执行下面的校验.准备与解析步骤,其中解析步骤是可以选择的; 校验:检查导入类或接口的二进制数据的正确性; 准备:给类的静态变量分配并初始化存储空间; 解析:将符号引用转成直接引用; 初始化:激活类的静态变量的初始化java代码与静态java代码块. 至于在类装载与虚拟机启动的过程中的具体细节与可能会抛出的错误,请参看«java虚拟机规范»以及«深入java虚拟机»,它们在网络上面的资源地址是: http://java.sun.com/docs/books/vmspec/2nd-edition/html/preface.doc.html 与 http://www.artima.com/insidejvm/ed2/index.html. 由于本文的讨论重点不在此就不再多叙述.2.2 装载的实现
jvm中类的装载是由classloader与它的子类来实现的,java classloader 是一个重要的java运行时系统组件.它负责在运行时查找与装入类文件的类. 在java中,classloader是一个抽象类,它在包java.lang中,可以这样说,只要了解了在classloader中的一些重要的方法,再结合上面所介绍的jvm中类装载的具体的过程,对动态装载类这项技术就有了一个比较大概的掌握,这些重要的方法包括以下几个: ①loadcass方法 loadclass(string name ,boolean resolve)其中name参数指定了jvm需要的类的名称,该名称以包表示法表示,如java.lang.object;resolve参数告诉方法是否需要解析类,在初始化类之前,应考虑类解析,并不是所有的类都需要解析,如果jvm只需要知道该类是否存在或找出该类的超类,那么就不需要解析.这个方法是classloader 的入口点.... 下一页