jvm和Java的关系是什么

这篇文章主要介绍了jvm和Java的关系是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

专注于为中小企业提供网站建设、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业寒亭免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

JVM是什么

虚拟机是一种抽象化的计算机通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

所谓的java虚拟机,就是一台虚拟的机器。它是一款软件,用来执行一系列虚拟计算机指令,大体上虚拟机可以分为系统虚拟机和程序虚拟机。visual Box、VMare就属于系统虚拟机。他们完全是对物理计算机的仿真,提供一个可运行完整操作系统的软件平台。而java虚拟机就是典型程序虚拟机,它专门为执行单个计算机程序而设计,在java虚拟机中执行的指令我们称之为java字节码指令。

比如一台服务器上运行着两个用Java编写的程序,一个博客系统,一个电商系统,那么这两个Java程序、Java虚拟机、服务器之间是什么关系呢?

从上图可以看出来,Java写的博客系统,电商系统都是运行在jvm之上,这两个Java程序启动也对应着会启动两个JVM实例。JVM是运行在服务器的系统之上,服务器可以是linux系统,可以是windows系统,可以是centos系统,各种系统都可以。这也就是常说的Java是一次编译到处运行。可能这么说还是不通俗易懂,至少我刚开始学Java的时候我的老师这么说我就没有理解。那么我就说说我自己工作后的理解。

我们跑Java程序之前首先肯定是装jdk,我们在windows装jdk环境是用的windows版本的jdk,在linux上装jdk用的linux版本的jdk;jdk我们就可以理解为由Java程序设计语言、Java虚拟机、Java类库组成(Java Development kit)。我们写的Java程序可以在服务器上跑的前提是这个服务器装了jdk环境。也就是只要是服务器装了jdk环境,我们用maven或者gradle或者其他工具编译打包好的Java程序jar包就可以直接运行,我不需要在Java程序里面去适配你的windos环境还是linux环境还是centos环境。

jvm和Java的关系

jvm和Java是什么关系呢,jvm和Java是不是只能相互依存呢?我刚开始学Java的时候接触到jvm,我就说这么认为的,因为jvm又叫Java虚拟机,所以我认为jvm就是专门为Java设计的。Java有Java自己的规范,根据这个规范也衍生出多种不同的jdk,比如Oracle的jdk,sun的jdk(sun已经被oracle收购)IBM的jdk;虚拟机也有虚拟机自己的规范,根据这个规范也衍生出了多种不同的虚拟机,比如:武林盟主HotSpot虚拟机,小家碧玉Mobile Embedded VM,天下第二BEA JRockit/IBM J9虚拟机等。但是2018年4月,Oracle Labs新出了一个虚拟机Graal VM,口号是:“Run Programs Faster Anywhere”与Java刚诞生时候的“Write Once,Run Anywhere”遥相呼应,Graal VM是一个增强版虚拟机,可以作为“任何语言”的运行平台使用,这里“任何语言”包括了Java、Scala、Groovy、Kotlin等基于Java虚拟机之上的语言,还包括了C、C++、Rust等基于LLVM的语言,同时支持其他像JavaScript、Ruby、Python和R语言等。Graal VM可以无额外开销地混合使用这些编程语言,支持不同语言中混用对方的接口和对象,也能够支持这些语言使用已经编写好的本地库文件。

感谢你能够认真阅读完这篇文章,希望小编分享的“jvm和Java的关系是什么”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!


当前名称:jvm和Java的关系是什么
本文来源:http://myzitong.com/article/gdjcij.html