Java虚拟机工作原理之JVM用到的3大计算机核心功能,重点是方法调用

简介:

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

11_webp

Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。
一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。

JVM作为一款虚拟机,也必然要涉及计算机核心的3大功能。
1、方法调用
方法作为程序组成的基本单元,作为原子指令的初步封装,计算机必须能够支持方法的调用。同样,Java语言的原子指令是字节码,Java方法是对字节码的封装,因此JVM必须支持对Java方法的调用。

2、取指
这里的"取指",是指取出指令。还是那句话,方法是对原子指令的封装,计算机进入方法后,最终需要逐条取出这些指令并逐条执行。Jaa方法也不例外,因此JM进入Java方法后,也要能够模拟硬件CPU,能够从Java方法中逐条取出字节码指令。

3、运算
计算机取岀指令后,就要根据指令进行相应的逻辑运算,实现指令的功能。JVM作为虚拟机,也需要具备对Java字节码的运算能力。

12_webp

下面重点分析JVM如何从内部调用Java方法:
如何进行方法调用?
到目前为止,人类发明出了若干种编程语言,有的编程语言没有类概念,有的编程语言面向过程,但不管是哪种编程语言,至少都会包含函数的概念。
通过函数将一个大的程序拆分成体积小、功能明确的一个个简短的函数,从而将一个复杂的大型问题分解成若干个简单的小问题,由繁到简。虽然函数并不总是大型软件模块化的手段,但一定是模块化得以实现的基础,否则随便开发个稍微难一点的功能,一写就是几千、几万行代码,估计没几个人能看懂,更没几个人有耐心看。

同理,Java程序最基本的组成单位是类,而Java类也是由一个个的函数所组成,在这一点上,Java也玩不出什么花样。
有的编程语言由真实的物理机器运行,有的程序运行于虚拟机上。既然所有的编程语言都由函数组成,那么运行由这些编程语言所开发出来的程序的机器就必须能够执行函数调用,不管是物理机器还是虚拟机器。

JVM作为一款虚拟机,要想具备执行一个完整的Java程序的能力,就必定得具备执行单个Java函数的能力。而要具备执行Java函数的能力,首先必须得能执行函数调用。

经过前面的讨论我们知道,詹爷当年为了能够让Java这门编程语言兼容各种平台,最终使用了一个大招在运行时将Java字节码指令动态翻译成本地机器指令,从而既能获取兼容性,又能获取很高的运行效率。

13_webp

因此,JVM实际上最后调用的并不是真正的Java函数,而是其对应的一堆机器指令。那么JVM究竟是怎么做到直接调用机器指令的呢? 下一节会学习真实的物理机器执行函数调用的机制。
Java免费学习 Java自学网 http://www.javalearns.com

关注微信号:javalearns 随时随地学Java

或扫一扫

14

随时随地学Java

相关文章
|
3月前
|
安全 Java API
Java中的Lambda表达式:简洁与功能的结合
Java中的Lambda表达式:简洁与功能的结合
431 211
|
3月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
483 64
|
2月前
|
存储 数据可视化 Java
Java Stream API 的强大功能
Java Stream API 是 Java 8 引入的重要特性,它改变了集合数据的处理方式。通过声明式语法,开发者可以更简洁地进行过滤、映射、聚合等操作。Stream API 支持惰性求值和并行处理,提升了代码效率和可读性,是现代 Java 开发不可或缺的工具。
Java Stream API 的强大功能
|
3月前
|
前端开发 JavaScript Java
Java 项目实战城市公园信息管理系统开发流程与实用功能实现指南
本系统基于Java开发,采用Spring Boot后端框架与Vue.js前端框架,结合MySQL数据库,构建了一个高效的城市公园信息管理系统。系统包含管理员、用户和保洁人员三大模块,涵盖用户管理、园区信息查询、订票预约、服务管理等功能,提升公园管理效率与服务质量。
150 6
|
3月前
|
安全 Java 数据库
Java 项目实战病人挂号系统网站设计开发步骤及核心功能实现指南
本文介绍了基于Java的病人挂号系统网站的技术方案与应用实例,涵盖SSM与Spring Boot框架选型、数据库设计、功能模块划分及安全机制实现。系统支持患者在线注册、登录、挂号与预约,管理员可进行医院信息与排班管理。通过实际案例展示系统开发流程与核心代码实现,为Java Web医疗项目开发提供参考。
206 2
|
3月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
308 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
3月前
|
机器学习/深度学习 算法 Java
Java 大视界 -- Java 大数据机器学习模型在生物信息学基因功能预测中的优化与应用(223)
本文探讨了Java大数据与机器学习模型在生物信息学中基因功能预测的优化与应用。通过高效的数据处理能力和智能算法,提升基因功能预测的准确性与效率,助力医学与农业发展。
|
4月前
|
Java API
Java API中Math类功能全景扫描
在实际使用时,这些方法的精确度和性能得到了良好的优化。当处理复杂数学运算或高精度计算时,`Math`类通常是足够的。然而,对于非常精细或特殊的数学运算,可能需要考虑使用 `java.math`包中的 `BigDecimal`类或其他专业的数学库。
129 11
|
4月前
|
Java API
深入解析Java API中Object类的功能
了解和合理运用 Object类的这些方法,对于编写可靠和高效的Java应用程序至关重要。它们构成了Java对象行为的基础,影响着对象的创建、识别、表达和并发控制。
104 0