浅析 Java 程序语言的运行机制

浅析 Java 程序语言的运行机制

Java 程序语言的运行机制

Java 是一门高级语言,它既包含解释型语言的特征, 也具有编译型语言的特征。因为 Java 应用程序是需要先经过编译,再进行解释两个步骤。

解释型和编译型

计算机按照程序的执行方式可以分为解释型和编译型。

解释型语言(Interpreted language)

这种类型的编程语言,会将代码一句一句直接运行,不需要像编译语言(Compiled language)一样,经过编译器先行编译为机器代码,之后再运行。这种编程语言需要利用解释器,在运行期,动态将代码逐句解释(interpret)为机器代码,或是已经预先编译为机器代码的子程序,之后再运行。

理论上,任何编程语言都可以是编译式,或解释型的。它们之间的区别,仅与程序的应用有关。许多编程语言同时采用编译器与解释器来实现,其中包括 Lisp,Ruby,JavaScript 与 Python。JAVA 及 C# 采用混合方式,先将代码编译为字节码,在运行时再进行解释。

编译型语言(Compiled language)

这类型的编程语言,通过编译器来实现。它不像解释型语言一样,由解释器将代码一句一句运行,而是以编译器,先将代码编译为机器代码,再加以运行。理论上,任何编程语言都可以是编译式,或直译式的。它们之间的区别,仅与程序的应用有关。

两者的优缺点

一般而言,用编译语言写成的程序,在运行期的运行速度,通常比用解释型语言写的程序快。因为程序在编译期,已经被预先编译成机器代码,可以直接运行,不用像解释型语言一样,还要多一道直译程序。

但是要先进行编译,之后才能运行程序,这也造成了编译语言的缺点。一般而言,编译语言的程序开发速度,以及调试时间,都是比较长的。因为它不像解释型语言可以写完一行,或一小段程序之后,马上运行,马上调试。解释型语言通常让程序开发的整体时间变少,在开发过程中,程序开发人员也可以更弹性、快速的测试自己的想法。

为了改善编译语言的效率而发展出的即时编译技术,已经缩小了这两种语言间的差距。这种技术混合了编译语言与解释型语言的优点,它像编译语言一样,先把程序源代码编译成字节码。到运行期时,再将字节码直译,之后运行。Java 与 LLVM 是这种技术的代表产物。

Java 的运行机制和 JVM

Java 语言相对于独立的解释型和编译型, 又有一些不一样。区别在于编程器编译的不是最终可以运行的机器语言, 而是能够运行在 Java 虚拟机 ( JVM: Java Virtual Machine)中的字节码。Java 虚拟机只要是用来运行 Java字节码文件的虚拟机。不同的平台上编译器提供了统一的编程接口,而 Java 编译器只需要面向 Java 虚拟机, 生成虚拟机能够运行的代码。 然后由 Java 虚拟机解释执行,并且在虚拟机中把代码转换成平台能够识别的机器码来运行程序, 从而做到了一次编译, 多个平台运行的跨平台特性。

流程大概如下:

这里 JVM 也就是 Java 虚拟机中介的概念。 原先你要去租房, 你有一个要租房的“需求”(源代码), 而每个房东都是你的“运行”环境。 没看一次房子都需要单独的找到对应房子的房东进行 “租”(编译) 的过程。 这个时候, 有个房屋托管(虚拟机)说, 你不要找房东了太麻烦, 我这有这个区的“房源”, 你来找我就好, 这样你以后租房子就可以只找这个中介就可以看这个区的房子, 这样的话, 你不用来回和不同的房东打交道, 你也不需要知道这些房东是男是女, 是好说话还是不好说话。 但是既然是中间打的交道, 就需要有一些性能的损耗(佣金)。并且你能看多少套房子,就取决于中介有多少房源。 也就是 Java 虚拟机能在那运行, 你的程序就可以在那运行。

JVM

JVM 是 Java Virtual Machine 的缩写。它是一种基于计算设备的规范,是一台虚拟机,即虚构的计算机。

JVM屏蔽了具体操作系统平台的信息(显然,就像是我们在电脑上开了个虚拟机一样),当然,JVM 执行字节码时实际上还是要解释成具体操作平台的机器指令的。

