3分钟带你深入浅出Java中的JDK,JRE和JVM

在学习java的过程中,我们经常会看到JDK、JRE、JVM三者的频繁出现,今天作者就带领大家用最少的文字揭揭它们的的老底。

以下几张图是本章浓缩精华,如果阅读完后可以看懂了,就代表已经对它们有了个基本的了解。

首先这三个东西都是缩写,那我们得知道他们的全称吧,以下就是我们的第一个问题。

一、了解JDK,JRE和JVM的全称

1.Java Development Kit 软件开发工具包

注:其中kit包含成套工具的意思

*JDK=JRE+java开发工具

JDK 包含了Java 运行时环境(JRE) 、Java 编译器(javac)、Java 类库、调试器等工具。

1)什么是java开发工具

如集成开发环境:IntelliJ IDEA、编译工具:javac、调试器:JDB——java debugger 等等

2)JDK的用途

JDK 用于开发 Java 应用程序和 Applet。

开发人员通常会使用 JDK 来编写、编译和调试 Java 程序。

2.Java Runtime Environment 运行环境

注:runtime指的是运行时间

*JRE=JVM+Java程序所需的核心类库

1)一句话的引入

如果用户只需要运行 java 程序而不需要进行开发,则只需安装 JRE 即可

2)那么如何理解上述这句话?

在计算机上执行已经编写好的 Java 程序,而不是在进行程序开发或编写代码。这通常涉及将已经编写好的 Java 源代码文件(.java 文件)编译成 Java 字节码文件(.class 文件),然后通过 Java 虚拟机(JVM)来执行这些字节码文件。

具体步骤如下:

1. 编写并编译 Java 程序:首先,程序员需要编写 Java 源代码并将其保存为 .java 文件。然后使用 Java 编译器(javac)将源代码编译成 Java 字节码文件(.class 文件)。

2. 执行 Java 程序:一旦编译得到了 Java 字节码文件,就可以通过 Java 虚拟机(JVM)来执行这些字节码文件。在命令行中,可以使用 `java` 命令来运行 Java 程序,例如:`java ClassName`,其中 ClassName 是包含主方法(主程序入口)(public static void main(String[] args))的类名。

3. 运行环境配置:在运行 Java 程序之前,需要确保计算机上已经安装了 Java 运行环境(JRE)或者 Java 开发工具包(JDK)。JRE 包含了运行 Java 应用程序所需的 Java 虚拟机和类库,而 JDK 还包含了编译器等开发工具。

这种方式常见于用户使用第三方开发的 Java 应用程序,或者在服务器上部署运行 Java 程序等场景。

3.Java Virtual Machine 虚拟机

1)为什么需要JVM

JVM 负责将 Java 字节码翻译成特定平台的机器码,并在特定平台上执行。

2)Java的跨平台机制

Java 的跨平台特性是由 JVM 实现的,因为相同的字节码可以在不同的操作系统上运行。

所以,为什么呢?

Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

——简单来说JVM是用来解析和运行Java程序的。

在上述内容中,我们提到了源代码和字节码,那么接下来就来为大家介绍介绍它们的相关知识

二、什么是源代码,什么是字节码

1.示例

假设有一个简单的 Java 类,名为 `HelloWorld`,用于打印一条简单的问候语。这是 Java 源代码的示例:

public class HelloWorld {

    public static void main(String[] args) {

        System.out.println("Hello, World!");

    }

}

以上是 Java 源代码,保存在名为 `HelloWorld.java` 的文件中。这段代码定义了一个名为 `HelloWorld` 的类,其中包含一个静态的 `main` 方法,用于在控制台输出 `"Hello, World!"`。

2.从源代码到字节码的具体流程

接下来,我们需要使用 Java 编译器来编译这个源代码文件,将其转换为 Java 字节码。在命令行中,可以执行以下命令:

javac HelloWorld.java

执行上述命令后,将生成一个名为 `HelloWorld.class` 的字节码文件,这是编译后的 Java 字节码文件。

最后,我们可以使用 Java 虚拟机(JVM)来执行这个字节码文件,输出 "Hello, World!" 这句问候语。在命令行中,可以执行以下命令:

java HelloWorld

这将在控制台上输出:

Hello, World!

这个示例说明了 Java 源代码和字节码之间的转换过程。源代码是程序员编写的高级语言代码,而字节码是由编译器生成的中间代码,可以在 Java 虚拟机上执行。源代码是面向程序员的,而字节码是面向虚拟机的。

三、三者之间的关系与联系

由图可知,它们三者之间存在着类似集合中子集的关系。

简单来说,JDK 是用于开发 Java 程序的工具包,JRE 是用于运行 Java 程序的环境,而 JVM 则是 Java 程序在运行时的执行引擎。

当你开始编写 Java 程序时,你会使用 JDK 来编写、编译和运行程序。当你将程序交给用户使用时,用户需要安装 JRE 来运行程序,而程序最终在 JVM 上执行。这三者共同构成了 Java 开发和运行的基础设施。

四、番外:简单介绍一下javac

javac 是 Java 编译器的命令行前端,它将 Java 源代码作为输入,并将其转换为可由 Java 虚拟机(JVM)执行的字节码文件。它采用的是即时编译(Just-In-Time Compilation,JIT)的方式,将高级 Java 代码转换为底层机器代码。

总的来说,`javac` 是 Java 编译器,用于将 Java 源代码编译成字节码文件,以便在 Java 虚拟机上执行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值