1_JDK、JRE 和 JVM
JDK 和 JRE
1、JDK 的卸载与安装
1.1 卸载 JDK
- 删除 java 的安装目录
- 删除 JAVA_HOME
- 删除 path 下关于Java 的目录
- cmd窗口测设 java-version
1.2 安装 JDK
- 百度搜索 JDK8,找到下载地址
- 同意协议
- 下载电脑对应版本
- 双击安装JDK
- 记住安装路径 C:\Program Files\Java\jdk1.8.0_162
- 配置环境变量(告诉系统我的程序在哪里)
- 我的电脑 --> 右键 -->属性
- 环境变量 -->JAVA_HOME
- 配置path变量 在系统变量里面去找(% 表示引用,引用一个路径,)
- 测试是否配置成功
- 打开 cmd
- 输入 java -version
- 显示版本信息即成功
新建JAVA_HOME
配置path变量(两个)
测试
2、JDK 、JRE 和 JVM 之间的关系
-
JDK 和 JRE 之间的关系?
答:
JDK (Java Development Kit ):Java 开发工具包,提供了 Java 的开发环境和运行环境。
JRE (Java Runtime Environment ):Java 运行环境,为 Java 的运行提供了所需环境。
JVM (Java Virtual Machine ) : Java 虚拟机,它是整个java实现跨平台的最核心的部分。
关系:
JDK 包含了 JRE , 同时包含了编译 Java 源码的编译器 Javac ,还包含了很多Java程序调试和分析工具。
简单来说就是,如果你要运行编译后的 java 程序也就是 .class 文件,只需安装 JRE 就可以了,如果你需要编写或编译 Java 程序,就需要安装 JDK 了。
现在我们对三者有了一个大概的了解,那么再深入的了解一下 !
- 就行这是我安装的 JDK1.8,截图如下,为什么有两个 JRE 文件夹? (点此直接看总结)
图一
图二
可以发现两个 JRE 文件夹, 细看之下内容基本是一样的,如果只是 java 程序的使用者,用图一下的 JRE 就好了。
JDK 中的 JRE 目录是自带的,你如果安装了JDK必然会有一个 JRE ,问题来了为什么会有两套 JRE 呢?
举个例子(为啥有两套 JRE):在任意文件夹下运行 cmd 键入 javac
报错的原因就是输入的javac的命令不是去JDK中bin目录去找的javac.exe,而是去JDK中lib目录中的tools.jar中com.sun.tools.javac.Main中执行,因此javac.exe只是一个包装器(Wrapper),存在的目的是为了让开发者免于输入过长的指命。这个时候发现JDK里的工具几乎是用Java所编写,同属于Java应用程序,因此要使用JDK所附的工具来开发Java程序,所以自身需要附一套JRE才能运行。上图中与 jdk 同级目录下的 jre 就是用来运行一般Java程序用的。
再总结一下:
JDK 里面的工具也是用 JAVA 编写的,它们本身运行的时候也需要一套 JRE,而C:/Program Files/Java/目录下的 JRE 是用来执行我们自己编写的 JAVA 程序。当然,两套JRE中的任何一套都可以用来执行我们自己编写的JAVA程序,但是 JDK 里面的工具只能由 JDK 目录下的JRE来执行。
-
说一下 JVM(问题?:为什么Java程序可以实现一次编译处处运行? 那就得说说什么是jvm了)
它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,class文件并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。JVM+Lib=JRE
-
JDK下面的文件夹作用
在 JDK 目录下面有五个文件夹 ,一个 src 类库源码压缩包和几个声明文件,其他五个文件夹分别是:bin、db、include、lib、 jre, ( db 这个文件看业务需求)
- bin:最主要的是编译器 (javac.exe)
- include:java 和 JVM 交互用的头文件
- lib:常用类库
- jre:java运行环境
- db:jdk从1.6之后内置了Derby数据库,它是是一个纯用Java实现的内存数据库,属于Apache的一个开源项目。用Java实现的,所以可以在任何平台上运行;另外一个特点是体积小,免安装,只需要几个小jar包就可以运行了。
总结:
总的来说,JDK包含JRE,而JRE包含JVM,JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。
Eclipse、IntelliJ IDEA等其他IDE有自己的编译器而不是用JDK bin目录中自带的。
本文来自博客园,作者:走马!,转载请注明原文链接:https://www.cnblogs.com/zou-ma/p/15458117.html
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术