JDK是[Java](https://baike.baidu.com/item/Java/85979)语言的[软件开发工具包](https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7%E5%8C%85/10418833),主要用于[移动设备](https://baike.baidu.com/item/%E7%A7%BB%E5%8A%A8%E8%AE%BE%E5%A4%87/9157757)、[嵌入式设备](https://baike.baidu.com/item/%E5%B5%8C%E5%85%A5%E5%BC%8F%E8%AE%BE%E5%A4%87/10055189)上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
JDK = Java soft Development Kit Java软件开发工具包。在一些其它语言开发的介绍中,我们还可以看到SDK,就是这里的Soft Development Kit。比如进行手机开发时我们需要的Android SDK,便是指安卓软件开发工具包。
汽车厂商为了更加高效的制造汽车,会开发更高端的平台,比如2019年的迈腾汽车使用的是MQB平台,除此以外还会电力、材料、人工等辅助的资源。新的车型设计后会进行小范围的生产,然后在测试场里或者实际的道路上进行测试,发现问题后分析问题并进行修正。最后才是量产汽车。
在JAVA开发的世界里,我们把测试场和实际的道路称为JRE,即JAVA运行环境。汽车跑起来需要公路这个`汽车运行环境`,JAVA跑起来则需要JRE这个JAVA运行环境(Java Runtime Environment)。汽车在生产的过程中,需要MQB及一些辅助资源。JAVA程序在生产的过程中,也是需要JAVA及一些辅助的资源,而这就是Kit。
所以:我们做为消费者,买了汽车想使用的话,那么就是需要有汽车运行环境公路;如果买了JAVA软件想使用的话,就需要有JAVA软件运行环境--JRE。如果我们做为生产者想生产汽车,除了要有汽车运行环境外,还需要有生产平台及辅助资源;想生产JAVA程序,除了有JRE以外,则还需要一些工具包,这合并称为JDK。
![](https://img.kancloud.cn/03/0f/030fe41d5d20b1dce117559a7b104355_340x270.png)
如上图所示:JRE是JDK的一部分,如果想开发JAVA程序,则必须有JDK。如果想运行JAVA程序,就必须有JRE。
*****
有人说2019年以后JAVA不在免费了,其实这个是误区。JAVA依旧免费,只是:1. 2019年4月以后对JAVA8的更新,不在免费提供了。2. JDK11时,免费用户需要使用OPENJDK。对我们的直接影响是:下载时需要进行登录了,而想登录成功则依赖于良好的网络。我们改用以下下载地址:[https://github.com/frekele/oracle-java/releases/tag/8u172-b11](https://github.com/frekele/oracle-java/releases/tag/8u172-b11)
> 该版本并不是必须的,但使用该版本该将在最大程度上与教程的保持一致,这可能会规避一些不必要的麻烦。其它版本下载地址:[https://github.com/frekele/oracle-java/releases](https://github.com/frekele/oracle-java/releases)。同时阿里巴巴在OPENJDK8的基础上,开发了并开源了[dragonwell8](https://github.com/alibaba/dragonwell8),有兴趣的话也可以了解一下。
## MACOS
如果你已经安装过其它版本的JDK了,可以参考[https://segmentfault.com/a/1190000020177762#articleHeader5](https://segmentfault.com/a/1190000020177762#articleHeader5)进行多版本的安装与切换。
### 下载
在mac上,我们可以使用`Homebrew`来安装`jdk8`,`Homebrew`是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能( 以下操作均在终端进行 )。
首先更新`Homebrew`软件仓库。
```
brew tap caskroom/versions
```
下载`openjdk8`:
```
brew cask install adoptopenjdk/openjdk/adoptopenjdk8
```
### 验证
```
java -version
```
![](https://img.kancloud.cn/55/6b/556b223645c47ae0cfc60b147a3b87dd_1000x622.png)
## ubuntu
### 下载
选择适合自己电脑的版本,点击下载
![](https://img.kancloud.cn/7d/c9/7dc994ad5d8d5823af67f3ee06f03179_1322x353.png)
### 解压
进入下载目录解压,可以使用右键,选择提取到,之后选择jdk安装的位置;也可以使用命令进行解压,在命令行中进入jdk的存放目录,输入解压命令:
`sudo tar -zxvf 文件名-C 解压到的目录(不写则为当前目录)`
![](https://img.kancloud.cn/f4/17/f417ca0a9180337d735bab9123922da5_725x206.png)
### 设置环境变量
>[success] 本文的vim命令都是在输入法为英文且小写模式下。
在命令行中运行
`sudo vim ~/.bashrc`
(在vim中按下`i`进入插入模式)
在文件末尾追加下面内容(`shift + g`可以直接到文末 ):
```
#set jdk environment
export JAVA_HOME=/media/liyiheng/1/opt/jdk1.8.0_172 ## 这里要注意目录要换成自己解压的jdk 目录, 这句话需要删除
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
```
按下`esc`,输入:`:wq`保存;
使环境变量马上生效:
`source ~/.bashrc`
### 验证
![](https://img.kancloud.cn/8b/09/8b0988ef5daccc25949a35fe41821c8d_600x104.png)
### 不适合这里的一个简单方法
当以后不需要和本教程版本保持同步时,可以使用一条简单的命令来安装openjdk
`sudo apt install openjdk-8-jdk `
不过现在还是希望你能和本教材的jdk版本保持一致。
## windows
### 下载
点击下载链接:[https://github.com/frekele/oracle-java/releases/tag/8u172-b11](https://github.com/frekele/oracle-java/releases/tag/8u172-b11),如果你的电脑是32位,点击`jdk-8u172-windows-i586.exe`,如果你的电脑是64位,点击`jdk-8u172-windows-x64.exe`。
![](https://img.kancloud.cn/fd/ed/fdedce1046147a28f917e390789b5c90_1920x969.png)
### 安装
下载完成后,点击下载程序进行`jdk8`的安装
![](https://img.kancloud.cn/99/85/998554da3bf724e57f0cab6e95fe3f14_1047x574.png)
![](https://img.kancloud.cn/18/40/184064ccc409f772bd9d8c3315b3b55f_504x383.png)
记住这个`jdk8`的安装目录:
![](https://img.kancloud.cn/50/b1/50b166aab558b1f9d1952b8d7f8b6f9e_504x383.png)
选择`jre`安装目录(建议使用默认安装目录),点击下一步:
![](https://img.kancloud.cn/70/3c/703c80cb06b414f09ece6dfcec597b72_506x383.png)
![](https://img.kancloud.cn/6b/16/6b16db2236a7460b8105453596bc5873_504x383.png)
配置`jdk8`环境变量:
为了使用`jdk`的命令,我们需要配置`JAVA_HOME`,`CLASS_PATH`,`PATH`这几个环境变量:
打开文件资源管理器,右键此电脑,点击属性:
![](https://img.kancloud.cn/d9/4d/d94d233dba89b6ae0e5b677c0d723c17_775x559.png)
点击高级系统设置,点击环境变量:
![](https://img.kancloud.cn/33/06/33068a3834203ec5419caf2985d46c54_1510x771.png)
如果存在`JAVA_HOME`变量,则选中,点击编辑。否则,点击新建:
![](https://img.kancloud.cn/2c/7c/2c7c65a464294fd95751f21f239cf30c_632x666.png)
变量名输入`JAVA_HOME`,点击浏览目录选择刚刚`jdk8`的安装路径,确定:
![](https://img.kancloud.cn/ff/4b/ff4b81d76e343e0719619ff5e37c89d8_667x190.png)
如果存在`CLASSPATH`则选中,编辑。否则,点击新建:
```
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
```
![](https://img.kancloud.cn/07/42/074298fb65a246193afe471db81b254f_923x567.png)
找到PATH环境变量,点击编辑:
![](https://img.kancloud.cn/a0/b7/a0b7b82aa48b699ffb2799d9e5ef2bac_632x666.png)
点击新建,添加:
```
%JAVA_HOME%\bin
```
![](https://img.kancloud.cn/9d/00/9d0092eda8d7e2c856aa62fd68d24f6d_533x562.png)
点击确定,到此,环境变量就全都配置完成了。
### 验证
打开终端,输入
```
C:\User\98173> java -version
```
![](https://img.kancloud.cn/c8/6b/c86b08c95aac5441b2e84666a2f555bd_993x519.png)
到此,`jdk8`已经安装成功了。
- 序言
- 第一章:Hello World
- 第一节:Angular准备工作
- 1 Node.js
- 2 npm
- 3 WebStorm
- 第二节:Hello Angular
- 第三节:Spring Boot准备工作
- 1 JDK
- 2 MAVEN
- 3 IDEA
- 第四节:Hello Spring Boot
- 1 Spring Initializr
- 2 Hello Spring Boot!
- 3 maven国内源配置
- 4 package与import
- 第五节:Hello Spring Boot + Angular
- 1 依赖注入【前】
- 2 HttpClient获取数据【前】
- 3 数据绑定【前】
- 4 回调函数【选学】
- 第二章 教师管理
- 第一节 数据库初始化
- 第二节 CRUD之R查数据
- 1 原型初始化【前】
- 2 连接数据库【后】
- 3 使用JDBC读取数据【后】
- 4 前后台对接
- 5 ng-if【前】
- 6 日期管道【前】
- 第三节 CRUD之C增数据
- 1 新建组件并映射路由【前】
- 2 模板驱动表单【前】
- 3 httpClient post请求【前】
- 4 保存数据【后】
- 5 组件间调用【前】
- 第四节 CRUD之U改数据
- 1 路由参数【前】
- 2 请求映射【后】
- 3 前后台对接【前】
- 4 更新数据【前】
- 5 更新某个教师【后】
- 6 路由器链接【前】
- 7 观察者模式【前】
- 第五节 CRUD之D删数据
- 1 绑定到用户输入事件【前】
- 2 删除某个教师【后】
- 第六节 代码重构
- 1 文件夹化【前】
- 2 优化交互体验【前】
- 3 相对与绝对地址【前】
- 第三章 班级管理
- 第一节 JPA初始化数据表
- 第二节 班级列表
- 1 新建模块【前】
- 2 初识单元测试【前】
- 3 初始化原型【前】
- 4 面向对象【前】
- 5 测试HTTP请求【前】
- 6 测试INPUT【前】
- 7 测试BUTTON【前】
- 8 @RequestParam【后】
- 9 Repository【后】
- 10 前后台对接【前】
- 第三节 新增班级
- 1 初始化【前】
- 2 响应式表单【前】
- 3 测试POST请求【前】
- 4 JPA插入数据【后】
- 5 单元测试【后】
- 6 惰性加载【前】
- 7 对接【前】
- 第四节 编辑班级
- 1 FormGroup【前】
- 2 x、[x]、{{x}}与(x)【前】
- 3 模拟路由服务【前】
- 4 测试间谍spy【前】
- 5 使用JPA更新数据【后】
- 6 分层开发【后】
- 7 前后台对接
- 8 深入imports【前】
- 9 深入exports【前】
- 第五节 选择教师组件
- 1 初始化【前】
- 2 动态数据绑定【前】
- 3 初识泛型
- 4 @Output()【前】
- 5 @Input()【前】
- 6 再识单元测试【前】
- 7 其它问题
- 第六节 删除班级
- 1 TDD【前】
- 2 TDD【后】
- 3 前后台对接
- 第四章 学生管理
- 第一节 引入Bootstrap【前】
- 第二节 NAV导航组件【前】
- 1 初始化
- 2 Bootstrap格式化
- 3 RouterLinkActive
- 第三节 footer组件【前】
- 第四节 欢迎界面【前】
- 第五节 新增学生
- 1 初始化【前】
- 2 选择班级组件【前】
- 3 复用选择组件【前】
- 4 完善功能【前】
- 5 MVC【前】
- 6 非NULL校验【后】
- 7 唯一性校验【后】
- 8 @PrePersist【后】
- 9 CM层开发【后】
- 10 集成测试
- 第六节 学生列表
- 1 分页【后】
- 2 HashMap与LinkedHashMap
- 3 初识综合查询【后】
- 4 综合查询进阶【后】
- 5 小试综合查询【后】
- 6 初始化【前】
- 7 M层【前】
- 8 单元测试与分页【前】
- 9 单选与多选【前】
- 10 集成测试
- 第七节 编辑学生
- 1 初始化【前】
- 2 嵌套组件测试【前】
- 3 功能开发【前】
- 4 JsonPath【后】
- 5 spyOn【后】
- 6 集成测试
- 7 @Input 异步传值【前】
- 8 值传递与引入传递
- 9 @PreUpdate【后】
- 10 表单验证【前】
- 第八节 删除学生
- 1 CSS选择器【前】
- 2 confirm【前】
- 3 功能开发与测试【后】
- 4 集成测试
- 5 定制提示框【前】
- 6 引入图标库【前】
- 第九节 集成测试
- 第五章 登录与注销
- 第一节:普通登录
- 1 原型【前】
- 2 功能设计【前】
- 3 功能设计【后】
- 4 应用登录组件【前】
- 5 注销【前】
- 6 保留登录状态【前】
- 第二节:你是谁
- 1 过滤器【后】
- 2 令牌机制【后】
- 3 装饰器模式【后】
- 4 拦截器【前】
- 5 RxJS操作符【前】
- 6 用户登录与注销【后】
- 7 个人中心【前】
- 8 拦截器【后】
- 9 集成测试
- 10 单例模式
- 第六章 课程管理
- 第一节 新增课程
- 1 初始化【前】
- 2 嵌套组件测试【前】
- 3 async管道【前】
- 4 优雅的测试【前】
- 5 功能开发【前】
- 6 实体监听器【后】
- 7 @ManyToMany【后】
- 8 集成测试【前】
- 9 异步验证器【前】
- 10 详解CORS【前】
- 第二节 课程列表
- 第三节 果断
- 1 初始化【前】
- 2 分页组件【前】
- 2 分页组件【前】
- 3 综合查询【前】
- 4 综合查询【后】
- 4 综合查询【后】
- 第节 班级列表
- 第节 教师列表
- 第节 编辑课程
- TODO返回机制【前】
- 4 弹出框组件【前】
- 5 多路由出口【前】
- 第节 删除课程
- 第七章 权限管理
- 第一节 AOP
- 总结
- 开发规范
- 备用