Java作为一门很受欢迎的开发语言,一直以它简单、运用广泛被IT行业所重视着。那么JAVA语言的工作原理是什么呢?对于很多想要学习Java语言的学员来说说,在学习的时候弄清楚Java语言的工作原理是非常的重要的。只有整理清楚了才可以快速的进入到学习Java语言的状态,下面就跟着小编来学习下Java语言的工作原理吧。
1、Java类加载器的分类
Java中的类加载器主要分为以下四类:
(1)根类加载器(BootStrapClassLoader),主要负责加载jre/lib/rt.jar相关的字节码文件的。
(2)扩展类加载器(ExtensionClassLoader),主要负载加载jre/lib/ext/*.jar这些jar包的。该类加载器在JDK1。9的时候更名为:Platform Class Loader,其父类加载器为:null。
(3)应用程序类加载器(ApplicationClassLoader),主要负责加载用户自定义的类以及classpath环境变量所配置的jar包的。该类加载器在JDK1.9的时候更名为:System ClassLoader,其父类加载器为:ExtensionClassLoader。
(4)自定义类加载器(UserClassLoader),负责加载程序员指定的特殊目录下的字节码文件的。大多数情况下,自定义类加载器只需要继承ClassLoader这个抽象类,重写findClass()和loadClass()两个方法即可。
2、Java类加载器的类加载机制
最后,我们再来聊一聊”类加载机制”,在JVM中类加载机制主要有3种:
(1)全盘加载。顾名思义,就是当某一个类加载器加载某个.class文件时,默认也会连同该文件所依赖的.class一起加载(除非显示声明通过某个指定的类加载器加载)。
(2)缓存机制。即所有类加载器已经加载过的.class文件都会被保存到缓存中,下次使用该.class文件时,JVM会优先从缓存中查找,如果没有,才会去加载指定的字节码文件,这也是为什么当字节码文件变化后,需要重启JVM后才能看到修改效果的原因。
(3)双亲委派。大白话解释,儿子(App)要星星,他自己实现不了,就找他老爹(Ext)要,他老爹能实现的话就给他了,实现不了,就找他爷爷(BootStrap)要,说:你孙子要天上的星星。他爷爷如果能实现就给了,如果也实现不了,就会告诉他爹(Ext),让你儿子(App)自己实现吧。这种情况有点极端,属于谁都没有加载,则程序报错,会抛出异常。
(4)总结:类加载器自上而下检查(App-->Ext-->BootStrap),自下而上加载(BootStrap-->Ext-->App)。
3、Java类加载器的概述
类加载器(ClassLoader)是负责加载类的对象的,也就是将.class字节码文件加载到JVM内存中的。那它什么时候才会去加载.class字节码文件呢?答案是:当Java程序第一次使用某个类中的内容,而该类的字节码文件在内存中不存在时,类加载器就会去加载该类的字节码文件。
俗话说”渡人先渡己”,要想成为别人的榜样,帮助别人。首先要做好自己。生活中如此,类加载器也一样。要想加载我们自定义的类,类加载器必须先完成”自加载”的过程。聊到这,不得不提的就是”类加载器的分类”了。
以上就是小编给大家整理的关于“Java编程零基础入门之Java语言的工作原理”内容,希望大家在开始学习java技术的时候可以有用。