Java基础入门之JDK、JRE、JVM关系详解及开发流程

 更新时间:2026年01月29日 10:46:34   作者:cyforkk  
Java开发中的JDK、JRE和JVM是三个至关重要的概念,它们构成了Java应用程序的运行基础,这篇文章主要介绍了Java基础入门之JDK、JRE、JVM关系详解及开发流程的相关资料,需要的朋友可以参考下

1. JDK, JRE, JVM 的关系(核心重点)

它们是 包含关系,从下到上层层嵌套,共同支撑Java程序的运行与开发。

  • JVM (Java Virtual Machine):Java虚拟机
    • 是Java程序的“运行引擎”,负责将字节码翻译成底层系统可执行的机器码。
    • 核心作用是屏蔽操作系统差异,实现“一次编写,到处运行”(Write Once, Run Anywhere)。
    • 单独存在无法运行程序,因为它缺少核心类库(如java.lang包)。
  • JRE (Java Runtime Environment):Java运行环境
    • 公式:JRE = JVM + 核心类库 (Libs)
    • 作用:提供运行Java程序所需的基础环境,包括JVM和标准类库。
    • 适用场景:仅需要运行已编译的Java程序(如运行Minecraft客户端)。
  • JDK (Java Development Kit):Java开发工具包
    • 公式:JDK = JRE + 开发工具 (javac, java, jdb等)
    • 作用:为开发者提供编译、调试、文档生成等工具,是开发Java程序的必备环境。

2. Java 开发步骤

Java是半编译半解释型语言,标准开发流程分为三步,通过mermaid流程图直观展示:

  1. 编写 (Write)
    • 创建.java源文件(如HelloWorld.java),编写人类可读的Java代码。
  2. 编译 (Compile)
    • 使用javac命令将源代码编译为.class字节码文件(如javac HelloWorld.java)。
    • 字节码是JVM可识别的中间代码,与操作系统无关。
  3. 运行 (Run)
    • 使用java命令启动JVM并加载字节码(如java HelloWorld注意不加.class后缀)。
    • JVM通过解释器或JIT(Just-In-Time)编译器将字节码转换为本地机器码执行。

3. 注释 (Comments)

注释是给程序员看的说明,Java编译器会忽略。共有三种类型:

  • 单行注释//

    // 这是一个单行注释,仅限一行
    int a = 10;
    
  • 多行注释/* ... */

    /* 这是一个多行注释
       可以跨行书写
       不会被编译执行 */
    
  • 文档注释/** ... */(重要)

    • 通常用于类、方法、变量上方,可通过javadoc命令生成HTML文档。
    /**
     * 这是一个文档注释
     * @author 作者名
     * @version 1.0
     */
    public class Demo { }
    

4. Java 语言的优缺点

优点

  1. 跨平台性:JVM屏蔽底层差异,实现“一次编写,到处运行”。
  2. 面向对象:支持封装、继承、多态,适合开发大型企业级系统。
  3. 健壮性:强类型机制、异常处理、自动垃圾回收(GC),减少内存泄漏风险。
  4. 生态强大:拥有Spring、大数据框架(如Hadoop)、海量开源库,功能覆盖全面。
  5. 多线程支持:内置多线程机制,易于开发高并发应用。

缺点

  1. 语法繁琐:相比Python/Go,需编写更多“样板代码”(如Getter/Setter,可通过Lombok插件缓解)。
  2. 启动慢:JVM冷启动较慢,不适合轻量级脚本或Serverless场景。
  3. 内存占用高:Java应用通常比C++应用占用更多内存。

5. JVM 的核心原理(补充)

JVM运行时将内存划分为不同区域,核心区域包括:

  1. 堆 (Heap)
    • 存放所有new出来的对象实例,是GC的主要工作区域。
  2. 栈 (Stack)
    • 存放局部变量和方法调用,方法执行完毕后栈内存自动释放。
  3. 方法区 (Method Area)
    • 存放类的元数据、常量池、静态变量等信息。

总结

Java的跨平台性依赖于JVM的“翻译”能力——JVM针对不同操作系统提供对应版本,将统一的.class字节码转换为本地机器码。理解JDK、JRE、JVM的关系,以及Java开发流程和JVM内存结构,是掌握Java基础的关键。这些知识不仅帮助初学者建立系统认知,也为后续学习高级特性(如GC调优、多线程)打下坚实基础。

到此这篇关于Java基础入门之JDK、JRE、JVM关系详解及开发流程的文章就介绍到这了,更多相关JDK、JRE、JVM关系详解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring中的@Autowired注解深入解析与实战指南

    Spring中的@Autowired注解深入解析与实战指南

    本文介绍了Spring框架中的@Autowired注解,详细讲解了其基本用法、高级用法以及实际应用场景,通过@Autowired注解,Spring容器可以自动将依赖的Bean注入到目标Bean中,从而简化代码并提高可维护性,需要的朋友可以参考下
    2024-11-11
  • Java之泛型在使用过程全解析

    Java之泛型在使用过程全解析

    这篇文章介绍了泛型的基本概念及其在Java中的应用,泛型通过统一类型参数消除了强转问题,广泛应用于集合类(如List、Set、Map)中,确保元素类型一致,文章还详细解释了泛型类、泛型方法、子类继承、类型限制(上限和下限)、泛型擦除以及桥接方法等关键概念
    2025-09-09
  • Spring中的BeanFactory对象实例化工厂详解

    Spring中的BeanFactory对象实例化工厂详解

    这篇文章主要介绍了Spring中的BeanFactory对象实例化工厂详解,BeanFactory及其子类是Spring IOC容器中最重要的一个类,BeanFactory由类名可以看出其是一个Bean工厂类,其实它确实是一个Bean工厂类,完成Bean的初始化操作,需要的朋友可以参考下
    2023-12-12
  • mybatis一对多两种mapper写法实例

    mybatis一对多两种mapper写法实例

    这篇文章主要介绍了mybatis一对多两种mapper写法实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Java的线程阻塞、中断及优雅退出方法详解

    Java的线程阻塞、中断及优雅退出方法详解

    这篇文章主要介绍了Java的线程阻塞、中断及优雅退出方法详解,Java中的线程阻塞是指当一个线程无法继续执行时,它会进入阻塞状态,直到某个条件满足后才能继续执行,线程阻塞可以通过多种方式实现,需要的朋友可以参考下
    2023-10-10
  • Java中循环冗余校验(CRC32)的实现

    Java中循环冗余校验(CRC32)的实现

    CRC校验实用程序库在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段,下面这篇文章主要给大家介绍了关于Java中循环冗余校验(CRC32)实现的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10
  • 简单了解Spring Framework5.0新特性

    简单了解Spring Framework5.0新特性

    这篇文章主要介绍了简单了解Spring Framework5.0新特性,涉及了核心框架修订,核心容器更新,使用Kotlin进行函数式编程等几个方面的介绍,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Java实现图形界面计算器

    Java实现图形界面计算器

    这篇文章主要为大家详细介绍了Java实现图形界面计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • SpringBoot如何进行业务校验实例详解

    SpringBoot如何进行业务校验实例详解

    这篇文章主要给大家介绍了关于SpringBoot如何进行业务校验的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • Java通用BouncyCastle实现的DES3加密的方法

    Java通用BouncyCastle实现的DES3加密的方法

    这篇文章主要介绍了Java通用BouncyCastle实现的DES3加密的方法,本文给大家介绍的非常详细,对大家的学习或工作,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12

最新评论