-
跨平台的语言
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LsgXvNsk-16389764
16155)(C:UsersasusAppDataRoamingTyporatypora-user-imagesimage-20211208184802598.png)]
-
跨语言的平台
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VkKx8tqd-1638976416156)(C:UsersasusAppDataRoamingTyporatypora-user-imagesimage-20211208184842706.png)]
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:UsersasusAppDataRoamingTyporatypora-user-imagesimage-20211208215323940.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DzgyNvFh-1638976456933)(C:UsersasusAppDataRoamingTyporatypora-user-imagesimage-20211208215333005.png)]
虚拟机和java虚拟机 虚拟机
- 虚拟机就是一太虚拟的计算机,他是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tv030aEa-1638976468121)(C:UsersasusAppDataRoamingTyporatypora-user-imagesimage-20211208215657862.png)]
- 无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中。
- 它是一台执行java字节码的虚拟计算机,拥有独立的运行机制,其运行的java字节码也未必有java语言编译而成
- java的核心技术就是java虚拟机,因为所以java程序都运行在java虚拟机内部
- java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一条java指令,java虚拟机规范中都有详细定义。如怎么去操作数,怎么处理操作数,处理结果放在哪里
特点:
- 一次编译,到处运行
- 自动内存管理
- 自动垃圾回收功能
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gl5Fb3iB-1638976468121)(C:UsersasusAppDataRoamingTyporatypora-user-imagesimage-20211208215831946.png)]
JVM整体结构 java代码执行流程 JVM的架构模型- 指令集基本分为两种,基于栈的指令集架构,和基于寄存器的指令集架构
由于跨平台性的设计,java指令都是根据栈来实现的。不同平台CPU架构不同,所以不能设计为基于寄存器的。
- 栈:跨平台,指令集小,指令多;执行性能比寄存器差
-
虚拟机的启动
通过引导类加载器(bootstrap class loader)创建一个初始类来完成,这个类是由逊尼基的具体实现指定的。
-
虚拟机的执行
- 一个运行中的java虚拟机有这一个清晰地任务,执行java程序
- 程序开始执行时他才运行,程序结束时它就停止
- 执行一个所谓的java程序的时候,真真正正在执行的是一个叫做java虚拟机的进程
-
虚拟机的退出
- 程序正常执行结束
- 程序在执行过程中遇到了异常会错误而终止
- 由于操作系统出现错误而导致java虚拟机进程终止
- 某线程调用Runtime类或Systen类的exit方法,或Runtime类的halt方法,并且java安全管理器也允许这次exit或halt操作。
- 除此之外,JNI规范描述了用JNI Invocation API来加载或卸载Java虚拟机时,jaca虚拟机的退出情况
JVM发展进程 -
Sun Classic VM
- 世界上第一款商用java虚拟机
- 虚拟机内部只提供解释器
- 现在的hotsopt内置了此虚拟机
-
Exact VM
- 可以知道内存中某个位置的数据具体是什么类型
- 具备现代高性能虚拟机的雏形:热点探测+编译器和解释器混合工作模式
-
HotSpot VM
- JDK1.3时,成为默认虚拟机
- 在服务器端,左面到移动端,嵌入式都有应用
- Hotspot指的就是热点代码探测技术
-
JRokit
- 专注于服务器端应用
- 内部不包含解析器实现
- 是世界上最快的JVM
-
J9
- 有影响力的三大商用虚拟机之一
- 服务器端,桌面应用,嵌入式等多用途VM
-
Azul VM
-
Liquid VM
直接上传(img-Tz6d3mUL-1638976481844)(
尚硅谷宋红康JVM全套教程详解java虚拟机



