文章目录
JDK与JRE的区别(JDK17的安装包在文章最上方可自取)
JDK
在我们学习java语言的时候,通常要去官网下载JDK安装包,只有安装了JDK才能让Java程序在计算机中跑起来。那你是否也想过,为什么安装JDK会让Java程序跑起来呢?
下面我们一起快速了解一下——什么是JDK
![](https://i-blog.csdnimg.cn/direct/ba4cad3ad0c54f3eaedf9d3ac5515402.png)
简述JDK
- JDK的全名为 Java Development Kit :称为Java开发工具包。
- JDK的内容:如上图所示,JDK包含JVM(Java虚拟机---在后文讲解)、核心类库以及相关的开发工具。
- JDK的作用:用于完成Java程序的 开发 和 运行。
- JDK内容简述(简单了解即可,后续的学习与开发会有更深刻的理解):
JVM | Java虚拟机,虚拟机会把Java代码翻译成计算机能看懂的语言 |
核心类库 | Java内置的类,可以直接调用以完成特定功能(比如输入输出等......) |
开发工具 | 一系列用于Java程序开发的工具,例如编译工具javac、执行工具java,除此之外还有jdb等等实用工具。包括了开发与运行的工具 |
回答为什么JDK能让Java程序跑起来
我们平常使用的操作系统(Win、ios、Linux......)是不认识Java语言的,如果我们想在我们的电脑上运行Java语言写的程序,我们还需要 把我们写的Java代码翻译成计算机能看懂的语言。这个时候我们就需要用到Java虚拟机、javac指令等工具来对Java语言进行编译(翻译)
除此之外,我们在Java开发的过程中还要用到各种各样的开发和运行工具,而JDK给我们提供了这些工具。
JRE
接着我们一起快速了解一下——什么是JRE
![](https://i-blog.csdnimg.cn/direct/541fcc7f562e4cd885591299028326bc.png)
简述JRE
- JRE的全名为 Java Runtime Environment :称为Java运行环境。
- JRE的内容:如上图所示,JRE包含JVM(Java虚拟机---在后文讲解)、核心类库以及相关的运行工具。
- JRE的作用:用于完成Java程序的 运行。
- JRE内容简述(简单了解即可,后续的学习与开发会有更深刻的理解):
JVM | Java虚拟机,虚拟机会把Java代码翻译成计算机能看懂的语言 |
核心类库 | Java内置的类,可以直接调用以完成特定功能(比如输入输出等......) |
运行工具 | 一系列用于Java程序运行的工具,例如执行工具java等。 |
JDK与JRE的区别(JDK17的安装包在文章最上方可自取)
相信眼尖的朋友已经看出了它们的微妙之处~ 没错,JDK包含JRE
对比两者简介我们可以发现JDK包含了JVM、核心类库、开发工具,而JRE也包含了JVM和核心类库,但最后一个是运行工具。而我们在上面的表格中提到,开发工具中包含了开发与运行的工具。在项目开发完成后,就不需要一些开发工具了,所以使用JRE会节省一些空间。
总结:我们在使用的时候,只需要安装JDK即可,因为它包含了JVM(虚拟机)和需要用到的各种工具。
因此两者的关系我们可以概括为下图
JVM(Java虚拟机)
说到这里有的朋友就有疑惑了——JDK和JRE里都包含的JVM是何方神圣呢?这我们就需要从Java区别与其他语言的主要特性之一——跨平台的原理说起。
我们前面介绍过,操作系统本身是不认识Java、C++、Python等高级语言的,我们需要对这些代码进行编译(翻译),最后得出计算机能看懂的语言
目前我们高级语言的编译运行方式及其代表性语言有如下几种:
编译运行方式 | 代表语言 |
编译型(对代码进行整体编译,最后生成编译文件) | C、C++ |
解释型(对代码进行逐行编译,不生成编译文件,代码透明可见,具有天生开源的特性) | Python |
混合型 | Java |
无论是编译型还是解释型,编译后都要面临一个问题,那就是系统不兼容的问题。
因为不同计算机和操作系统因为软件和硬件的不同,它们能看懂的语言也会有所出入,所以在不同的系统和设备之间,需要进行多次编译(就比如说你的语言需要翻译成汉语、英语、法语等各个版本让这些国家的人能听懂),这样一来,开发的成本就大大提高了。
这个时候Java带着它的JVM(虚拟机)来了
针对不同操作系统,Java提供了不同的虚拟机,虚拟机会把Java语言翻译成操作系统能看得懂的语言。真正做到 一次编译,处处可用!
所以JVM是JDK里面非常重要的一个工具!
Java六大主要特性
既然通过JVM了解到了Java语言的主要特性之一——跨平台,不妨我们也来了解一下其余五个特性(简单了解即可,后续的学习与开发会有更深刻的理解):
主要特性 | 简介 |
面向对象 | 按照用户需求创建模块以实现特定功能 |
安全性 | 漏洞少 |
多线程 | 支持多用户同时操作(例:12306平台) |
简单易用 | --略-- |
开源 | 全球开发者都能免费看到Java的代码 |
跨平台 | 【参考JVM一节中的讲述】 |