码迷,mamicode.com
首页 > 其他好文 > 详细

JVM基础

时间:2020-11-01 21:02:23      阅读:19      评论:0      收藏:0      [点我收藏+]

标签:需要   机器码   大致   路径   window   依赖   过程   win   alibaba   

JVM基础知识

在我学习JVM的过程中,首先大致有了一个大的整体性概念,然后在进一步深入学习。

Java从编译到执行

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

简化一下上面的描述:Java 文件->编译器>字节码->JVM->机器码
技术图片

在开发工具编写代码时,所看到的是Xxxx.java文件,当点击运行后,经过编译(javac)后便成了Xxx.class文件,之后就进入JVM进行解释执行。到了这里第一个概念就出现了,即JDK、JRE、JVM三者之间的关系,如何去描述。

JDK
JDK是Java语言的开发工具包(Java Development Kit),百度百科上做了比较详细的描述,以下不再赘述。
JRE
Java运行时环境(Java Runtime Environment)
JVM
Java虚拟机(Java Virtual Machine)

从JDK的结构图(如图一)中发现JDK包含了JDK,JRE又包含了JVM。
JDK:既然是开发工具包,自然就提供了相应的工具,例如javac、javap、jvisualvm(JDK原生监控JVM的工具)等,这些工具在jdk1.X.X_201\bin的路径下就可以找得到。
JRE:为运行时环境,那么在程序运行时就势必会用到一些相关的类库(jar),比如说I/O、net、until等,在jdk1.X.X_201\jre\lib下能看到。
JVM:虚拟机,最重要的就是将class文件翻译成真实的操作系统能识别的指令。
代码到了JVM运行,需要有依赖库,依赖库来自JRE,代码能正常运行后,还有其他的需求(反编译、监控性能等),就要用到JDK。

跨平台和跨语言

跨平台:因为JVM是虚拟机,它是在操作系统上的虚拟(如图一),它接收字节码并将其翻译成机器码,让底层得以执行,所以当有了不同版本(Linux、Windows等)的JRE/JDK,JVM就可以运行,从而实现了跨平台。
跨语言:因为接收字节码并将其翻译成机器码,也就意味着,某种语言是这种模式,JVM也能执行,比如scala、groovy等

JVM的实现/版本

        Oracle-Hotspot(居多)、IBM-J9、Alibaba-TaobaoVM等

JVM基础

标签:需要   机器码   大致   路径   window   依赖   过程   win   alibaba   

原文地址:https://blog.51cto.com/14507778/2543277

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!