从历史了解JVM,以及JVM的学习方向

本文介绍了Java程序从源代码到执行的过程,涉及JVM如何将.class文件转换为机器码执行。JVM作为翻译器,处理字节码并调用操作系统函数,实现跨平台性。JRE提供了运行环境,而JDK则包含开发工具。内存结构在JVM中占据核心地位,涉及到类加载、垃圾回收和性能优化等多个方面。JVM的跨平台和语言无关性特性使其成为软件开发的重要工具。
摘要由CSDN通过智能技术生成

JVM从编译到执行

image.png

JAVA程序执行过程:

一个Java程序, 首先经过编译成class文件, 然后JVM将其加载到方法区. 执行引擎会执行这些字节码文件. 执行时,会翻译成操作系统相关的函数. JVM作为翻译 .class 文件的存在. 输入字节码, 调用操作系统函数.

过程:JAVA文件==>编译器==>字节码==>机器码.

JVM全程JAVA Virtual Machine, 也就是我们常说的Java虚拟机. 虚拟机只识别class文件,.并且可以把class文件解析成机器阅读的机器码, 从而完成我们想要的操作.(最近在健身房, 大家总是聊最近吃蛋白粉. 实际上, 如果把我们的身体内部比作运行时数据区, 那么我们常说的鸡蛋, 牛肉,鸡胸肉等等就好比我们的各种语言. 蛋白粉就相当于这些食物最终同一翻译成 .class文件(蛋白质)被我们人体吸收. 当我们直接吃蛋白粉时, 也就节约了.Java文件编译成为 .class文件的过程, 能更好更迅速的被人体所吸收! 然而更多的食物种类始终被大家所喜爱, 就好比现在的Java一样.)

JRE,JDK,JVM的关系

JVM是翻译官, 把class文件翻译成机器读得懂的机器码. JVM不会自己生成代码, 需要手动编写, 并且在编译过程中需要依赖很多类库, 这就需要JRE.

JRE是除开JVM外, 还为我们提供了相当多的类库jar包. 它提供了许多已经封装好的功能, 包括IO流,SOCKET等等. 至此, 已经构成了Java的运行环境.

但是对于程序员来说. 仅仅只是运行环境任然不够, 我们需要一个开发环境去编写代码. 此时JDK提供了许多工具, 包括运行, 发布, 调试以及反汇编工具.

总结: JVM的核心作用, 从软件的角度排除了不同软件与不同系统之间的不兼容问题

从跨平台到跨语言

image.png

 跨平台性

可以通过JDK的不同工具翻译成统一的class语言, 对于JVM来说读取的东西是一样的. 因此体现了语音的无关性

语音无关性 

不同的操作系统需要下载不同版本的JDK. 因为可以将字节码文件翻译成对应系统的机器语言, 因此体现了语言无关性.

JVM的发展历史

image.png

了解一下即可.

JVM整体知识模块

image.png

 JVM涉及到非常庞大的知识体系, 如内存结构, 垃圾回收, 类加载, 心梗调优, JVM自身优化技术, 执行引擎, 类文件结构, 监控工具等, 但是所有只是体系都一定与内存结构有关系.

垃圾回收时针对内存, 类加载也是加载到内存中, 新能优化涉及到内存优化, 执行引擎与内存密不可分, 类文件结构与内存的涉及有关, 监控工具也会监控内存, 所以内存结构处于JVM的C位, 因此第一个拉出来学. 

 JVM的本质其实就是一个虚拟的操作系统. 出了虚拟化指令之外, 还有一个重点就是虚拟化内存. 虚拟化内存就是即将讲到的JVM内存区域.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值