深入理解java虚拟机第二版(九)类加载及执行子系统的案例与实战

在Class文件格式与执行引擎这部分中,用户的程序能直接影响的内容并不太多,Class文件以何种格式存储,类型何时加载、如何连接,以及虚拟机如何执行字节码指令等都是由虚拟机直接控制的行为,用户程序无法对其进行改变。能通过程序进行操作的,主要是字节码生成与类加载器这两部分的功能

1. 案例分析

1.1 Tomcat:正统的类加载器架构

一般来说,基于安全考虑,服务器所使用的类库应该与应用程序的类库互相独立。

 

 

 

灰色背景的3个类加载器是JDK默认提供的类加载器

 

1.2 OSGi:灵活的类加载器架构

Java程序社区中流传着这么一个观点:“学习JEE规范,去看JBoss源码;学习类加载器,就去看OSGi源码”。

OSGi [1] (Open Service Gateway Initiative)是OSGi联盟(OSGi Alliance)制定的一个基于Java语言的动态模块化规范。最著名的应用案例就是Eclipse IDE

OSGi中的每个模块(称为Bundle)与普通的Java类库区别并不太大。灵活的类加载器架构。OSGi的Bundle类加载器之间只有规则,没有固定的委派关系。

 

 1.3 字节码生成技术与动态代理的实现

JDK里面的javac命令是字节码生成技术的“老祖宗”

1.4 Retrotranslator:跨越JDK版本

posted @ 2020-04-13 19:32  夜未眠shm  阅读(152)  评论(0编辑  收藏  举报