Java 从编码到执行过程
1、将Java文件经 javac【Java编译器】编译为 .class 文件
2、通过 classloader 将 class 文件和 Java 类库加载到JVM中
3、调用字节码解释器或者即时编译器来进行解释或编译
4、编译完之后由执行引擎进行执行
JDK 、RE 和 JVM
JDK : JRE + JAVA Development + Kit
JRE : Java Runtime Environment的简称,包含JVM 和 core lib
JVM :是Java虚拟机,只是用来执行的
双亲委派
1、原理
我们自定义的类需要实例化对象时类加载器会向上查找父类加载器是否包含它,如果不包含则继续查找上一级的父类加载器直至启动类加载器;如果直至启动类加载器还不包含则逐级向下分配实例化对象加载的权限。
2、作用
主要是防止核心jdk的源码被篡改,保证了代码的安全;
另外也为了防止重复加载。
3、类加载器的类别
启动类加载器【BootstrapClassLoader】:加载lib/rt.jar charset.jar等核心类,C++实现
标准扩展类加载器【ExtClassLoader】:加载扩展jar包jre/lib/ext/*.jar或由-DJava.ext.dirs指定
系统类加载器【AppClassLoader】:加载classpath 指定的内容
用户自定义类加载器【CustomClassLoader】:自定义ClassLoader