Java虚拟机到底是什么
时间:2023-07-15 03:12:01 | 来源:网站运营
时间:2023-07-15 03:12:01 来源:网站运营
Java虚拟机到底是什么:
Java虚拟机到底是什么 JVM,Java Virtual Machine,中文就是Java虚拟机了, 和名字一样就是个虚拟机器,来模拟通用的计算机,有着一套虚拟的完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。 JVM是一种规定好的标准规范, 定义了.class文件在其内部运行的相关标准和规范。一般来讲,所有的JVM都是基于栈结构的运行方式。那么不符合这种要求的,不算是JVM, 如Android中所使用的Dalvik 虚拟机就不能称作是JAVA 虚拟机, 因为它是基于寄存器(最新的Android系统据说已经放弃了Dalvik VM, 而是使用ART)。
JVM相关实现的产品有很多, 通常最有名最常用的就是现在Oracle公司所有的HotSpot 虚拟机。
虚拟机体系结构Java虚拟机的体系结构如下, 包括在规范中描述的主要子系统和内存区。
本地方法接口 当Java虚拟机是由主机操作系统上的软件实现的时候, Java程序通过调用本地方法( native method)和主机交互。 Java中有两种方法: Java方法和本地方法。Java方法是由Java话言编写,编译成字节码,存储在class文件中的。本地方法是由其他语言(比如c, c++,或者汇编语言) 编写的, 编译成和处理器相关的机器代码 。本地方法保存在动态连接库中, 格式是各个平合专有的。Java方法是与平台无关的,但是本地方法却不是。运行中的Java程序调用本地方法时,虚拟机包含这个本地方法的动态库. 并调用这个方法。 在图1-4中可以看到, 本地方法是联系Java程序和底层主机操作系统的進接方法
通过本地方法, Java程序可以直接访同底层操作系统的资源。如果你这样用,你的程序就变成了平台相关的, 因为包含本地方法的动态库是平台相关的。除此之外, 使用本地方法还可能把程序变得和特定的Java平台实现相关。一个本地方法接口——Java本地接口 ( Java Native lnterface, JNI)——使得本地方法可以在特定主机系统的任何一个Java平台实现上运行。然而Java平合供应商并不一定必须支持JNI。除了lNl之外, 他们还可以提供自己的本地方法控口。
Java给人们提供了选择的机会。 如果希望使用特定主机上的资源, 它们又无法从Java API访问, 那么可以写一个平台相关的Java程序来调用本地方法。 如果希望保证程序的平台无关性, 那么只能通过Java API访问问底层系统资源。
类加载器的体系结构 每个Java虚拟机都有一个类装载器子系统,它根据给定的全限定名来装入类型(类或接口)。类装载器子系统包含多个类加载器,类加载器的体系结的是Java虚拟机在安全性和网络移动性上发挥重要作用的。Java虚拟机拥有灵活的类装载器体系结构, 从而使Java应用程序得以用自定义的方式来实现类的装载。