Java 教程
- Java - 首页
- Java - 概述
- Java - 历史
- Java - 特性
- Java 与 C++
- JVM - Java 虚拟机
- Java - JDK 与 JRE 与 JVM
- Java - Hello World 程序
- Java - 环境设置
- Java - 基本语法
- Java - 变量类型
- Java - 数据类型
- Java - 类型转换
- Java - Unicode 系统
- Java - 基本运算符
- Java - 注释
- Java - 用户输入
- Java - 日期和时间
Java 控制语句
- Java - 循环控制
- Java - 决策制定
- Java - If-else
- Java - Switch
- Java - For 循环
- Java - For-Each 循环
- Java - While 循环
- Java - do-while 循环
- Java - Break
- Java - Continue
面向对象编程
- Java - OOPs 概念
- Java - 对象和类
- Java - 类属性
- Java - 类方法
- Java - 方法
- Java - 变量作用域
- Java - 构造函数
- Java - 访问修饰符
- Java - 继承
- Java - 聚合
- Java - 多态
- Java - 重写
- Java - 方法重载
- Java - 动态绑定
- Java - 静态绑定
- Java - 实例初始化块
- Java - 抽象
- Java - 封装
- Java - 接口
- Java - 包
- Java - 内部类
- Java - 静态类
- Java - 匿名类
- Java - 单例类
- Java - 包装类
- Java - 枚举
- Java - 枚举构造函数
- Java - 枚举字符串
Java 内置类
Java 文件处理
Java 错误和异常
- Java - 异常
- Java - try-catch 块
- Java - try-with-resources
- Java - 多重捕获块
- Java - 嵌套 try 块
- Java - Finally 块
- Java - throw 异常
- Java - 异常传播
- Java - 内置异常
- Java - 自定义异常
Java 多线程
- Java - 多线程
- Java - 线程生命周期
- Java - 创建线程
- Java - 启动线程
- Java - 线程连接
- Java - 线程命名
- Java - 线程调度器
- Java - 线程池
- Java - 主线程
- Java - 线程优先级
- Java - 守护线程
- Java - 线程组
- Java - 关闭钩子
Java 同步
Java 网络
- Java - 网络
- Java - 套接字编程
- Java - URL 处理
- Java - URL 类
- Java - URLConnection 类
- Java - HttpURLConnection 类
- Java - Socket 类
- Java - 泛型
Java 集合
Java 接口
Java 数据结构
Java 集合算法
高级 Java
- Java - 命令行参数
- Java - Lambda 表达式
- Java - 发送电子邮件
- Java - Applet 基础
- Java - Javadoc 注释
- Java - 自动装箱和拆箱
- Java - 文件不匹配方法
- Java - REPL (JShell)
- Java - 多版本 Jar 文件
- Java - 私有接口方法
- Java - 内部类菱形运算符
- Java - 多分辨率图像 API
- Java - 集合工厂方法
- Java - 模块系统
- Java - Nashorn JavaScript
- Java - Optional 类
- Java - 方法引用
- Java - 函数式接口
- Java - 默认方法
- Java - Base64 编码解码
- Java - Switch 表达式
- Java - Teeing 收集器
- Java - 微基准测试
- Java - 文本块
- Java - 动态 CDS 存档
- Java - Z 垃圾收集器 (ZGC)
- Java - 空指针异常
- Java - 打包工具
- Java - 密封类
- Java - 记录类
- Java - 隐藏类
- Java - 模式匹配
- Java - 紧凑数字格式化
- Java - 垃圾回收
- Java - JIT 编译器
Java 杂项
- Java - 递归
- Java - 正则表达式
- Java - 序列化
- Java - 字符串
- Java - 进程 API 改进
- Java - 流 API 改进
- Java - 增强的 @Deprecated 注解
- Java - CompletableFuture API 改进
- Java - 流
- Java - 日期时间 API
- Java 8 - 新特性
- Java 9 - 新特性
- Java 10 - 新特性
- Java 11 - 新特性
- Java 12 - 新特性
- Java 13 - 新特性
- Java 14 - 新特性
- Java 15 - 新特性
- Java 16 - 新特性
Java API 和框架
Java 类引用
- Java - Scanner
- Java - 数组
- Java - 字符串
- Java - Date
- Java - ArrayList
- Java - Vector
- Java - Stack
- Java - PriorityQueue
- Java - LinkedList
- Java - ArrayDeque
- Java - HashMap
- Java - LinkedHashMap
- Java - WeakHashMap
- Java - EnumMap
- Java - TreeMap
- Java - IdentityHashMap
- Java - HashSet
- Java - EnumSet
- Java - LinkedHashSet
- Java - TreeSet
- Java - BitSet
- Java - Dictionary
- Java - Hashtable
- Java - Properties
- Java - Collection
- Java - Array
Java 有用资源
JDK、JRE 和 JVM 之间的区别
JDK、JRE 和 JVM 三者是相互依存的。JDK 是 Java 开发工具包,主要用于开发人员开发基于 Java 的应用程序。JRE 是 Java 运行时环境,Java 程序在其中运行。JDK 将 JRE 作为其不可分割的一部分。JRE 也可以单独安装在不需要进行开发的系统上,我们只需要运行基于 Java 的应用程序或执行 Java 程序即可。JVM 是一个规范,可以有不同的实现,只要它们符合规范即可。规范可以在以下链接中找到:https://docs.oracle.com。JRE 是 JVM 的一种实现。
什么是 JDK?
JDK 是 Java Development Kit 的缩写,它包含编译、调试和执行 Java 程序所需的所有工具、可执行文件和二进制文件。JDK 是平台相关的,即 Windows、Mac 和 Unix 系统具有单独的安装程序。JDK 包含 JVM 和 JRE,并完全负责代码执行。它是 JDK 的版本,代表了 Java 的版本。
什么是 JRE?
JRE 是 Java Runtime Environment 的缩写,它是 JVM 的实现,即 JVM 中定义的规范被实现并创建了相应的代码执行环境。JRE 主要包含 Java 二进制文件和其他执行程序的类,例如物理存在的 JVM。除了 Java 二进制文件外,JRE 还包含各种部署技术、与执行代码交互的用户界面、一些用于不同功能的基本库以及语言和 基于实用程序的库。
什么是 JVM?
JVM 是 Java Virtual Machine 的缩写,它是一个规范,提供了一个可以执行 Java 字节码的运行时环境,即它是抽象的,其实现独立于算法的选择,并由 Sun 和其他公司提供。JVM 负责将字节码转换为特定于机器的代码。它还可以运行用其他语言编写并编译成 Java 字节码的程序。JVM 执行以下任务:加载代码、验证代码、执行代码以及提供运行时环境。
JDK、JRE 和 JVM 之间的区别
以下是 JDK、JRE 和 JVM 之间的重要区别:
序号 | 关键 | JDK | JRE | JVM |
---|---|---|---|---|
1 | 定义 | JDK(Java 开发工具包)是一个软件开发工具包,用于开发 Java 应用程序。除了 JRE 之外,JDK 还包含许多开发工具(编译器、JavaDoc、Java 调试器等)。 | JRE(Java 运行时环境)是 JVM 的实现,被定义为一个软件包,它提供了 Java 类库以及 Java 虚拟机 (JVM) 和其他组件来运行用 Java 编程语言编写的应用程序。 | JVM(Java 虚拟机)是一个抽象的机器,它是平台相关的,具有三个概念:规范,描述 JVM 实现要求的文档;实现,满足 JVM 要求的计算机程序;实例,执行 Java 字节码的实现,提供执行 Java 字节码的运行时环境。 |
2 | 主要功能 | JDK 主要用于代码执行,其主要功能是开发。 | 另一方面,JRE 主要负责创建代码执行环境。 | 另一方面,JVM 指定所有实现,并负责向 JRE 提供这些实现。 |
3 | 平台独立性 | JDK 是平台相关的,即不同的平台需要不同的 JDK。 | 与 JDK 一样,JRE 也是平台相关的。 | JVM 是平台无关的。 |
4 | 工具 | 由于 JDK 负责主要的开发工作,因此它包含用于开发、调试和监控 Java 应用程序的工具。 | 另一方面,JRE 不包含编译器或调试器等工具。相反,它包含 JVM 运行程序所需的类库和其他支持文件。 | JVM 不包含软件开发工具。 |
5 | 实现 | JDK = Java 运行时环境 (JRE) + 开发工具 | JRE = Java 虚拟机 (JVM) + 运行应用程序的库 | JVM = 仅用于执行 Java 字节码的运行时环境。 |