JVM高并发学习第一章

本文详细介绍了Java从源代码到执行的两个步骤,包括javac编译生成class文件及JVM如何加载并执行。JVM作为一个规范,支持多种语言运行,并详细阐述了跨平台的含义。此外,还列举了多种JVM的实现,如HotSpot、J9等,并提及了JDK、JRE和JVM之间的关系。最后,讨论了Java的收费问题以及JVM与操作系统的关系。
摘要由CSDN通过智能技术生成

1. JVM基础和入门

1.1 java从代码到执行的过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TOFXbCBE-1649499117910)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220409155813095.png)]

分为两个部分:

部分一:javac部分 将源代码文件通过javac的指令生成相应的class文件

部分二:java部分 class文件通过classLoader加载内存中,还需支持相应的java类库 比如说String.class或是Object.class。调用字节码解释器或者JIT即时编辑器,来进行解释和编译,编译之后会由执行引擎开始执行,执行引擎对应的就是操作系统和硬件,我们可以把这个java指令的部分的流程看成JVM。

字节码解释器和JIT即时编辑器

​ 其实两者是可以混合的,针对特别常用的代码,会把代码做成一种即时编译的,需要本地的支持,那么在下次使用的时候就不需要解释器对代码一行一行的解释执行。执行引擎可以将代码直接交给操作系统,让其进行调用。这个效率要高很多,当然也不是说所有的代码都要被JIT即时编译器执行。java是一个跨平台的语言,如果他是即时编译的话,那么就满足不了跨平台的特点

1.2 从跨平台的语言,到跨语言的平台

跨平台的语言 ---- Java

跨语言的平台 ---- JVM

除了Java语言,JVM还支持很多其他的语言,根据调查显示大概支持100多种语言。这些语言都可以在JVM虚拟机上进行执行。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fd0Z20Ng-1649499089098)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220409163215812.png)]

其实JVM他就是一种规范。它帮我们屏蔽了操作系统的底层,包括Linux、Unix、Windows等操作系统。

那么JVM如何决定其他语言可以在JVM上执行呢?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KGEWUaju-1649499089099)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220409164027884.png)]

任何语言,只要能够生成class文件,那么他就能够在JVM上执行。

如果没有class文件生成,可以通过程序内部编译生成类似的class文件的二进制流,那么也是可以在JVM上执行的。所以JVM和Java其实没有任何关系的。

究竟什么是跨平台,就是我们在编写Java程序时,可以在Linux、Unix、Windows等等操作系统上执行,且不需要修改东西。以前的c语言和c++都是做不到的。

JVM是一种规范,定义了Java虚拟机能够执行什么,那么这种规范是如何进行定义的。

JVM官方文档网址:https://docs.oracle.com/javase/specs/.index.html

​ https://docs.oracle.com/en/java/javase/15/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PUNvUggD-1649499089100)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220409170514732.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kdqQIVcH-1649499089101)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220409170622506.png)]

The Java Language Specification, Java SE 18 Edition

The Java Virtual Machine Specification, Java SE 18 Edition

虚拟机是虚拟出来的机器

内存的管理,堆栈方法区等 ---- 我们后面再说。。。

1.3 常见的JVM的实现

HotSpot — Oracle官方 我们做实验用到最多的 通过Java-version指令查看安装的JVM是哪种实现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E7rVuW5z-1649499089103)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220409173452942.png)]

JROKit — BEA 曾经号称世界上最快的JVM,后来被Oracle收购,与HotSpot合并

J9 — IBM

Microsoft VM — Microsoft

J9Microsoft VM都是大厂商出产,不会依赖oracle的东西(技术),他们有自己的平台,因为版本问题,他们都去自己开发平台。

TaobaoVM — HotSpot定制版 淘宝专属定制,阿里天猫都在使用这款虚拟机

LiquidVM 直接针对硬件 它其实是没有操作系统的,运行效率会更高

Azul zing GC 垃圾回收机制的业界标杆,它的垃圾回收在1ms以内 土豪版本,价格相当昂贵 常用于银行、电信

阿里有10人以内可以做JVM开发 p9-p10-p11级别
网传Java收费问题:在HotStop8版本以后将不再提供升级了,如果要升级到更高版本则需要收费,是根据企业去做的商业行为,与开发者关系不大。

JDK、JRE以及JVM的关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cuokm8AJ-1649499089104)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220409174048165.png)]

JVM(Java Virtual Machine):虚拟机 用于执行class文件 来执行程序的

JRE(Java RunTime Enviroment):Java运行时环境 除了虚拟机以外还需要Java的核心包、Java的类库要进行加载,能够支持Java的运行

JDK(Java Development Kit):Java的开发工具包,支持Java程序的运行以及编译 JRE+JVM

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值