JDK,JRE和JVM之间的区别,Java程序的内部细节

好多开发者学习 Java 编程有若干个年头了,但真正了解JDK,JRE和JVM之间的区别应该不多,别不服,大概是因为平时都是在Coding <=> Bug,没有时间去阅读相关资料吧。
了解JDK,JRE和JVM之间的区别在Java中很重要,在这里简要概述了JVM。

如果要了解Java虚拟机的详细知识,请转到下一页。 首先,让我们来看看JDK,JRE和JVM之间的基本区别。

JVM
JVM(Java虚拟机)是一个抽象机器。它是一个提供可以执行Java字节码的运行时环境的规范。
JVM可用于许多硬件和软件平台。JVM,JRE和JDK是平台相关的,因为每个OS的配置不同。 但是,Java是平台无关的。

JVM执行以下主要任务:
加载代码
验证代码
执行代码
提供运行时环境

JRE
JRE是Java Runtime Environment的缩写。它用于提供运行时环境。它是JVM的实现。它是实际存在的。它包含一组库和JVM在运行时使用的其他文件。
Sun Micro Systems以外的其他公司也积极发布JVM的实施(实现)。在这里插入图片描述
JDK
JDK是Java Development Kit的缩写,它是实际上存在的。它包含JRE+开发工具。如下图所示 -
在这里插入图片描述

JDK包裹了JRE在内的东西(rt.jar是JRE自带的基础包)还加入了终端对Java代码编译、运行等功能。是面向开发者的。

编译时会发生什么?
在编译时,java文件由Java Compiler编译(它不与操作系统交互),并将java代码转换为字节码,如下图中所示 -

在这里插入图片描述

运行时会发生什么?
在运行时,执行以下步骤:
在这里插入图片描述

类加载器(Classloader):是用于加载类文件的JVM的子系统。
字节码校验器(Bytecode Verifier):检查代码片段中是否存在违反对象访问权限的非法代码。
解释器(Interpreter):读取字节码流然后执行指令(运行在硬件和运行环境中(不同OS就是不同运行环境))。

Java小提问:

1、可以使用其他名称而不是类名来保存java源文件?
如果类不是使用public修辞符,这是可以的。一个.java文件中只能有一个public的class类。在下图中解释:
在这里插入图片描述
编译:
javac Hard.java
执行:
java Simple
提示:如果使用 public class Simple{} 这样来定义类是不可以的。因为都需要有入口方法(main)

2、能在一个java源文件中有多个类吗?
这是可以的,如下图所示:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值