Java程序的运行机制


前言

接上篇:历史课:Java帝国的诞生


本文按照作者的理解讲述了Java程序的运行机制。正文开始之前,得先搞清楚以下一些概念:

一、JDK、JRE、JVM

相信有不少小伙伴们跟我一样,要我敲一段代码敲得出来,但是要我解释原理我却只能解释个大概。更有甚者,连J氏三杰——JDK、JRE和JVM的概念都傻傻分不清。

所以我得在这梳理梳理:

1. 老三JVM——Java代码的最底层

JVM(Java Virtual Machine,Java虚拟机)是运行Java字节码的虚拟机,通过编译.java文件为.class文件得到字节码文件。.class文件包含JVM可以理解的字节码。
在现实世界中,JVM是一种规范,他提供可以执行Java字节码的运行时环境Running Environment,Java的运行时环境就是Java Running Environment,即老二JRE),不同的供应商提供的这种规范的不同实现,最受欢迎的JVM的实现是Hotspot,它是由Oracle公司拥有并提供维护。
JVM
关于其中的英文解释,可参考此篇博客,较为详述

2. 老二JRE——Java运行时环境

JRE(Java Running Environment,Java运行时环境)是一个软件包,它捆绑了libraries(jar)和JVM,以及用Java编写的应用程序的其他组件。JVM只是JRE发行版的一部分。执行任何Java程序,需要在机器上安装JRE,这是最低要求。就好比一碗饭,如果只需要吃,那么只需要碗筷即可,JRE就是这个碗筷,有了碗筷,就满足了我吃饭的需求(有了JRE,就满足了我运行Java程序的需求)。但是,如果我需要热饭或者是煮饭,对这碗饭进行开发和调试,那么就需要——

3. 老大JDK——Java开发工具集

JDK(Java Development Kit,Java开发工具集)JDK是JRE的超集,JDK包含了JRE的所有开发,调试和监视应用程序的工具。当要开发Java应用程序时,需要安装JDK(JDK中默认包含对应JRE)。简单来说,如果你是编写代码的Java应用开发人员,你将需要发安装JDK,如果只是想运行使用Java构建的应用程序,你只需要安装JRE即可。

关于他们兄弟三人的关系图大致如下:
JVM-JRE-JDK

二、编译型语言和解释型语言

计算机的高级编程语言类型,根据类型不同可以分为编译型解释型语言两种。从字面上来说,编译和解释都有翻译的意思,他们的区别就在于翻译的时机不同。

简单来说,假设现在我要读懂一本正在连载的外文书。那么我有两种方法可以完成这个目标。

  1. 等他的书全部写完了,然后中文译本出版之后我直接读全中文版的书,等他编写、翻译全部完成了我再读他这就叫编译型
  2. 我找来一个翻译,实时帮我解释这本书作者的每一句话,他每写一句我就能读懂一句,这样我就能在他写完书的一瞬间就已经理解了这本书的全部内容。这就叫解释型

两种方法各有优劣:

编译型解释型
优点执行速度高、消耗内存少安全性——这是互联网应用迫切需要的、代码量小、好写好调、可以跨平台
缺点代码量大、笨重难写、编译器在调试程序时提供不了多少帮助、一个编译型的程序可以访问内存的任何区域因而不安全、编译型程序是面向特定平台的因而是平台依赖的占用更多的内存和CPU资源(解释器是复杂的,智能的,大量消耗资源的程序并且它们会占用很多CPU周期和内存)、因为复杂和安全所以运行速度相对较慢

Java的特点

Java既有编译型的特点,又具有解释型的特点

Java特点
从.java文件到.class文件这其中经历的过程就叫做编译的过程,而真正执行的文件乃是.class文件。可以这么理解,在真正执行之前,代码经过了一次预编译,生成的代码就是介于最终机器码和Java源代码之前的一种字节码文件。

将.class文件加载到虚拟机的类装载器里面,这就将Java代码加载到JVM里面了。加载进来之后,会有一个字节码校验器,这个地方就是会告诉我们代码写得对不对,如果咱们的代码没有问题,那么然后就进入了解释的过程,代码就会经过解释器解释给操作系统,最后执行程序。

三、发展

随着计算机硬件的升级,解释型编译速度受硬件影响在逐渐变小,编译型和解释型语言的界限在逐渐变得模糊,但是Java运行的大致框架就是如此未来应该不会再有大的变化了。


总结

本文借鉴了部分博主的文章,在此统一致谢,如果您还喜欢,麻烦点个赞。 您的支持就是我更新的动力。

下一篇:Java代码的三板斧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远哥挺乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值