理解JVM(1)- JVM是什么

简介: 日常Java开发过程中,我们经常会提及JVM,那么它究竟是什么呢?

日常Java开发过程中,我们经常会提及JVM,那么它究竟是什么呢?


它是什么?

JVM全称Java Virtual Machine(Java虚拟机),是一个虚构出来的计算机,它屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码,ByteCode), 就可以在多种平台上不加修改地运行。这背后其实就是JVM把字节码翻译成具体平台上的机器指令,从而实现“一次编写,到处运行(Write Once, Run Anywhere)”。


它在哪里?

  • %JAVA_HOME%/bin/java.exe
  • %JAVA_HOME%/bin/javaw.exe
  • %JAVA_HOME%/bin/javaws.exe
  • %WINDIR%/bin/system32/java.exe
    是上面这些吗?No! These are ONLY Lauchers!

它在这里:

  • %JAVA_HOME%/jre/bin/client/jvm.dll
  • %JAVA_HOME%/jre/bin/server/jvm.dll

它与JRE/JDK是什么关系?

JDK_components

从上图可以看出:

  • JVM只是JRE的一部分。
  • JRE(Java Runtime Environment,Java运行环境),包含了Java虚拟机、Java基础类库,是使用Java语言编写的程序运行时所需要的软件环境,是提供给想运行Java程序的用户使用的,普通用户只是运行已开发好的Java程序的话,安装JRE即可。
  • JDK(Java Development Kit,Java开发工具包),Java程序设计语言、Java虚拟机、Java API类库这三部分统称为JDK。作为一个Java程序员,JDK是必须安装的。

它只能运行Java语言编写的程序吗?

或许大部分程序员认为JVM仅仅是用来运行Java程序的,其实在Java发展之初,设计者就曾经考虑过让其他语言也能运行在Java虚拟机之上,在1997年发布的第一版Java虚拟机规范《The Java Virtual Machine Specification》中曾提到:

"In the future, we will consider bounded extensions to the Java virtual machine to provide better support for other languages"

当Java虚拟机发展到JDK 1.7 ~ 1.8的时候,这个设想基本实现了。时至今日,除了Java语言之外,已经有一大批语言能运行在Java虚拟机之上。这使得JVM除了能做到平台无关性之外,在语言无关性上也做的越来越好。
可以运行在JVM上的语言


至此,先对JVM有一个简单初步的了解,后续会逐步深入理解它的体系结构。

下一篇: 理解JVM(2)- JVM体系结构

相关文章
|
7月前
|
Java Unix Linux
【JVM】JVM 调优参数
【1月更文挑战第27天】【JVM】JVM 调优参数
|
安全 前端开发 Java
JVM(一)JVM概述
JVM(一)JVM概述
64 0
|
算法 Java
JVM学习笔记(1)——初识JVM
JVM学习笔记(1)——初识JVM
67 0
|
存储 算法 Java
JVM,关于JVM基础的知识,你确定不了解一下吗?
JVM,关于JVM基础的知识,你确定不了解一下吗?
|
存储 缓存 监控
JVM学习(五):JVM运行时参数
JVM学习(五):JVM运行时参数
272 0
JVM学习(五):JVM运行时参数
|
Java
JVM--怎么查看JVM使用的什么垃圾收集器
方案一:-XX:+PrintCommandLineFlags
367 0
JVM--怎么查看JVM使用的什么垃圾收集器
|
Arthas Java 测试技术
Jvm 相关命令之:Jvm、sysprop | 学习笔记
快速学习 Jvm 相关命令之:Jvm、sysprop
Jvm 相关命令之:Jvm、sysprop | 学习笔记
|
Oracle Java 关系型数据库
JVM学习笔记 01、初识JVM
JVM学习笔记 01、初识JVM
JVM学习笔记 01、初识JVM
获取当前jvm数据
获取当前jvm数据
142 0
|
存储 算法 安全
【JVM】JVM系列之垃圾回收(二)(3)
  如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。所以,垃圾回收是必须的。
130 0
【JVM】JVM系列之垃圾回收(二)(3)