Appearance
一、JDK安装与环境变量
1、Java开发环境搭建
1、什么是JDK、JRE
JDK
(J
avaD
evelopmentK
it):是Java程序开发工具包,包含JRE
和开发人员使用的工具。JRE
(J
avaR
untimeE
nvironment) :是Java程序的运行时环境,包含JVM
和运行时所需要的核心类库
。
如下是Java 8.0 Platform:

小结:
JDK = JRE + 开发工具集(例如Javac编译工具等)
JRE = JVM + Java SE标准类库
2、JDK版本选择

- 自Java 8版本发布以来,其后的每次更新,都会有小伙伴高呼:Java8 YYDS!
- 论坛的声音:“
你发任你发,我用Java 8!
”
数据说话1:
JRebel 于2022年4月前后发布了《2022 年Java生态系统状况报告》,报告中提到使用Java11 的占比最多,Java 8 紧随其后,如下图。而此前2020年的报告显示,Java8占比达到了84.48%
。
我的分析:
G1是最受欢迎的GC算法。Java 11及更高版本的G1收集器是默认的GC,而Java 8中并不是。出于对G1的喜爱,很多开发者才会选择抛弃Java 8。
数据说话2:
此外,某美国软件开发商在对近千名专业的Java开发者调研后,发布的《2022年Java开发者生产力报告》称:八年前发布的Java 8依然是Java中应用最广泛的版本,占比 37%
,其次是 Java 11,占比29%
。
高斯林说话:

Spring框架说话:
在Java 17正式发布之前,Java开发框架Spring率先在官博宣布,Spring Framework 6和Spring Boot 3计划在2022年第四季度实现总体可用性的高端基线:
Java 17+(来自 Spring Framework 5.3.x 线中的 Java 8-17)
Jakarta EE 9+(来自Spring框架5.3.x 线中的 Java EE 7-8)
Spring 官方说明:https://spring.io/blog/2022/01/20/spring-boot-3-0-0-m1-is-now-available
意味着:springboot3.0 是需要用java17和spring6.0为基础建设。如果从企业选型最新springboot3.0作为架构来说,它搭配jdk17肯定是标配了。
3、JDK的下载
- 下载网址(Oracle公司官网):www.oracle.com
- 下载步骤:如图所示,在官网底部选择Developers开发者
(1)在Developers页面中间的技术分类部分,选择Java
,单击进入,如图所示:

(2)这里展示的是最新Java版本,例如Java17。单击Download Java
,然后选择具体的版本下载。

(3)选择Download Java按钮后
(4)如果想安装Java8 可以选择如下位置:

(5)选择Accept License Agreement,

(6)注册或登录后下载:

(7)如果需要安装其它版本,可以选择Java archive:

接着进行选择下载即可:

