当前位置: 首页 > news >正文

Java 每日一刊(第2期):搭建开发环境

文章目录

    • JVM、JRE、JDK
      • JVM(Java Virtual Machine,Java 虚拟机)
      • JRE(Java Runtime Environment,Java 运行时环境)
      • JDK(Java Development Kit,Java 开发工具包)
      • JVM、JRE、JDK 的关系
    • 安装 JDK
      • 下载 JDK
      • 配置环境变量
    • 本期小知识

JVM、JRE、JDK

JVM(Java Virtual Machine,Java 虚拟机)

JVM 是 Java 平台的核心组件之一,它负责执行 Java 字节码(bytecode)。字节码是 Java 编译器生成的中间代码,独立于具体的硬件平台。JVM 的作用是将这些字节码转换为机器指令,使程序能够在不同的操作系统上运行。

JVM 的主要功能:

  • 字节码执行:将编译后的 .class文件(字节码)解释或编译为机器代码,以便在操作系统上运行。
  • 跨平台支持:通过 JVM,Java 程序可以在 Windows、Linux、MacOS 等不同操作系统上运行,这也是 Java 提倡的“一次编写,随处运行”(Write Once, Run Anywhere,WORA)的基础。
  • 垃圾回收:JVM 自动管理内存分配和回收,确保程序的内存高效使用。
  • 内存管理:JVM 负责程序的内存分配,包括栈(stack)、堆(heap)等区域的管理。

简单来说,JVM 是 Java 应用程序的运行引擎,它使得 Java 程序可以在不同的平台上运行,而无需重新编译。

JRE(Java Runtime Environment,Java 运行时环境)

JRE 是一个用于运行 Java 程序的环境,它包含 JVM 和 Java 核心类库。JRE 提供了运行 Java 应用程序所需的所有组件,但不包含开发工具(如编译器)。

JRE 的组成:

  • JVM:负责执行 Java 字节码的虚拟机。
  • 类库:Java 核心类库,包含了运行 Java 应用所需的各种标准类,如输入输出(I/O)、网络、集合、并发等。
  • 运行时资源:支持 Java 应用程序的其他必要资源。

JRE 是用户运行 Java 应用程序所需的环境。如果你只是想运行 Java 应用,而不是开发或编译 Java 代码,安装 JRE 即可。

JDK(Java Development Kit,Java 开发工具包)

JDK 是 Java 开发工具包,是用于开发 Java 应用程序的完整软件开发环境。JDK 包含 JRE 以及一系列开发工具,包括 Java 编译器、调试工具等。

JDK 的组成:

  • JRE:包含 JVM 和核心类库,用于运行 Java 程序。
  • 编译器(javac):将 Java 源代码(.java 文件)编译为字节码(.class 文件)。
  • 开发工具:如 javap(字节码反汇编器)、jdb(Java 调试器)、jar(打包工具)等,用于编译、调试和打包 Java 应用程序。

JDK 是开发人员用来编写、编译和调试 Java 应用程序的工具包。如果你是 Java 开发者,你需要安装 JDK。

JVM、JRE、JDK 的关系

JDK = JRE + 开发工具 (编译器、调试器等)

JRE = JVM + 类库和支持文件

JVM = 执行 Java 字节码的虚拟机

安装 JDK

下载 JDK

进入 JDK 官网下载页,选择一个长期支持的版本下载,本文以 JDK21 为例。

本文下载的是压缩版。JDK 下载成功之后将压缩文件解压到一个非中文目录。

配置环境变量

使用 WIN + r 快捷键调出运行窗口,在运行窗口输入 sysdm.cpl 命令并执行,调出系统属性窗口

切换至高级面板,点击环境变量

在系统变量新建 JAVA_HOME 变量

%JAVA_HOME%\bin 添加到 PATH 变量中

打开 CMD 命令行,执行 java --version 命令,出现以下信息表示环境变量配置成功

至此,Java 开发环境已搭建完成。

本期小知识

Java 的 JVM(Java 虚拟机) 是一项创新,它将 Java 编译成字节码,而不是编译成特定平台的机器码。这让 Java 程序可以在任何支持 JVM 的平台上运行,不受操作系统的限制。这是 Java 能跨平台运行的重要原因。

http://www.lryc.cn/news/434186.html

相关文章:

  • 探索EasyCVR与AI技术深度融合:视频汇聚平台的新增长点
  • IBM中国研发部调整:全球化与本土化的新平衡
  • C++入门基础篇
  • Qt QListWidget 代码范例,以及Qt 天坑:setStyleSheet失效问题
  • Unity AnimationClip详解(1)
  • 在这12种场景下会使Spring事务失效--注意防范
  • SOPC:Nios II Processor -> Vectors
  • golang学习笔记11——Go 语言的并发与同步实现详解
  • 关于汽车加油是加200还是加满的思考
  • C# 去掉字符串最后一个字符的5种方法
  • [Redis] Redis中的String类型
  • Transiting from CUDA to HIP(三)
  • 基于SpringBoot+Vue+MySQL的垃圾分类回收管理系统
  • 游戏的3C,Al
  • 深度学习基础案例4--运用动态学习率构建CNN卷积神经网络实现的运动鞋识别(测试集的准确率84%)
  • tekton pipeline workspaces
  • [git操作] git创建仓库上传github报错
  • 飞牛fnOS安装KDE桌面
  • 运维Tips | 如何安全的移除系统中旧的Linux内核?
  • 基于JAVA+SpringBoot+Vue的工程教育认证的计算机课程管理平台
  • 软件质量保障:故障演练介绍
  • Vue3可编辑表格插件
  • RedisTemplate操作Redis
  • Web安全:SQL注入实战测试.(扫描 + 测试)
  • 猜测、实现 B 站在看人数
  • 网络编程(UDP)
  • CENet及多模态情感计算实战(论文复现)
  • 备战秋招60天算法挑战,Day34
  • vue实现评论滚动效果
  • iphone13 不升级IOS使用广电卡