java的相关原理理解

http://tech.ddvip.com   2008年06月12日    社区交流

本文详细介绍java的相关原理理解

  这3个加载器分别对应着编译器去寻找类文件的优先级别和不同的路径:BootClassLoader对应jre/classes路径,是编译器最优先寻找class的地方 ExtClassLoader对应jre/lib/ext路径,是编译器次优先寻找class的地方 AppClassLoader对应当前路径,所以也是编译器默认找class的地方

  其实大家可以自己写个程序简单的测试,对任何class,例如A, 调用new  A().getClass().getClassLoader().toString()  打印出来就可以看到,把class文件放在不同的路径下再次执行,就会看到区别。特别注意的是如果打印出来是null就表示到了最高级 BootClassLoader,  因为它是C++编写的,不存在Java对应的类加载器的名字。

  寻找的顺序是一种向上迂回的思想,即如果本级别找不到,就只能去本级别之上的找,不会向下寻找。不过似乎从Jdk1.4到Jdk1.6这一特点又有改变,没有找到详细资料。所以就不举例子了。告诉大家设计这种体系的是Sun公司曾经的技术核心宫力先生,一个纯种华人哦!^_^

  这样希望大家不至于迷惑为什么总报错找不到类文件,不管是自己写的还是导入的第三方的jar文件(J2ee中经常需要导入的)。

  3. 关于jdk和jre?? 大家肯定在安装JDK的时候会有选择是否安装单独的jre,一般都会一起安装,我也建议大家这样做。因为这样更能帮助大家弄清楚它们的区别:

  Jre  是java  runtime  environment,  是java程序的运行环境。既然是运行,当然要包含jvm,也就是大家熟悉的虚拟机啦,  还有所有java类库的class文件,都在lib目录下打包成了jar。大家可以自己验证。至于在windows上的虚拟机是哪个文件呢?  学过MFC的都知道什么是dll文件吧,那么大家看看jre/bin/client里面是不是有一个jvm.dll呢?那就是虚拟机。

责编:豆豆技术应用

正在加载评论...