4、Windows JDK的安装
- 安装说明
- 傻瓜式安装,下一步即可。
- 建议:安装路径不要有中文或者空格等特殊符号。
- 本套课程会同时安装JDK8 和 JDK17,并以JDK17为默认版本进行讲解。
- 安装步骤:
(1)双击jdk-17_windows-x64_bin.exe
文件,并单击下一步,如图所示:
(2)修改安装路径,单击更改,如图所示:
(3)将安装路径修改为D:\develop_tools\jdk\jdk-17.0.2\
,并单击下一步,如图所示:
(4)稍后几秒,安装完成,如图所示:
5、Windows配置path环境变量
1、理解path环境变量
什么是path环境变量?
答:window操作系统执行命令时,所要搜寻的路径。
为什么配置path?
答:希望在命令行使用javac.exe等工具时,任意目录下都可以找到这个工具所在的目录。
以JDK为例演示
我们在C:\Users\
目录下使用javac命令,结果如下:
sh
'jaavc'不是内部或外部命令。也不是可运行的程序或批处理文件。
我们在JDK的安装目录的bin目录下使用javac命令,结果如下:
sh
用法: javac <options> <source files>
其中, 可能的选项包括:
@<filename> 从文件读取选项和文件名
-Akey[=value] 传递给注释处理程序的选项
--add-modules <模块>(,<模块>)*
除了初始模块之外要解析的根模块; 如果 <module>
为 ALL-MODULE-PATH, 则为模块路径中的所有模块。
--boot-class-path <path>, -bootclasspath <path>
覆盖引导类文件的位置
--class-path <path>, -classpath <path>, -cp <path>
指定查找用户类文件和注释处理程序的位置
-d <directory> 指定放置生成的类文件的位置
-deprecation 输出使用已过时的 API 的源位置
--enable-preview 启用预览语言功能。要与 -source 或 --release 一起使用。
-encoding <encoding> 指定源文件使用的字符编码
-endorseddirs <dirs> 覆盖签名的标准路径的位置
-extdirs <dirs> 覆盖所安装扩展的位置
-g 生成所有调试信息
-g:{lines,vars,source} 只生成某些调试信息
-g:none 不生成任何调试信息
-h <directory> 指定放置生成的本机标头文件的位置
--help, -help, -? 输出此帮助消息
--help-extra, -X 输出额外选项的帮助
-implicit:{none,class} 指定是否为隐式引用文件生成类文件
-J<flag> 直接将 <标记> 传递给运行时系统
--limit-modules <模块>(,<模块>)*
限制可观察模块的领域
--module <模块>(,<模块>)*, -m <模块>(,<模块>)*
只编译指定的模块,请检查时间戳
--module-path <path>, -p <path>
指定查找应用程序模块的位置
--module-source-path <module-source-path>
指定查找多个模块的输入源文件的位置
--module-version <版本> 指定正在编译的模块版本
-nowarn 不生成任何警告
-parameters 生成元数据以用于方法参数的反射
-proc:{none,only} 控制是否执行注释处理和/或编译。
-processor <class1>[,<class2>,<class3>...]
要运行的注释处理程序的名称; 绕过默认的搜索进程
--processor-module-path <path>
指定查找注释处理程序的模块路径
--processor-path <path>, -processorpath <path>
指定查找注释处理程序的位置
-profile <profile> 请确保使用的 API 在指定的配置文件中可用
--release <release>
为指定的 Java SE 发行版编译。支持的发行版:7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
-s <directory> 指定放置生成的源文件的位置
--source <release>, -source <release>
提供与指定的 Java SE 发行版的源兼容性。支持的发行版:7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
--source-path <path>, -sourcepath <path>
指定查找输入源文件的位置
--system <jdk>|none 覆盖系统模块位置
--target <release>, -target <release>
生成适合指定的 Java SE 发行版的类文件。支持的发行版:7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
--upgrade-module-path <path>
覆盖可升级模块位置
-verbose 输出有关编译器正在执行的操作的消息
--version, -version 版本信息
-Werror 出现警告时终止编译
我们不可能每次使用java.exe,javac.exe等工具的时候都进入到JDK的安装目录下,太麻烦了。这时就需要配置path环境变量。
2、JDK8配置方案1:只配置path
- 步骤:
(1)打开桌面上的计算机,进入后在左侧找到此电脑
,单击鼠标右键
,选择属性
,如图所示:
(2)选择高级系统设置
,如图所示:
(3)在高级
选项卡,单击环境变量
,如图所示:
(4)在系统变量
中,选中Path
环境变量,双击
或者点击编辑
,如图所示:
(5)点击新建
,填入D:\develop_tools\jdk\jdk1.8.0_271\bin
,并将此值上移
到变量列表的首位。如图所示:
- 编辑模式1:

