理解Java虚拟机体系结构

Posted 尚学堂java培训

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解Java虚拟机体系结构相关的知识,希望对你有一定的参考价值。



1 概述


众所周知,Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么。正是得益于Java虚拟机,它号称的“一次编译,到处运行”才能有所保障。


1.1 Java程序执行流程


Java程序的执行依赖于编译环境和运行环境。源码代码转变成可执行的机器代码,由下面的流程完成:


理解Java虚拟机体系结构(一)


Java技术的核心就是Java虚拟机,因为所有的Java程序都在虚拟机上运行。Java程序的运行需要Java虚拟机、Java API和Java Class文件的配合。Java虚拟机实例负责运行一个Java程序。当启动一个Java程序时,一个虚拟机实例就诞生了。当程序结束,这个虚拟机实例也就消亡。


理解Java虚拟机体系结构(一)


Java的跨平台特性,因为它有针对不同平台的虚拟机。


1.2 Java虚拟机


Java虚拟机的主要任务是装载class文件并且执行其中的字节码。由下图可以看出,Java虚拟机包含一个类装载器(class loader),它可以从程序和API中装载class文件,Java API中只有程序执行时需要的类才会被装载,字节码由执行引擎来执行。


理解Java虚拟机体系结构(一)


当Java虚拟机由主机操作系统上的软件实现时,Java程序通过调用本地方法和主机进行交互。Java方法由Java语言编写,编译成字节码,存储在class文件中。本地方法由C/C++/汇编语言编写,编译成和处理器相关的机器代码,存储在动态链接库中,格式是各个平台专有。所以本地方法是联系Java程序和底层主机操作系统的连接方式。


由于Java虚拟机并不知道某个class文件是如何被创建的,是否被篡改一无所知,所以它实现了一个class文件检测器,确保class文件中定义的类型可以安全地使用。class文件检验器通过四趟独立的扫描来保证程序的健壮性:


  • class文件的结构检查

  • 类型数据的语义检查

  • 字节码验证

  • 符号引用验证


Java虚拟机在执行字节码时还进行其它的一些内置的安全机制的操作,他们作为Java编程语言保证Java程序健壮性的特性,同时也是Java虚拟机的特性:


  • 类型安全的引用转换

  • 结构化的内存访问

  • 自动垃圾收集

  • 数组边界检查

  • 空引用检查


1.3 Java虚拟机数据类型


Java虚拟机通过某些数据类型来执行计算。数据类型可以分为两种:基本类型和引用类型,如下图:



但boolean有点特别,当编译器把Java源码编译为字节码时,它会用int或byte表示boolean。在Java虚拟机中,false是由0表示,而true则由所有非零整数表示。和Java语言一样,Java虚拟机的基本类型的值域在任何地方都是一致的,不管主机平台是什么,一个long在任何虚拟机中总是一个64位二进制补码的有符号整数。


对于returnAddress,这个基本类型被用来实现Java程序中的finally子句,Java程序员不能使用这个类型,它的值指向一条虚拟机指令的操作码。


尚学堂 通告

 1.“西安迪欧软件有限公司”是我们的名称,经营范围:投资、运营、管理,旗下品牌“尚学堂”为自有品牌。                                                                                           

 2.“尚学堂”只有西安和深圳两个直属分校,其他只是加盟分校,无技术支持,一旦出现问题,我们不承担法律责任。



西安尚学堂官网:http://www.029sxt.com 

联系人:宋老师

联系QQ:3168098131

乘车路线:218.251.608.908.34.512.107到科技二路站下车东南角



以上是关于理解Java虚拟机体系结构的主要内容,如果未能解决你的问题,请参考以下文章

理解Java虚拟机体系结构

理解Java虚拟机体系结构

深入理解Java虚拟机04--类结构文件

理解Java虚拟机体系结构

深入理解Java虚拟机(类文件结构)

深入理解java虚拟机之类文件结构