欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  博文

Java虚拟机JVM_深入理解JVM虚拟机

程序员文章站 2021-12-27 18:52:28
...

一次编译就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。为什么JVM的编程语言会如此受到开发者的青眯?下面我们从JVM平台的3点特性进行分析。

Java虚拟机JVM_深入理解JVM虚拟机


动态语言支持

从SE 6开始就是对动态语言的支持,动态语言逐渐成为许多Java开发者应用开发日常工作的一部分,并常常用于原型开发或用来提高开发速度。为了快速得到更大规模的Java应用程序,人们一直在使用动态语言胶合程序部件。


事实上,任何可以使用有效class 文件表述的功能性语言,都可以运行在JVM上。动态语言的灵活性,尤其是脚本语言,对于实验性、原型应用程序以及需频繁更新的程序,都具有独特的吸引力。


Java开发人员也可以使用动态语言进行部分编程,然后将这部分代码转换成Java,或继续用Java来开发程序中更为健壮、生命力更强的部分,其他代码则可以通过更加动态的语言来进行开发。动态类型固有的灵活性与JVM的执行效率,合二为一。很明显,这就是它能够吸引动态编程语言创建者以及使用这些语言构建应用程序的开发者的原因。


跨平台性

如果单单说JVM支持动态语言编程就能够吸引更多的开发者那是不可能的,曾有这么一句话“一次编程,到处运行”,这句话说的就是JVM的跨平台性。指即不依赖于操作系统,也不信赖硬件环境。

JVM跨平台的四种执行引擎部分说明:


1、解释器

简单,一次性解释字节码。易于实现但是执行缓慢。


2、即时编译器

将第一次执行的字节码编译为本地机器代码。编译出的本地机器代码会被缓存,第二次调用的时候可以重用。执行速度快,但是消耗更多内存(与解释器相比)。


3、自适应优化器

虚拟机开始的时候是解释字节码,但是他会监视运行中的程序,并记录下使用最频繁的代码段。程序运行的时候,将最频繁的代码编译成本地代码,其他使用不频繁的代码,继续保持为字节码。


4、硬件芯片

用本地方法执行字节码。java通过编译器后生成class文件,为字节码,通过虚拟机编译后形成机器码,电脑上只能运行机器码。字节码是可以运行在任何支持java虚拟机的硬件平台和操作系统上的二进制文件。


混合编程

JVM平台能够受到开发者的青眯还有一点就是能够进行多语言混合编程,也就是说在JVM平台上不仅Java一种编程语言可以使用。事出于单一的Java开发已经无法满足当前软件复杂的需求。而混合编程也受到了开发者的热捧,至今已成为主流。


JVM不断的向多语言方向发展,每种语言都可以针对自己擅长的方面更好的解决问题;日趋复杂的软件需求也使得混合编程的应用场景更加的频繁。在不远的未来我们将会看到,我们的项目中,并行进程用Clojure编写,展示层使用Jruby/Rails,中间层用的是Java编写。


多年来,在JVM上运行的语言越来越多。而动态语言、跨平台性、混合编程的特性对开发者是非常具有吸引力的。JVM作为一种机制用以提供Java应用在不同的环境,其他平台以及不同硬件上的可移植性,而基于JVM平台的编程语言也是不断的在增加。从动态语言如Groovy、JRuby, Jython到静态型Scala语言, JVM也正成为一个多元化的平台,开发人员可以充分利用不同语言来满足各自不同的需求。


若资源对你有帮助,浏览后有很大收获,不妨小额打赏我一下,你的鼓励是维持我不断写博客最大动力。

想获取DD博客最新资讯,你可以扫描下方的二维码,关注DD博客微信公众号(ddblogs)。

或者你也可以关注我的新浪微博,了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间,可以对该博文进行评论,希望不吝赐教。

为保证及时回复,可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问,祝你生活愉快,工作顺心,欢迎常来逛逛。