java体系结构介绍

本系列文章系《深入java虚拟机》的读书笔记。希望高手能帮助小弟进步。

java技术的核心就是java虚拟机。所有的java程序都运行其之上。
java是为网络而设计的,其体系结构可以保证安全,健壮,且平台无关的程序通过网络传播,在不同的计算机和设备上运行。


java体系结构包含四个独立但相关的技术:
1.java语言
2.class文件
3.java api
4.java虚拟机

其中,核心就是java虚拟机,它支持面向网络的体系结构的三大支柱:
1.平台无关
2.安全性
3.网络移动性

java虚拟机是个处理java程序的虚拟计算机。换句话说,java虚拟机可以用软件或硬件的方式来实现处理java字节码。

java虚拟机的基本结构:
1.classloader
2.执行引擎
其中classloader来装载class文件,而执行引擎则来处理java字节码并转换称机器语言来执行。

执行引擎的不同实现方式:
1.一次性解释字节码
2.第一次执行的后的本地代码转换之后的机器码被缓存到内存。
3.前2者的综合,只缓存频繁使用的代码

当虚拟机处理系统相关特性的东东时候,会使用JNI接口来调用本地库。dll,so等等

classloader的体系结构
1.bootstrap classloader
2.用户自定义 classloader

bootstrap 跟系统结合更紧密一些,一般可能不是java实现。默认从本地磁盘装载class,包括java api的class
用户自定义classloader,用户可以随便自定义,用java来实现class的装载,例如从网络下载class并且装载。
用户自定义classloader的好处就是可以在运行期装载class,不需要在编译器把所有的类静态加载,增强了类加载的可扩展性。
虚拟机会把装载第一个类的classloader装载被该类引用的类。默认只能看到同一个classloader里的类。

java class文件,平台无关的主要原因就是所有平台的虚拟机都是用统一格式的class文件

java api,内部设计和平台无关,通过JNI调用本地方法。增强了java安全模型。当java api试图访问潜在危险之前,都会询问安全管理器。

java程序设计语言,这里不是主要关注点,略。

java体系结构追求四平八稳的结果,必然带来一些代价。比如gc的不确定性,会导致系统莫名其妙卡住。平台无关导致API不能有个性化东东,等等。。。

总之,java仅仅是个平台和工具,如果你选择了它,请你尽量了解它,所以学习以下java虚拟机的相关东东。




你可能感兴趣的:(java,虚拟机,jni,读书)