滚雪球学Java(03):你知道JDK、JRE和JVM的不同吗?看这里就够了!

简介: 【2月更文挑战第12天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!

在这里插入图片描述


🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!


前言

  Java是一种跨平台的编程语言,这意味着Java代码可以在不同的操作系统和硬件上运行。但是,为了实现这一点,Java开发人员需要理解JDK、JRE和JVM之间的区别和联系。

摘要

  本文将详细介绍JDK、JRE和JVM之间的关系和作用。我们将通过介绍它们的定义、特点、功能和用途,来帮助读者更好地理解Java开发环境和Java程序的编译和运行过程。

正文

什么是JDK?

  JDK是Java Development Kit的缩写,它是Java开发工具包的标准实现。JDK包含了开发Java应用程序所需的所有组件,包括Java编译器、Java虚拟机、Java类库和调试工具等。JDK提供了Java程序设计和开发的基本工具和环境。

什么是JRE?

  JRE是Java Runtime Environment的缩写,它是Java运行时环境的标准实现。JRE包含了执行Java应用程序所需的所有组件,包括Java虚拟机、Java类库和支持文件等。JRE提供了Java程序执行的基本工具和环境。

什么是JVM?

  JVM是Java Virtual Machine的缩写,它是Java虚拟机的标准实现。JVM是Java程序的运行时环境,它可以在不同的操作系统和硬件上运行Java程序。JVM负责解释Java字节码文件,并将其转换为特定的机器代码。JVM还管理Java应用程序的内存分配和垃圾回收等任务。

JDK、JRE和JVM之间的关系可以用下图表示:

     +---------------------+
     |        Java         |
     +---------------------+
               |
               |
     +---------------------+
     |         JDK         |
     +---------------------+
               |
               |
     +---------------------+
     |         JRE         |
     +---------------------+
               |
               |
     +---------------------+
     |         JVM         |
     +---------------------+

JDK、JRE和JVM的特点

  • JDK是Java开发环境,包含编译器、调试工具等,而JRE和JVM只是Java程序的运行时环境。
  • JRE和JVM是Java程序的运行时环境,它们都可以在不同的操作系统和硬件上运行Java程序。
  • JVM是在JRE的基础上添加了解释器和JIT编译器等组件,可以将Java字节码动态地转换为机器代码,提高Java程序的执行效率。

JDK、JRE和JVM的功能和用途

  • JDK是Java开发环境,提供了Java程序的编译和调试工具等,可以用于开发Java应用程序。
  • JRE是Java运行时环境,提供了Java程序的运行环境,可以用于执行Java应用程序。
  • JVM是Java虚拟机,负责解释Java字节码文件,并将其转换为特定的机器代码,用于在不同的操作系统和硬件上运行Java程序。

代码方法介绍

示例1:Hello World

package com.example.javase.se;

/**
 * @author bug菌
 * @version 1.0
 * @date 2023/10/8 17:19
 */
public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello World!");
    }

}

该程序会在控制台输出"Hello World!"。

实际执行结果如下:

在这里插入图片描述

代码解析:

这段代码是一个简单的Java程序,它定义了一个名为HelloWorld的类。在程序的main方法中,使用System.out.println()方法打印了一条输出语句"Hello World!"。

这段代码的作用是在控制台输出"Hello World!",展示了Java程序的基本结构和语法。当我们运行这段代码时,控制台会输出"Hello World!"这个字符串。

示例2:计算圆的面积

package com.example.javase.se.day03;

import java.util.Scanner;

/**
 * @author bug菌
 * @version 1.0
 * @date 2023/10/9 11:09
 */
public class CircleArea {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        System.out.println("请输入半径:");
        double radius = reader.nextDouble();
        double area = Math.PI * radius * radius;
        System.out.println("圆的面积是:" + area);
    }
}

该程序通过输入半径,计算圆的面积,并输出结果。

示例执行结果如下:

在这里插入图片描述
代码解析:

该代码实现了一个计算圆的面积的程序。

首先,导入了java.util.Scanner类,以便从控制台读取用户输入。
然后,定义了一个public class CircleArea,其中包含了一个main方法,作为程序的入口点。

在main方法中,创建了一个Scanner对象reader,用于读取用户输入。
然后,使用System.out.println方法输出提示信息,要求用户输入圆的半径。
接着,使用reader.nextDouble方法读取用户输入的半径,并将其赋给变量radius。
计算圆的面积的公式为Math.PI radius radius,将计算结果赋给变量area。
最后,使用System.out.println方法输出圆的面积。

代码说明:

  1. 该程序使用了Scanner类来读取用户输入,因此需要导入java.util.Scanner。
  2. Math.PI是java.lang.Math类中的一个常量,代表圆周率π。通过Math.PI可以获取圆周率的近似值。
  3. 代码中的注释使用了Javadoc格式,并对作者、版本号和日期进行了注释。

