java和JVM简介
java
jvm
java虚拟机可运行多种语言,因为他并不与某种特定的语言有必然联系,它只与特定的二进制文件相关联,因此利用java虚拟机可以实现多语言混合编程
java虚拟机可运行多种语言
- 随着java7的正式发布,java虚拟机的设计者们通过JSR-292规范基本实现在java虚拟机平台上运行非java语言编写的程序
- java虚拟机根本不关心运行在内部的程序到底是使用何种编程语言编写的,它只关心“字节码”文件。也就是说JVM是语言无关的,只要其他编程语言的编译结果满足并包含java虚拟机的内部指令集、符号表以及其他的辅助信息,他就是一个有效的字节码文件,就能够被虚拟机所识别并装载运行
字节码
- java字节码,指的是用java语言编译成的字节码。而在jvm平台上执行的字节码格式都是一样的,所以统称为jvm字节码
- 不同编译器,可编译出相同的字节码文件,字节码文件也可以在不同的JVM上运行。
- java虚拟机只与特定的二进制文件格式——Class文件格式所关联。Class文件中包含了java虚拟机指令集(或者称为字节码,Bytecodes)和符号表,还有一些其他辅助信息。
多语言混合编程
java平台上的多语言混合变成正成为主流,通过特定领域的语言去解决特定领域的问题是当前软件开发应对日趋复杂的项目需求的一个方向
java发展的重大事件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4wjarZkW-1638976456932)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20211208215323940.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DzgyNvFh-1638976456933)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20211208215333005.png)]
虚拟机和java虚拟机
虚拟机
- 虚拟机就是一太虚拟的计算机,他是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tv030aEa-1638976468121)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20211208215657862.png)]
- 无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中。
java虚拟机
- 它是一台执行java字节码的虚拟计算机,拥有独立的运行机制,其运行的java字节码也未必有java语言编译而成
- java的核心技术就是java虚拟机,因为所以java程序都运行在java虚拟机内部
- java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一条java指令,java虚拟机规范中都有详细定义。如怎么去操作数,怎么处理操作数,处理结果放在哪里
特点:
- 一次编译,到处运行
- 自动内存管理
- 自动垃圾回收功能
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gl5Fb3iB-1638976468121)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20211208215831946.png)]
JVM整体结构
java代码执行流程
JVM的架构模型
- 指令集基本分为两种,基于栈的指令集架构,和基于寄存器的指令集架构
由于跨平台性的设计,java指令都是根据栈来实现的。不同平台CPU架构不同,所以不能设计为基于寄存器的。
JVM生命周期
尚硅谷宋红康JVM全套教程详解java虚拟机
|