Java虚拟机工作原理之JVM:重点是方法调用

2018-10-1210:15:14编程语言入门到精通Comments2,608 views字数 1134阅读模式

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

Java虚拟机工作原理之JVM:重点是方法调用文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

Java虚拟机工作原理之JVM:重点是方法调用文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

JVM作为一款虚拟机,也必然要涉及计算机核心的3大功能。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

1、方法调用文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

方法作为程序组成的基本单元,作为原子指令的初步封装,计算机必须能够支持方法的调用。同样,Java语言的原子指令是字节码,Java方法是对字节码的封装,因此JVM必须支持对Java方法的调用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

2、取指文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

这里的"取指",是指取出指令。还是那句话,方法是对原子指令的封装,计算机进入方法后,最终需要逐条取出这些指令并逐条执行。Jaa方法也不例外,因此JM进入Java方法后,也要能够模拟硬件CPU,能够从Java方法中逐条取出字节码指令。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

3、运算文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

计算机取岀指令后,就要根据指令进行相应的逻辑运算,实现指令的功能。JVM作为虚拟机,也需要具备对Java字节码的运算能力。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

下面重点分析JVM如何从内部调用Java方法:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

如何进行方法调用?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

到目前为止,人类发明出了若干种编程语言,有的编程语言没有类概念,有的编程语言面向过程,但不管是哪种编程语言,至少都会包含函数的概念。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

通过函数将一个大的程序拆分成体积小、功能明确的一个个简短的函数,从而将一个复杂的大型问题分解成若干个简单的小问题,由繁到简。虽然函数并不总是大型软件模块化的手段,但一定是模块化得以实现的基础,否则随便开发个稍微难一点的功能,一写就是几千、几万行代码,估计没几个人能看懂,更没几个人有耐心看。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

同理,Java程序最基本的组成单位是类,而Java类也是由一个个的函数所组成,在这一点上,Java也玩不出什么花样。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

Java虚拟机工作原理之JVM:重点是方法调用文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

有的编程语言由真实的物理机器运行,有的程序运行于虚拟机上。既然所有的编程语言都由函数组成,那么运行由这些编程语言所开发出来的程序的机器就必须能够执行函数调用,不管是物理机器还是虚拟机器。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

JVM作为一款虚拟机,要想具备执行一个完整的Java程序的能力,就必定得具备执行单个Java函数的能力。而要具备执行Java函数的能力,首先必须得能执行函数调用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

经过前面的讨论我们知道,詹爷当年为了能够让Java这门编程语言兼容各种平台,最终使用了一个大招在运行时将Java字节码指令动态翻译成本地机器指令,从而既能获取兼容性,又能获取很高的运行效率。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

因此,JVM实际上最后调用的并不是真正的Java函数,而是其对应的一堆机器指令。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6590.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/6590.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定