测试用例

我们可以通过以下测试用例来验证Java应用程序的正确性:

  • 对于示例1,程序输出"Hello World!",则说明程序功能正常。
  • 对于示例2,输入半径为3,程序输出28.274333882308138,则说明程序功能正常。

全文小结

  本文介绍了JDK、JRE和JVM之间的关系和作用。我们从定义、特点、功能和用途等方面详细介绍了它们的作用和区别,并以示例程序和测试用例来验证其正确性。理解JDK、JRE和JVM之间的关系和使用方法,对于Java程序的开发和运行非常重要。

附录源码

  如上涉及所有源码均已上传同步在「Gitee」,提供给同学们一对一参考学习,辅助你更迅速的掌握。

☀️建议/推荐你


  无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Java」,bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门Java编程,就像滚雪球一样,越滚越大,指数级提升。

  最后,如果这篇文章对你有所帮助,帮忙给作者来个 一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。
  同时欢迎大家关注公众号: 「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。

📣关于我

  我是bug菌,CSDN | 掘金 | infoQ | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。


目录
相关文章
|
15天前
|
Java
安装JDK18没有JRE环境的解决办法
安装JDK18没有JRE环境的解决办法
|
19天前
|
存储 缓存 监控
【Java面试题汇总】JVM篇(2023版)
JVM内存模型、双亲委派模型、类加载机制、内存溢出、垃圾回收机制、内存泄漏、垃圾回收流程、垃圾回收器、G1、CMS、JVM调优
【Java面试题汇总】JVM篇(2023版)
|
1月前
|
安全 前端开发 Java
浅析JVM invokedynamic指令与Java Lambda语法的深度融合
在Java的演进历程中,Lambda表达式无疑是Java 8引入的一项革命性特性,它极大地简化了函数式编程在Java中的应用,使得代码更加简洁、易于阅读和维护。而这一切的背后,JVM的invokedynamic指令功不可没。本文将深入探讨invokedynamic指令的工作原理及其与Java Lambda语法的紧密联系,带您领略这一技术背后的奥秘。
18 1
|
2月前
|
C# Windows 开发者
当WPF遇见OpenGL:一场关于如何在Windows Presentation Foundation中融入高性能跨平台图形处理技术的精彩碰撞——详解集成步骤与实战代码示例
【8月更文挑战第31天】本文详细介绍了如何在Windows Presentation Foundation (WPF) 中集成OpenGL,以实现高性能的跨平台图形处理。通过具体示例代码,展示了使用SharpGL库在WPF应用中创建并渲染OpenGL图形的过程,包括开发环境搭建、OpenGL渲染窗口创建及控件集成等关键步骤,帮助开发者更好地理解和应用OpenGL技术。
95 0
|
2月前
|
C# 开发者 Windows
震撼发布:全面解析WPF中的打印功能——从基础设置到高级定制,带你一步步实现直接打印文档的完整流程,让你的WPF应用程序瞬间升级,掌握这一技能,轻松应对各种打印需求,彻底告别打印难题!
【8月更文挑战第31天】打印功能在许多WPF应用中不可或缺,尤其在需要生成纸质文档时。WPF提供了强大的打印支持,通过`PrintDialog`等类简化了打印集成。本文将详细介绍如何在WPF应用中实现直接打印文档的功能,并通过具体示例代码展示其实现过程。
133 0
|
2月前
|
数据库 C# 开发者
WPF开发者必读:揭秘ADO.NET与Entity Framework数据库交互秘籍,轻松实现企业级应用!
【8月更文挑战第31天】在现代软件开发中,WPF 与数据库的交互对于构建企业级应用至关重要。本文介绍了如何利用 ADO.NET 和 Entity Framework 在 WPF 应用中访问和操作数据库。ADO.NET 是 .NET Framework 中用于访问各类数据库(如 SQL Server、MySQL 等)的类库;Entity Framework 则是一种 ORM 框架,支持面向对象的数据操作。文章通过示例展示了如何在 WPF 应用中集成这两种技术,提高开发效率。
41 0
|
5天前
|
安全 Java 调度
Java编程时多线程操作单核服务器可以不加锁吗?
Java编程时多线程操作单核服务器可以不加锁吗?
18 2
|
9天前
|
存储 缓存 Java
java线程内存模型底层实现原理
java线程内存模型底层实现原理
java线程内存模型底层实现原理
|
13天前
|
缓存 Java 应用服务中间件
Java虚拟线程探究与性能解析
本文主要介绍了阿里云在Java-虚拟-线程任务中的新进展和技术细节。
|
10天前
|
Java 开发者
Java中的多线程基础与应用
【9月更文挑战第22天】在Java的世界中,多线程是一块基石,它支撑着现代并发编程的大厦。本文将深入浅出地介绍Java中多线程的基本概念、创建方法以及常见的应用场景,帮助读者理解并掌握这一核心技术。