通过 JVM,Java 实现了平台无关性,Java 语言在不同平台运行时不需要重新编译,只需要在该平台上部署 JVM 就可以了。因而能实现一次编译多处运行。(就像是你的虚拟机也可以在任何安了 VMWare 的系统上运行)。

JVM结构

  • 程序计数器(Program Counter)
  • Java堆(Heap)
  • Java虚拟机栈(Stack)
  • 本地方法栈(Native Stack)
  • 方法区(Method Area)
郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年7月2日
下一篇 2022年7月2日

相关推荐

  • 不结婚不生子,50岁仍旧单身的吴越,是因为没有放下陈建斌吗?

    2005年,吴越推荐男友陈建斌出演《乔家大院》。 之后陈建斌进组,吴越也去忙碌自己的事业。 不久后,吴越忙完工作回家。 却发现屋内陈建斌的东西全部不见了。 衣柜里他的衣服也全都拿走…

    2022年8月7日
  • 机器视觉在工业领域都有哪些应用?

    机器视觉技术,涉及计算机科学、人工智能、信号处理、图像处理、机器学习、光学、自动化等多个领域。 近年来,随着工业智能化的迅速发展,机器视觉技术被广泛应用于工业生产各领域,其作为一种…

    2022年7月7日
  • 跟着测评买也踩坑?谁来测评“第三方测评”

    原标题:检测手段各异、标准五花八门、“以商养测”成风…… 裁判员又是运动员,谁来测评“第三方测评”? “没想到跟着测评买也踩坑。”近日,为了给儿子选购一款汽车玩具,宝妈茜茜翻阅了多…

    2022年7月13日
  • 法治丨区块链技术与数字藏品的安全保障

    特约撰稿 段陆平 近日,媒体报道,国内发行数字藏品平台超过100个,用户花几元至几百元即可在这些平台抢购数字藏品。但在数字藏品火爆背后,投诉接连不断。消费者投诉问题主要集中在平台涉…

    2022年6月29日
  • 大量缅甸美女涌入中国,不会汉语靠什么养活自己?看完很心酸

    我们的物质条件在不断提升,有越来越多的人也爱上了旅游,因为它可以让自身阅历更丰富,整个人生也变得更加充实。 (此处已添加小程序,请到今日头条客户端查看) 现在最热门的应该就是出国游…

    2022年8月11日
  • 网曝住户装修时阳台突然掉落 最新消息原因始末

    这也太可怕了这好端端阳台就这个掉下来了,虽然是老房子,也正因为是老房子,所以质量应该更靠谱才对。会不会是业主阳台堆放太多东西、或是装修不当操作造成的。反正我家二十年的老房子,装修的…

    2022年6月2日
  • 湖南长城打造国产自主安全计算机硬件平台

    湖南长城打造国产自主安全计算机硬件平台 在消费、通讯、教育、安防、医疗、金融等领域得到广泛应用 湖南日报6月16日讯(全媒体记者 张咪)湖南长城计算机系统有限公司集中国电子自主安全…

    2022年6月18日
  • 星愿宇宙神秘犬种赋能揭秘|天使还是恶魔?

    本期重要提示: 8月20日将开启神秘犬种的升级入口 星愿宇宙宠物狗系列神秘犬种分为天使玉犬(1000份)和地狱恶犬(500份)两种 持有天使玉犬可以每天随机产生1-5个星愿值,持有…

    2022年8月12日
  • 小天鹅洗衣机说明书(小天鹅洗衣机说明书图)

    本文主要讲的是小天鹅洗衣机说明书,以及和小天鹅洗衣机说明书图相关的知识,如果觉得本文对您有所帮助,不要忘了将本文分享给朋友。 小天鹅全自动洗衣机使用方法 小天鹅全自动洗衣机使用方法…

    2022年10月30日
  • 抖音直播带货怎么做入门教学(抖音直播带货怎么做入门教学)

    抖音直播带货这几年也是非常火爆的,随着销量的增加,有越来越多的商家看好这一行业的前景。那么,抖音直播带货怎么做?新手入驻抖音直播带货往往无从入手,今天小编整理了一份关于抖音直播带货…

    2022年10月20日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息