java 深度历险 总结笔记

本文详细解析了Java开发中JDK、JRE、JVM之间的关系,阐述了类加载器的作用,解释了Java的动态性表现,并讨论了类加载过程中的预加载与按需加载机制。同时,通过探讨JDK执行优先级,揭示了在机器上安装多个JDK时的实际执行情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、jdk和java 2 sdk是一个意思。

2、所有高级开发工具(eclipse,jbuilder)抛出的错误异常根源都是jdk。

3、jdk,jre,jvm三者关系: jdk安装后jdk安装目录里面就会有jre,此外在program/java目录还会安装一套jre;这两套几乎没有任何区别,虽然有一丝的区别(可以忽略不考虑);如果只安装jre,那么只会在program/java下安装一套。

   jdk>jre>jvm——jdk除了包括jre外,还有自己的javac.exe,jar.exe等可执行命令。jvm只是jre(类似一个pc机)里面的一个成员(动态链接函数库)。因为jdk里面的javac,jar等多个包装文件都是java编写的,它也必须在jre上才可以执行,所以默认它就使用jdk安装目录下的jre。同理很多使用java开发的系统软件也会自己安装一个jre,也就是这个道理。

4、如果机器上装了多个jdk,具体哪个被执行??

java XXX—— 具体哪个被执行,地查找顺序 当前目录-〉父目录-〉注册表

5、类加载器  java.exe命令完成找到jre的功能,而jre目录下/lit/rt.jar完成类的加载功能

   类在加载过程中,预先加载和按需加载:一般基础类(java运行必须的类)都是一次加载,而系统的class则是在使用的时候才加载。类只有在new的时候才会载入,只有声明的时候是不被加载的。

6、java的动态性

#new Class() 是一种隐性的动态表现,因为jvm是按需进行动态加载的,而不是jvm启动时将所有的class都一次加载。

#Class.forName() 和 ClassLoader() 方法 显性动态加载。

7、三个Loader的委派关系

   bootStrapLoader——appClassLoader——extClassLoader

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值