- 编辑模式2:(注意,结尾需要有英文模式下的;)
(6)环境变量配置完成,重新开启DOS命令行,在任意目录下输入javac
或java
命令或java -version
,运行成功。
sh
➜ ~ java -version
openjdk version "1.8.0_322"
OpenJDK Runtime Environment (Zulu 8.60.0.21-CA-macos-aarch64) (build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (Zulu 8.60.0.21-CA-macos-aarch64) (build 25.322-b06, mixed mode)
3、JDK8配置方案2:配置JAVA_HOME+path(推荐)
- 步骤:
(1)打开桌面上的计算机,进入后在左侧找到计算机
,单击鼠标右键
,选择属性
,如图所示:
(2)选择高级系统设置
,如图所示:
(3)在高级
选项卡,单击环境变量
,如图所示:
(4)在系统变量
中,单击新建
,创建新的环境变量,如图所示:

(5)变量名输入JAVA_HOME
,变量值输入 D:\develop_tools\jdk\jdk1.8.0_271
,单击确定
,如图所示:

(6)选中Path
环境变量,双击
或者点击编辑
,如图所示:
(7)在变量值的最前面,键入%JAVA_HOME%\bin
。如图所示:

注意:强烈建议将%JAVA_HOME%\bin声明在path环境变量中所有变量的最前面!
(8)环境变量配置完成,重启DOS命令行,在任意目录下输入javac
或java
命令或java -version
,运行成功。
有的书籍、论坛、视频上还提到配置classpath,用于指名class文件识别的路径。其实是没必要的,反而建议大家如果配置了classpath环境变量,要删除。对于初学者,反而不友好。
小结如下:
4、JDK17配置方案:自动配置
不管大家有没有提前安装JDK8或其它版本JDK,在我们安装完JDK17之后,理应按JDK8的方式配置path环境变量。但是,我们发现在安装完JDK17以后,配置环境变量之前,执行CMD指令:
sh
➜ ~ java -version
openjdk version "17.0.2" 2022-04-19 LTS
OpenJDK Runtime Environment Zulu17.34+19-CA (build 17.0.3+7-LTS)
OpenJDK 64-Bit Server VM Zulu17.34+19-CA (build 17.0.3+7-LTS, mixed mode, sharing)
竟然成功了!而且是17.0.2版本。因为JDK17在安装之后,自动进行了环境变量的配置。如下:

这里建议,将JDK17安装的路径,设置为JAVA_HOME,并将%JAVA_HOME%\bin
上移到首位。


6、Mac JDK下载与安装
苹果芯片推荐Azul jdk,官方jdk还没完全适配,编译起来会卡顿
https://www.azul.com/downloads/
双击安装即可。
7、Mac终端美化
sh
1. 克隆代码库
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
2. 备份已有的.zshrc [可选]
cp ~/.zshrc ~/.zshrc.orig
3. 新建一个zsh的配置文件,可以拷贝一份已有的模板文件来创建zsh的配置文件
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
4. 修改默认shell
chsh -s /bin/zsh
5. 重新打开一个终端窗口, 它将自动开启加载有oh my zsh配置的zsh。
vim ~/.zshrc
#ZSH_THEME="robbyrussell"
ZSH_THEME=“cloud”
其它主题可以参考
https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
8、Mac配置多个JDK切换
sh
vi .zshrc
或者
open -e .zshrc
# 设置 jdk1.8
export JAVA_8_HOME='$(/usr/libexec/java_home -v 1.8)'
# 设置 jdk15
export JAVA_15_HOME='$(/usr/libexec/java_home -v 15)'
# 设置 jdk17
export JAVA_17_HOME='$(/usr/libexec/java_home -v 17)'
alias java8="export JAVA_HOME=$JAVA_8_HOME"
alias java15="export JAVA_HOME=$JAVA_15_HOME"
alias java17="export JAVA_HOME=$JAVA_17_HOME"
sh
source .zshrc
sh
➜ ~ java8
➜ ~ java -version
openjdk version "1.8.0_322"
OpenJDK Runtime Environment (Zulu 8.60.0.21-CA-macos-aarch64) (build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (Zulu 8.60.0.21-CA-macos-aarch64) (build 25.322-b06, mixed mode)
➜ ~ java15
➜ ~ java -version
openjdk version "15.0.6" 2022-01-18
OpenJDK Runtime Environment Zulu15.38+17-CA (build 15.0.6+5-MTS)
OpenJDK 64-Bit Server VM Zulu15.38+17-CA (build 15.0.6+5-MTS, mixed mode)
➜ ~ java17
➜ ~ java -version
openjdk version "17.0.3" 2022-04-19 LTS
OpenJDK Runtime Environment Zulu17.34+19-CA (build 17.0.3+7-LTS)
OpenJDK 64-Bit Server VM Zulu17.34+19-CA (build 17.0.3+7-LTS, mixed mode, sharing)