Java语言核心技术第02章-Java概述与开发环境搭建

Java语言核心技术第02章-Java概述与开发环境搭建.png

1 Java概述

1.1 Java发展历史

1990年末SUN(Stanford University Network)公司预料嵌入式系统将在未来的家用电器领域大显身手,于是SUN公司成立了由James Gosling领导的Green计划,准备为下一代智能家电(电视机、微波炉、电话)编写一个通用的控制系统。

一开始该团队决定使用C++语言,但是当时的C++不支持跨平台。因为不同的家电设备所使用的芯片不同,更换了家电设备则需要修改程序。
因此James Gosling在C++的基础之上重新开发一门语言-Oak,后来因为智能家电的市场需求没有预期的那么高,SUN公司放弃了该计划。
随着20世纪90年代中后期互联网的发展,SUN公司发现了Oak在互联网上的应用前景,于是改造Oak语言,并在1995年5月以Java(印度尼西亚爪哇岛)的名称正式发布。

互联网的特点和家电设备的特点类似:不同的计算机所使用的硬件设备(芯片)不同。
当时业界为了使得死板、单调的静态网页能够灵活起来,急需要用一种技术开发动态网页,这种程序可以通过互联网访问,还能够跨平台。得益于Java的跨平台,而且可以制作Applet逐渐流行起来,Applet是一种将小程序嵌入到网页中执行的技术
伴随着互联网的高速发展,以及凭借自身强大的生态体系,目前Java已经成为Web应用程序的首选开发语言

发行版本发行时间备注
Java1.01996/01/23SUN公司发布了Java的第一个开发工具包
Java1.11997/02/19JavaOne会议召开,创造当时全球同类会议之最
Java1.21998/12/08Java拆分成:J2SE(Java标准版),J2EE(Java企业版),J2ME(Java微型版)
Java1.32000/05/08HotSpot 成为默认虚拟机
Java1.42002/02/06
Java5.02004/09/30①版本号从1.4直接升级到5.0 ②Java平台更名为JavaSE、JavaEE、JavaME
Java62006/12/112009/04/20 Oracle公司用74亿美金收购SUN公司
Java72011/07/02Oracle公司收购SUN公司后发布第一个Java版本
Java82014/03/18此版本是Java5.0以来最大变化的版本,是长期支持版本(LTS)
Java92017/09/22①从此版本开始每半年更新一次 ② Java9.0开始不支持32位系统
Java102018/03/21非长期支持版本
Java112018/09/25JDK安装包取消独立JRE安装包,是长期支持版本(LTS)
Java122019/03/19非长期支持版本
Java132019/09/17非长期支持版本
Java142020/03/17非长期支持版本
Java152020/09/15非长期支持版本
Java162021/03/16非长期支持版本
Java172021/09/14长期支持版本,版本号也被称为21.9
Java182022/03/22非长期支持版本
Java192022/09/20非长期支持版本
Java202023/03/21非长期支持版本
Java212023/09/19目前最新长期支持版本
Java222024/03/19非长期支持版本
Java232024/09非长期支持版本

每个新版本JDK发布都会提供一些新特性(新功能)以及改进或者废弃原有功能
Java新特性.png

注意事项

  1. Java5和JDK1.5指的是同一个版本,Java8和JDK1.8指的是同一个版本
  2. Java7以后Java由Oracle公司发布
  3. Java8仍然是目前主流互联网公司使用的版本
  4. Java9以后每半年发布一个版本,每2-3年发布一个长期支持版本(LTS),例如Java8,Java11,Java17,Java21是长期支持版本。

1.2 Java 技术体系平台(Java 三大版本)

自从1998年以后Java被分成了三个版本,这三个版本分别是JavaSE、JavaEE(JakartaEE)、JavaME,每个版本都是有自己的应用场景(开发方向))

  • JavaSE(Java Standard Edition):Java标准版,主要是用于桌面应用的开发,不过目前绝大多数的桌面应用都是使用C/C++开发,很少使用Java开发桌面应用(IntelliJ IDEA),JavaSE是其他两个版本(JavaEE,JavaME)的基础,学习JavaSE是为了以后从事JavaEE开发打基础(锻炼逻辑思维能力)。
  • JavaEE(Java Enterprise Edition):Java企业版,主要是用于开发大型企业应用的后台,JavaEE在这个领域是No.1,所谓的企业应用就是那些商业组织、大型企业创建的应用,例如阿里巴巴的淘宝天猫、菜鸟物流,蚂蚁的支付宝等等大型企业应用的后台都是基于JavaEE技术栈实现的。
  • JavaME(Java Micro Edition):Java微型版,主要用于嵌入式电子设备(电视机、电冰箱、微波炉、烤箱)或者小型移动设备(诺基亚手机)应用开发,但是随着3G移动智能平台(Android,iOS)的时代到来,特别是以Java为核心编程语言的Android平台的快速普及,JavaME已经淘汰

如果去招聘网站搜索JavaME会发现搜索不到对应的岗位

JavaSE、JavaEE(JakartaEE)、JavaME三者之间的关系
JavaSE、 JavaEE(JakartaEE)、JavaME.jpg

1.3 Java 特点

由于Java语言是开源的,也得到了很多大公司的支持(Oracle,Amazon,Google,AlibabaTencentHuawei)的支持,逐渐发展成了具有简单易学开源跨平台(可移植)体系结构中立、安全性、高性能、健壮型、支持面向对象、多线程、分布式、动态性等诸多特点的开发平台和运行平台。

  • Java是简单易学:Java是C/C++的基础之上发展而来,不同于C/C++的是Java是纯粹的面向对象的语言,Java舍弃了C语言中特别容易引起错误的指针,并且引入了垃圾回收机制,这样在大部分场景下不需要手动释放内存,而且Java还舍弃了C++语言中一些特别复杂的语法,例如头文件、指针运算、结构、联合、运算符重载、多继承、虚基类等等。同时由于语法是基于C语言,因此Java相比C/C++更加简单易学

  • Java是开源的:开源指的就是开放源代码,例如QQ、微信是不开源的,在下载QQ时只能下载安装包而不能获取源代码,而Linux、Visual Studio Code等等都是开源的,在下载Linux、Visual Studio Code时不仅可以下载安装包还可以下载源码,Java开源的好处就是开发者可以通过阅读Java语言以及相关框架、中间件的源码查看具体的设计、实现过程,从而提高自己的技术水平。在Java世界中,有着数不清的开源软件和框架。如Tomcat、Mybatis、Spring Framework、Spring Boot、Spring Cloud、Spring Cloud Alibaba、Dubbo,Netty,等。就连JDK自身也有不少实现,如Amazon Corretto、Azul Zulu Community等等。

  • Java是跨平台的:平台就是操作系统(OS),目前桌面端主流操作系统是Windows,macOS,服务端操作系统是Linux(CentOS,Ubuntu Server)。跨平台的含义就是在Windows上开发的项目不需要做任何修改就可以直接在其他安装了JDK的操作系统(CentOS,Ubuntu Server)上运行,不同操作系统有不同版本的JDK,用来屏蔽底层操作系统的差异。


跨平台的好处就是节省人力资源成本,因为项目开发一次后适配多个操作系统。在公司开发项目时,首先会在开发环境中开发Java项目,项目开发完成以后部署到测试环境中进行相关测试,测试通过以后部署到生产环境中对外提供服务。不同的环境操作系统也是不一样的,开发环境使用的Windows或者macOS开发Java项目,测试环境和生产环境使用的Linux来测试Java项目或者部署Java项目对外提供服务。

  • Java是体系结构中立,体系结构中立有两层含义,①JVM的实现只需要遵守Oracle官方提供的JVM规范即可,不过大部分Java应用都是使用的Oracle官方提供的HotSpot虚拟机,除此以外一些互联网大厂(Alibaba、Tencent、Huawei)会根据自己的需求定制JDK。②JVM除了可以识别Java编译器(javac)编译生成的字节码文件以外,还可以识别Groovy、Scala、 JRuby、Kotlin等计算机语言生成的字节码文件。

1.4 JDK 和 JRE

1.4.1 JDK 和 JRE 介绍

  • JDK(Java Development Kit) 称为Java开发工具集,JDK包含了Java开发工具(javac,java,jdb,jconsole等等)以及JRE,如果想要开发Java程序之前首先必须安装和配置JDK
  • JRE(Java Runtime Enviroment)称为Java运行时环境,JRE包含了运行Java程序所需要的类库(数学、集合、正则表达式、日志、并发、反射、序列化、网络、日期时间、IO、JDBC)和JVM(Java Virtual Machine),如果想要运行已经开发好的Java程序之前必须要安装JRE,但是Java11以后不再提供单独的JRE下载。

Java8体系结构

1.4.2 图解JDK、JRE和JVM的关系

1.4.3 如何选择 Java 版本

首先需要了解下Oracle Java SE Support Roadmap
image.png
从Java 9开始,Oracle决定每六个月发布一个新的LTS(长期支持)版本或非LTS版本。这意味着每年的3月和9月会有新版本发布。

  • LTS表示Oracle官方长期支持的版本,Oracle提供长达8年的支持,包括免费的公共更新持续到发布后的两年,之后则需要购买商业支持服务才能继续获得更新和补丁。,例如Java11,Java17,Java21,Java25,其中Java17官方支持到2029年9月,Java21 官方支持到 2031 年 9 月。
  • non-LTS表示非Oracle官方长期支持的版本(测试版),非LTS版本的支持周期较短,主要为开发者提供最新的特性和改进,但不建议用于生产环境,除非你计划频繁升级,例如Java9,Java10,Java12,Java13,Java14,Java15,Java16,Java18,Java19,Java20,Java22等等都是non-LTS版本

尽管Java的发展速度加快,但Oracle承诺保持语言和平台的向后兼容性,确保现有的应用程序可以在新的版本上运行。

选择JDK版本的时候分两种情况

  1. 学习Java的时候可以选择高版本的JDK,但是必须是LTS版本,例如Java17,Java21
  2. 去公司开发Java项目的时候,① 公司已有的项目用什么JDK版本,那么你就优先使用什么JDK版本,② 公司从0开始开发项目,那么优先选择稳定而且是官方长期支持的版本,例如Java8或者Java17,目前国内大部分的互联网公司现有的Java项目依然使用Java8,未来(2-3年以后)会逐步升级到Java17 或者 Java21,一些开源框架依赖的JDK也从Java8已经升级到Java17,例如Spring Framework 6,Spring Boot 3 等等。

image.png
image.png

1.5 常见 JDK 发行版

Oracle JDK只是Oracle公司的一种JDK具体实现,其他企业和个人可以根据开源的 OpenJDK开发和定制JDK。
常见的JDK发行版
常见JDK发行版.png

  • Oracle JDK
    • Oracle JDK是Oracle公司提供的官方JDK实现,基于HotSpot虚拟机
    • Oracle JDK是Java标准版(Java SE)的参考实现,通常被视为最完整和最稳定的JDK版本。
    • 它包含了商业特性,如Java Flight Recorder和Java Mission Control,适用于性能分析和故障排查。

image.png
Oracle Java archive归档了所有Java版本
image.png
在2019年以后Java8后续更新的版本 就开始收费,但是主要针对的是企业用户,对于个人学习没有任何影响。
Java SE 8 (8u202 and earlier)在生产环境商用是可以免费使用
Java SE 8 (8u211 and later)在生产环境商用是需要付费使用

  • OpenJDK
    • OpenJDK是一个开源的JDK实现,由Oracle和其他组织共同维护。
    • 它是Oracle JDK的基础,两者在功能上非常相似,但OpenJDK不包含Oracle JDK中的一些专有组件。
    • OpenJDK是很多其他JDK实现的基石,如AdoptOpenJDK和Amazon Corretto。

image.png

  • Eclipse Temurin
    • 由社区驱动的项目,提供高质量的OpenJDK二进制文件。
    • 提供了多种OpenJDK版本和HotSpot JVM变体,包括OpenJ9和Eclipse OpenJ9。
    • 其二进制文件经过严格测试,确保跨平台的兼容性和稳定性。

image.png

  • Amazon Corretto
    • Amazon公司提供的OpenJDK版本,免费且生产就绪。
    • 提供长期支持和定期更新,包括安全修复和性能改进。
    • 特别适合在Amazon Web Services (AWS) 上运行的Java应用程序。

image.png

  • Azul Zulu
    • Azul Systems公司提供的OpenJDK版本,免费且生产就绪。
    • 提供长期支持和定期更新,强调性能和可扩展性。
    • 最稳定、最安全的 OpenJDK 版本

image.png

  • GraalVM
    • GraalVM是一个高性能的JVM实现,支持多种语言和运行时环境。
    • 它可以作为JDK使用,提供了AOT编译能力,支持原生镜像构建,适合微服务和云原生环境。

image.png

  • BellSoft Liberica JDK
    • BellSoft公司提供的开源JDK实现,基于OpenJDK,开源免费。
    • 提供了广泛的平台支持和长期支持版本。
    • 包含 JavaFX

image.png

  • 阿里巴巴 Dragonwell JDK
    • 阿里巴巴发布的JDK,称为Dragonwell JDK,它是基于OpenJDK的定制版本。
    • Dragonwell JDK旨在解决阿里巴巴集团在大规模部署Java应用程序时遇到的性能和稳定性问题。
    • 它包含了对高并发场景下的优化,以及对阿里巴巴内部使用模式的特殊调优。

image.png

  • 腾讯 Kona JDK
    • 腾讯的Kona JDK也是基于OpenJDK构建的,提供了长期支持(LTS)并定期更新。
    • Kona JDK作为腾讯内部的默认JDK应用于其云业务和其他Java应用场景。
    • 它通常会包含腾讯专业JVM技术团队的额外功能和性能优化。

image.png

  • 华为毕昇JDK
    • 毕昇JDK是华为内部基于OpenJDK定制的Huawei JDK的开源版本。Huawei JDK运行在华为内部500多个产品上,研发团队积累了丰富的开发经验,解决了业务实际运行中遇到的多个疑难问题。
    • 毕昇JDK作为OpenJDK的下游,是一款高性能、可用于生产环境的OpenJDK发行版。毕昇JDK对华为内部应用场景中遇到的一些性能问题和稳定性问题进行了修复,并在ARM架构上进行了性能优化和稳定性增强,在ARM架构上更稳定,在大数据等场景下可以获得更好的性能。
    • 毕昇JDK致力于为JAVA开发者提供一款稳定可靠、高性能、易调测的JDK,也为用户在ARM架构上提供一个更好的选择。

image.png

  • Microsoft OpenJDK
    • Microsoft OpenJDK 是由微软公司提供的一款基于标准 OpenJDK 项目构建的 Java 开发工具包 (JDK) 和运行时环境 (JRE)。它遵循 GPL v2 with Classpath Exception 的开源许可证,旨在为开发者和企业提供一个稳定、高性能且兼容标准 Java 规范的运行时环境。
    • 开源与免费:与所有 OpenJDK 发行版一样,Microsoft OpenJDK 是完全开源的,可供任何人免费使用。
    • 跨平台支持:它支持 Windows、macOS 和 Linux 操作系统,使得 Java 开发者可以在多个平台上无缝切换和部署应用。
    • 质量保证:微软在 OpenJDK 的基础上进行额外的测试和质量控制,确保其稳定性和性能达到企业级标准。
    • 长期支持(LTS):Microsoft 提供长期支持版本,这意味着用户可以期待持续的安全更新和 bug 修复,对于需要长期维护的项目尤为重要。
    • 商业支持:微软为需要的企业用户提供商业级别的支持服务,包括技术支持和保修服务,这对于企业级应用的稳定性保障非常关键。
    • 安装与管理简便:Microsoft OpenJDK 可以通过多种方式轻松安装,例如在 Windows 上可以使用 Windows Package Manager (winget) 安装,简化了开发者的设置过程。

image.png

2 Windows版Java8开发环境搭建

2.1 Windows版本Java8下载

  1. 访问Java的官网,其访问地址是https://www.oracle.com/java/

image.png

  1. 点击右上角的Download Java,跳转到Java的下载页面

image.png
Java的下载地址是https://www.oracle.com/java/technologies/downloads/
目前(2024/08/09)Oracle官方提供最新可用的Java版本(JDK版本)是Java22、Java21 和Java17,最新的LTS版本是Java21
image.png
本次我们下载的是Java8,所以往下滚动鼠标到Java8的下载
image.png
目前Java8支持四个操作系统

  • Linux
  • macOS
  • Solaris
  • Windows

大家在下载Java8的时候需要根据自己所使用操作系统的版本选择对应版本的Java8
image.png

  1. 选择Windows版 Java8 x64 Installer

Q:如何知道使用Windows版本
A:在设置(Windows+I)>系统>系统信息查看设备规格和Windows规格
image.png
image.png
由于本机使用的操作系统是 64 位 Windows11专业工作站版 23H2 ,因此选择Windows x64 Installer 的jdk-8u421-windows-x64.exe

  • x86 Installer 表示32位Java8安装程序
  • x64 Installer 表示64位Java8安装程序

选择32位还是64位是根据系统类型来决定的,强制要求开发者全部使用64位系统,因为32位系统最多只能使用4GB内存,现在从事软件开发4GB内存肯定是不够用的。
image.png

  1. 下载Windows版 Java8 x64 Installer

image.png

  1. 注册、登录Oracle账户

如果没有Oracle账户,大家可以在注册页面填写相应的信息注册Oracle账户

账户创建成功以后,在登录页面填写账户信息(账号、密码)登录Oracle账户


登录成功之后浏览器会下载Java8,使用快捷键 Ctrl+J 可以打开下载记录
image.png
点击更多操作
image.png
下载未经验证的文件
image.png
此时查看下载的速度以及所需的时间
image.png
当Java8下载完成后,点击在文件夹中显示
image.png
默认在下载目录(C:\Users\liuguanglei\Downloads)下会看到Java8的安装包jdk-8u421-windows-x64.exe
image.png

2.2 Windows版Java8安装

2.2.1 Windows版Java8安装过程

  1. 左键双击Windows版Java8的安装包jdk-8u421-windows-x64.exe启动安装器

image.png
在弹出的用户账户控制,你要允许此应用对你的设备进行更改吗?选择是即可
image.png

  1. 下一步

image.png

  1. 定制安装
    安装组件默认情况下包含了开发工具、源代码和公共JRE
    安装路径默认情况下是 C:\Program Files\Java\jdk-1.8

image.png

由于JDK中包含了JRE,因此无需再安装公共JRE
因此选择公共JRE,设置成此功能将不可用
image.png

只需要安装开发工具和源代码即可
image.png

  1. 点击下一步

image.png

开始安装,稍等片刻即可安装完成
image.png

  1. 安装成功

image.png
安装完成后可以点击 ①后续步骤 和 ②关闭

image.png

image.png

  • 关闭:关闭安装向导,完成Java8安装

2.2.2 Windows版Java8安装目录

Windows版Java8安装目录是C:\Program Files\Java\jdk-1.8
image.png

由于JDK包含了JRE,因此Java8目录中有个jre目录
image.png
作为Java初学者来说,目前只需要关注bin目录和src.zip压缩文件

  • bin目录:存放Java提供的开发工具,例如javac,java,javadoc,javap 等等

image.png

  • src.zip:存放Java源代码文件(.java结尾的文件)

image.png

该文件可以使用WinRAR解压缩,WinRAR需要下载、安装后才能使用

将src.zip文件解压到src
image.png

在弹出的用户账户控制,你要允许此应用对你的设备进行更改吗?选择是即可
image.png

src 文件夹下存放的就是Java源代码
image.png
例如String.java
String.java源文件位于 java\lang 目录下
image.png

Visual Studio Code是一个跨平台的文本编辑器,需要下载、安装后才能使用
image.png

使用Visual Studio Code文本编辑器打开String.java
image.png

image.png

2.3 Windows版Java8配置JAVA_HOME环境变量

2.3.1 为什么Java8要配置JAVA_HOME环境变量

JAVA_HOME表示Java的安装路径,例如C:\Program Files\Java\jdk-1.8
image.png
后期我们会使用到Java开发的一些工具,例如TomcatMaven这些工具都会依赖JAVA_HOME环境变量。如果你不配置就无法正常使用,而且这些工具会提示你配置JAVA_HOME环境变量。
例如在终端位于Maven的bin目录下(D:\soft\java\apache-maven-3.9.8\bin)执行 mvn --version命令查看Maven版本信息时会提示需要配置JAVA_HOME环境变量
image.png

而只有安装Java并配置JAVA_HOME环境变量以后,重新开启终端后在终端位于Maven的bin目录下执行 mvn --version命令会输出Maven版本信息以及依赖的Java信息
image.png

2.3.2 Java8配置JAVA_HOME环境变量

  1. 打开系统属性面板
    依次打开设置(Windows+I)>系统>系统信息

image.png

点击高级系统设置
image.png

然后会弹出系统属性面板
image.png

  1. 在系统属性面板依次点击高级>环境变量打开环境变量面板

环境变量分为用户变量和系统变量,二者的区别是作用范围不同

  • 用户变量只针对当前用户有效
  • 系统变量针对所有用户都有效

Windows电脑通常只有一个人使用,不太可能有多个用户,因此建议使用系统变量

  1. 配置Java8的JAVA_HOME环境变量

点击系统变量的新建(W),然后输入变量名和变量值
变量名:JAVA_HOME
变量值:C:\Program Files\Java\jdk-1.8

image.png

  1. 依次点击三个确定,关闭系统属性面板,完成Java8的JAVA_HOME环境变量配置

  1. 验证Java8的JAVA_HOME环境变量配置是否成功

验证的方法就是启动一个终端,然后在终端输入echo %JAVA_HOME%,如果能够输出Java的安装路径表示配置成功
Q:如何启动终端
A:按Windows+R打开运行窗口
image.png

然后输入cmd后回车
image.png

就可以启动一个终端
image.png

在终端输入 echo %JAVA_HOME%并回车 验证JAVA_HOME环境变量是否配置成功
如果能够输出Java8的安装目录C:\Program Files\Java\jdk-1.8则表示配置成功
image.png

2.4 Windows 版 Java8 配置 Path 环境变量

2.4.1 Path 环境变量是什么

Path环境变量的变量名是Path,变量值就是一系列路径,例如%SystemRoot%,%SystemRoot%\system32等等,多个路径之间使用分号隔开。
Q:如何查看Path环境变量
A:在系统属性面板依次点击高级>环境变量>系统变量Path>编辑>编辑环境变量

  1. 打开系统属性面板
    依次打开设置(Windows+I)>系统>系统信息

image.png

点击高级系统设置
image.png

然后会弹出系统属性面板
image.png

  1. 编辑系统环境变量

image.png
其中%SystemRoot%表示Windows系统根路径 C:\Windows
可以在终端上输入echo %SystemRoot%命令回车后查看
image.png
Path环境变量的作用就是当我们在终端上输入命令回车后,系统会从当前路径和Path环境变量指定的路径查找命令对应的可执行程序,然后执行程序。
当我们在终端上输入notepad命令回车后
image.png

系统会打开notepad对应的记事本程序
image.png
notepad命令对应的记事本程序路径是C:\Windows\notepad.exe
image.png

但是如果我们输入一个不存在的命令(例如notepadxxx),那么系统无法运行该命令对应的可执行程序,然后会提示 不是内部或外部命令,也不是可运行的程序或批处理文件。
image.png

2.4.2 Path 环境变量的使用

Q:如何实现在Windows终端的任意路径下输入QQ就可以启动QQ
A:将软件的安装路径配置到环境变量中,就可以在Windows终端的任意路径下打开指定的软件
说明:QQ测试版本: 9.9.15-26740 (64位)
image.png

  1. 找到QQ安装目录

先右键点击位于桌面的QQ快捷方式,然后右键选择属性
image.png
在属性面板中点击打开文件所在的位置(F)
image.png

此时打开的就是QQ安装目录(C:\Program Files\Tencent\QQNT),QQ.exe 位于QQ安装目录下
image.png

  1. 打开系统属性面板

依次打开设置(Windows+I)>系统>系统信息
image.png

点击高级系统设置
image.png

然后会弹出系统属性面板
image.png

  1. 在系统属性面板依次点击高级>环境变量打开环境变量面板

image.png

  1. 配置QQ的Path环境变量

首先点击系统变量的Path,然后再点击编辑
image.png
打开编辑环境变量面板
image.png

然后点击新建,将QQ 的安装目录(C:\Program Files\Tencent\QQNT)添加到Path环境变量中
image.png

  1. 点击三次确定关闭系统属性面板,完成QQ的Path环境变量配置

image.png

  1. 验证QQ的Path环境变量是否配置成功

首先使用Windows+R打开运行窗口
image.png

然后在运行窗口输入cmd回车后
image.png

重新开启一个终端
image.png

然后在终端的任意路径输入QQ后回车,看QQ是否能够启动成功
image.png

如下图所示如果能够启动则表示QQ的Path环境变量配置成功
image.png

2.4.3 为什么Java8 要配置Path环境变量

假设不配置Java8的Path环境变量,在终端上使用javac和java的时候,如下图所示系统会提示 不是内部或外部命令,也不是可运行的程序或批处理文件。

  • javac 用于编译java源文件(.java结尾的文件),编译成功之后会生成字节码文件(.class结尾的文件)
  • java 用于解释执行字节码文件,运行Java程序

image.png

因为Java8提供的开发工具(javac,java)需要在终端上使用,如果你双击运行javac和java,它们会在终端运行后立刻出现闪退现象。
为了在终端的任意路径下使用javac和java,因此我们需要将Java8安装目录的bin目录添加到Path环境变量中
image.png

2.4.4 Java8配置Path环境变量

  1. 打开系统属性面板

在任务栏的搜索框搜索编辑系统环境变量,然后选择编辑系统环境变量并打开

然后会弹出系统属性面板

  1. 在系统属性面板依次点击高级>环境变量打开环境变量面板

image.png

  1. 配置Java8的Path环境变量

首先点击系统变量的Path环境变量,再点击编辑
image.png
image.png

点击新建,将Java8安装目录的bin目录(C:\Program Files\Java\jdk-1.8\bin)添加到Path环境变量中
image.png
并且置顶
选中Java8的Path环境变量,然后点击若干次上移
image.png
image.png

  1. 依次点击三次确定,关闭系统属性面板,完成Java8的Path环境变量配置

image.png

  1. 验证Java8的Path环境变量是否配置成功

验证Java8的Path环境变量是否配置成功的方法就是重新开启一个终端,然后在终端的任意路径分别输入javac -version和java -version并回车,
如下图所示如果终端能够输出Java编译器和Java解释器的版本信息则表示Java8的Path环境变量配置成功
image.png

2.4.5 Java8使用JAVA_HOME配置Path环境变量

Q:为什么Java8要使用JAVA_HOME配置Path环境变量
A:切换JDK版本时只需要修改JAVA_HOME环境变量的值即可

  1. 打开系统属性面板

在任务栏的搜索框搜索编辑系统环境变量,然后选择编辑系统环境变量并打开

然后会弹出系统属性面板

  1. 在系统属性面板依次点击高级>环境变量打开环境变量面板

image.png

  1. 使用JAVA_HOME配置Java8的Path环境变量

首先点击系统变量的Path,然后点击编辑
image.png
image.png

然后将Java8的Path环境变量C:\Program Files\Java\jdk-1.8\bin 改成%JAVA_HOME%\bin
%JAVA_HOME%就是C:\Program Files\Java\jdk-1.8
image.png

  1. 依次点击三次确定,关闭系统属性面板,完成Java8使用JAVA_HOME配置Path环境变量

image.png

  1. 验证Java8的Path环境变量是否配置成功

验证Java8的Path环境变量是否配置成功的方法就是重新开启一个终端,然后在终端的任意路径分别输入javac -version和java -version并回车,
如下图所示如果终端能够输出Java编译器和Java解释器的版本信息则表示Java8的Path环境变量配置成功
image.png

2.5 Windows版Java8卸载

Q:什么时候需要卸载Java8
A:如果不再使用(例如公司项目全部使用Java17开发)Java8时就可以将其卸载
Windows版Java8的卸载需要删除Java8相关环境变量(Path环境变量、JAVA_HOME环境变量)以及Java8程序

2.5.1 删除Java8 Path环境变量

  1. 打开系统属性面板

在任务栏的搜索框搜索编辑系统环境变量,然后选择编辑系统环境变量并打开
image.png
然后会弹出系统属性面板
系统属性面板

  1. 在系统属性面板依次点击高级>环境变量打开环境变量面板

环境变量面板

  1. 删除Java8的Path环境变量

首先选择系统变量的Path,然后点击编辑
image.png
image.png

然后选择Java8的Path环境变量%JAVA_HOME%\bin,点击删除
image.png

删除Java8的Path环境变量

  1. 依次点击三次确定关闭系统属性面板,完成Java8的Path环境变量删除

image.png

  1. 验证Java8的Path环境变量是否删除成功

验证Java8的Path环境变量是否删除成功的方法是重新开启一个新的终端,在终端的任意路径下输入javac -version和java -version,如下图所示如果系统提示javac和java不是内部或外部命令,也不是可运行的程序或批处理文件,则表示Java8的Path环境变量删除成功
image.png

2.5.2 删除Java8 JAVA_HOME环境变量

  1. 打开系统属性面板

在任务栏的搜索框搜索编辑系统环境变量,然后选择编辑系统环境变量并打开
编辑系统环境变量

然后会弹出系统属性面板

  1. 在系统属性面板依次点击高级>环境变量打开环境变量面板

image.png

  1. 删除Java8的JAVA_HOME环境变量

选择系统变量的JAVA_HOME,点击删除
JAVA_HOME

删除JAVA_HOME

  1. 依次点击两次确定关闭系统属性面板完成Java8 JAVA_HOME环境变量的删除

image.png

  1. 验证Java8 JAVA_HOME环境变量是否删除成功

验证Java8 JAVA_HOME环境变量是否删除成功的方法就是重新开启一个终端,然后在终端上输入echo %JAVA_HOME% 回车后,

如下图所示如果不能输出Java8的安装路径,而是输出%JAVA_HOME%,那么表示Java8 JAVA_HOME环境变量删除成功
image.png

2.5.3 卸载Java8程序

  1. 打开安装的应用

右键点击开始菜单,然后左键选择安装的应用
选择安装的应用

此时可以查看安装的应用

免安装版本的软件不会在安装的应用列表中显示

image.png

  1. 在安装的应用中搜索Java

搜索Java

  1. 选择Java8,点击卸载

image.png

确认卸载
image.png

然后在弹出的用户账户控制,你要允许此应用对你的设备进行更改吗? 选择是即可
用户账户控制

接下来就会开始卸载,此过程大概几秒钟
卸载中

卸载成功后在安装的应用中找不到Java
image.png

3 Windows版Java17开发环境搭建

3.1 Windows 版Java17下载

  1. 访问Java的官网,其访问地址是https://www.oracle.com/java/

Java官网

  1. 点击右上角的Download Java,跳转到Java的下载页面

Download Java

Java的下载地址是 https://www.oracle.com/java/technologies/downloads/
Java下载地址

目前(2024/08/09)Oracle官方提供最新可用的Java版本(JDK版本)是Java22、Java21 和Java17,最新的LTS版本是Java21

这是 NFTC 计划的 JDK 17 的最后一次更新。 2024 年 9 月之后的更新将根据 Java SE OTN 许可证 (OTN) 进行许可,超出 OTN 许可证有限免费授权的生产使用将需要付费。
根据 Oracle 免费条款和条件 (NFTC),JDK 17 二进制文件可以在生产中免费使用,并且可以免费重新分发。

Java17

目前Java17支持三个系统

  • Linux
  • macOS
  • Windows

大家在下载Java17的时候需要根据自己所使用操作系统的版本选择对应版本的Java17
不同版本的Java17

  1. 选择Windows版x64 Installer Java17

Q:如何知道使用Windows版本
A:在设置(Windows+I)>系统>系统信息查看设备规格和Windows规格
系统信息

Windows规格

由于本机使用的操作系统是 64 位 Windows11专业工作站版 23H2 ,因此选择Windows x64 Installer 的jdk-17_windows-x64_bin.exe
x64

  1. 下载Windows版 JDK17 x64 Installer
    当点击 https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe 下载连接后浏览器会自动开始下载Windows版 JDK17 x64 Installer

下载

使用快捷键 Ctrl+J 可以打开下载内容,查看下载的速度以及所需的时间
image.png

由于目前(2024/08/09)Java17可以免费使用,因此和Java8相比下载时不需要同意许可协议,也不需要注册和登录Oracle账号,因此下载Java17比下载Java8更加方便。

当Java17下载完成后,点击在文件夹中显示
在文件夹中显示

默认在下载目录(C:\Users\liuguanglei\Downloads)下会看到Java17的安装包jdk-17_windows-x64_bin.exe
下载目录

3.2 Windows 版Java17安装

3.2.1 Windows版Java17安装过程

  1. 左键双击Windows版Java17的安装包jdk-17_windows-x64_bin.exe启动安装程序

image.png
在弹出的用户账户控制,你要允许此应用对你的设备进行更改吗?选择是
用户账户控制

即可启动安装程序
image.png

  1. 点击下一步

image.png

  1. 选择目标文件夹

默认安装路径是C:\Program Files\Java\jdk-17
如果想要更改到其他目录,点击更改即可,但是注意安装路径不要包含中文字符和中文空格
image.png

  1. 点击下一步

image.png
安装进行中,安装过程需要几秒钟
image.png

  1. 安装完成

image.png

Java17安装完成后点击①后续步骤和②完成
image.png

  • 关闭:关闭Java17安装向导,完成Java17安装

3.2.2 Windows版Java17安装目录

Windows版Java17默认的安装路径是C:\Program Files\Java\jdk-17
image.png

Java17安装目录说明
安装目录

目录说明
bin该目录下主要存放JDK的各种工具,例如javac,java等等
conf该目录下主要存放JDK的相关配置文件
include该目录下主要存放一些平台(操作系统)特定的头文件
jmods该目录下主要存放JDK的各种模块
legal该目录下主要存放JDK各种模块的授权文档
lib该目录下主要存放JDK的一些补充jar包以及Java源码(src.zip)

作为Java初学者来说,目前只需要关注bin目录和lib目录

  • bin目录:存放Java提供的开发工具,例如javac,java,javadoc,javap 等等

bin目录

  • lib目录:src.zip 存放Java源代码文件(.java结尾的文件)
    lib目录

该文件可以使用WinRAR解压缩,WinRAR需要下载、安装后才能使用

将src.zip文件解压到src
解压

在弹出的用户账户控制,你要允许此应用对你的设备进行更改吗?选择是即可
image.png
src文件夹下存放的就是Java源代码
src文件夹

例如String.java
该文件位于 java.base\java\lang 目录下
image.png

Visual Studio Code是一个跨平台的文本编辑器,需要自己下载、安装后才能使用
VS Code

使用Visual Studio Code文本编辑器打开String.java
image.png

image.png

3.3 Windows版Java17配置JAVA_HOME环境变量

3.3.1 为什么Java17要配置JAVA_HOME环境变量

JAVA_HOME表示Java的安装路径,例如C:\Program Files\Java\jdk-17
image.png

后期我们会使用到Java开发的一些工具,例如TomcatMaven这些工具都会依赖JAVA_HOME环境变量。如果你不配置就无法正常使用,而且这些工具会提示你配置JAVA_HOME环境变量。
例如在终端位于Tomcat的bin目录下(D:\soft\java\apache-tomcat-10.1.28\bin)执行 startup.bat脚本启动Tomcat时会提示需要配置JAVA_HOME环境变量
image.png

而只有在安装Java并且配置JAVA_HOME环境变量以后,在终端位于Tomcat的bin目录下(D:\soft\java\apache-tomcat-10.1.28\bin)执行 startup.bat脚本才能正常启动Tomcat

  1. 打开文件资源管理器(Windows+E),进入Tomcat的bin目录(D:\soft\java\apache-tomcat-10.1.28\bin)

Tomcat的bin目录

  1. 在文件资源管理器的地址栏输入cmd后回车打开终端

image.png

此时终端所在的当前路径就是Tomcat的bin目录(D:\soft\java\apache-tomcat-10.1.28\bin)
image.png

  1. 在终端上输入startup.bat回车后启动Tomcat

启动Tomcat

image.png

启动成功之后在浏览器地址栏输入 http://127.0.0.1:8080 可以访问Tomcat首页
Tomcat首页

不过Tomcat运行窗口会有中文乱码问题
原因是因为Window终端默认是GBK编码(GB2312),但是Tomcat默认是UTF-8编码,为了解决乱码问题

Tomcat控制台中文乱码

因此启动之前需要将位于Tomcat配置文件目录(D:\soft\java\apache-tomcat-10.1.28\conf)的Tomcat日志配置文件logging.properties使用Visual Studio Code打开
image.png

image.png
将关于控制台编码由默认的UTF-8改成GBK,就可以解决Tomcat启动窗口中文乱码问题
image.png

image.png

java.util.logging.ConsoleHandler.encoding = GBK

编码修改成GBK以后重新打开终端后再次重启Tomcat,就会发现Tomcat运行窗口中文没有乱码
重启Tomcat

最后将控制台编码改回UTF-8,因为以后开发Java项目会使用UTF-8编码,而不是GBK编码
image.png

3.3.2 Java17配置JAVA_HOME环境变量

  1. 打开系统属性面板
    依次打开设置(Windows+I)>系统>系统信息

image.png

点击高级系统设置
高级系统设置

然后会弹出系统属性面板
image.png

  1. 在系统属性面板依次点击高级>环境变量打开环境变量面板

环境变量分为用户变量和系统变量,二者的区别是作用范围不同

  • 用户变量只针对当前用户有效
  • 系统变量针对所有用户都有效

Windows电脑通常只有一个人使用,不太可能有多个用户,因此建议使用系统变量
系统变量

  1. 配置Java17的JAVA_HOME环境变量
    点击系统变量的新建(W),然后输入变量名和变量值
    变量名:JAVA_HOME
    变量值:C:\Program Files\Java\jdk-17

Java17的JAVA_HOME

  1. 依次点击三个确定,关闭系统属性面板,完成Java17 的JAVA_HOME环境变量配置

image.png

  1. 验证Java17的JAVA_HOME环境变量配置是否成功

验证的方法就是启动一个终端,然后在终端输入echo %JAVA_HOME%,如果能够输出Java的安装路径表示配置成功

Q:如何启动终端
A:在文件资源管理器(Windows+E)的地址栏输入cmd后回车

image.png

就可以打开终端
打开终端

输入 echo %JAVA_HOME% 验证JAVA_HOME环境变量是否配置成功,如下图所示如果能够输出Java17的安装目录C:\Program Files\Java\jdk-17则表示配置成功
image.png

3.4 Windows版Java17配置Path环境变量

3.4.1 Java17自动配置Path环境变量

在安装Java17以后,Java17会自动配置Path环境变量

  1. 打开系统属性面板

在任务栏的搜索框搜索编辑系统环境变量,然后选择编辑系统环境变量并打开
image.png
然后会弹出系统属性面板

  1. 打开编辑环境变量面板
    在系统属性面板依次点击高级>环境变量>系统变量Path>编辑后可以查看到Java17自动配置的Path环境变量

image.png

不过配置的路径是C:\Program Files\Common Files\Oracle\Java\javapath,该路径下只有javac、java、javaw和jshell四个工具
image.png

这样也就意味着即使在没有手动配置Java17的Path环境变量的情况下依然可以在终端的任意路径下使用javac和java,例如在终端的任意路径下使用javac和java提供的-version选项查看Java编译器和解释器的版本信息
image.png

但是无法在终端的任意路径下使用Java提供的除了javac、java、javaw和jshell以外的其他工具,例如jconsole、jps、jstack等等,因此建议手动配置Java17的Path环境变量。
image.png

3.4.2 Java17手动配置Path环境变量

  1. 打开系统属性面板

在任务栏的搜索框搜索编辑系统环境变量,然后选择编辑系统环境变量并打开
image.png
然后会弹出系统属性面板
系统属性面板

  1. 在系统属性面板依次点击高级>环境变量打开环境变量面板

image.png

  1. 配置Java17的PATH环境变量
    首先点击系统变量的Path环境变量,再点击编辑

image.png

image.png

点击新建,将Java17安装目录的bin目录(C:\Program Files\Java\jdk-17\bin)添加到Path环境变量中
新建

并且置顶
选中Java17的Path环境变量,然后点击若干次上移
image.png

image.png

然后将Java17自动配置的Path环境变量删除image.png

删除Java17自动配置的Path环境变量

  1. 依次点击三次确定,关闭系统属性面板,完成Java17的Path环境变量配置

三次确定

  1. 验证Java17的Path环境变量是否配置成功

验证Java17的Path环境变量是否配置成功的方法就是重新开启一个终端,然后在终端的任意路径分别输入javac -version和java -version并回车,如下图所示如果终端能够输出Java编译器版本信息和Java解释器版本信息则表示Java17的Path环境变量配置成功
查看Java编译器和Java解释器的版本信息

3.4.3 Java17使用JAVA_HOME配置Path环境变量

Q:为什么Java17要使用JAVA_HOME配置Path环境变量
A:切换JDK版本时只需要修改JAVA_HOME环境变量的值即可

  1. 打开系统属性面板

在任务栏的搜索框搜索编辑系统环境变量,然后选择编辑系统环境变量并打开
编辑系统环境变量

然后会弹出系统属性面板

  1. 在系统属性面板依次点击高级>环境变量打开环境变量面板

image.png

  1. 使用JAVA_HOME配置Java17的PATH环境变量
    首先点击系统变量的Path环境变量,再点击编辑

image.png

编辑

将Java17的Path环境变量由C:\Program Files\Java\jdk-17\bin改成%JAVA_HOME%\bin
%JAVA_HOME%就表示C:\Program Files\Java\jdk-17
image.png

image.png

  1. 依次点击三次确定,关闭系统属性面板,完成Java17使用JAVA_HOME配置Path环境变量

image.png

  1. 验证Java17的Path环境变量配置是否成功

验证Java17的Path环境变量是否配置成功的方法就是重新开启一个终端,然后在终端的任意路径分别输入javac -version和java -version并回车,如果终端能够输出Java编译器版本信息和Java解释器版本信息则表示Java17的Path环境变量配置成功
查看Java编译器和Java解释器的版本信息

3.5 Windows版Java17和Java8 相互切换

3.5.1 如何实现Java17和Java8相互切换

由于开发项目时使用Java8,但是想要学习和使用高版本Java的新特性或者项目中想要使用Spring Boot 3,因此安装Java17,
此时电脑上同时存在两个不同版本的Java:Java8和Java17
image.png

那么如何在这两个版本之间来回切换?
首先需要知道当前使用的Java版本
在终端的任意路径通过javac -version和java -version得知目前使用的是Java17

Q:为什么Java版本是Java17?
A:因为通过系统属性面板查看①JAVA_HOME环境变量的值是Java17的安装路径,②JDK的Path环境变量引用了JAVA_HOME环境变量

image.png
那么想要实现Java8和Java17相互切换,只需要修改JAVA_HOME环境变量的变量值即可

3.5.2 Windows版Java17切换到Java8

想要从Java17切换到Java8,只需要将系统属性面板中JAVA_HOME环境变量的变量值C:\Program Files\Java\jdk-17修改成Java8的安装路径C:\Program Files\Java\jdk-1.8
image.png

然后重新开启一个终端,在终端的任意路径上输入javac -version和java -version,如果终端输出的Java编译器和Java解释器的版本信息为Java8则表示Java版本成功从Java17切换到Java8

3.5.3 Windows版Java8切换到Java17

从Java8再次切换到Java17,只需要将系统属性面板中JAVA_HOME环境变量的变量值C:\Program Files\Java\jdk-1.8改成Java17的安装路径C:\Program Files\Java\jdk-17

Windows版Java8切换到Java17

然后重新开启一个终端,在终端的任意路径上输入javac -version和java -version,如果终端输出的Java编译器和Java解释器版本信息为Java17则表示Java版本成功从Java8切换到Java17

3.6 Windows版Java17卸载

Q:什么时候需要卸载Java17
A:如果不再使用(例如公司项目全部使用Java21开发)Java17时就可以将其卸载
Windows版Java17的卸载需要删除Java17相关环境变量(Path环境变量、JAVA_HOME环境变量)以及Java17程序

3.6.1 删除Java17 Path环境变量

  1. 打开系统属性面板

在任务栏的搜索框搜索编辑系统环境变量,然后选择编辑系统环境变量并打开
image.png

然后会弹出系统属性面板
系统属性面板

  1. 在系统属性面板依次点击高级>环境变量打开环境变量面板

环境变量面板

  1. 删除Java17的Path环境变量

首先选择系统变量的Path,然后点击编辑
image.png
编辑

然后选择Java17的Path环境变量%JAVA_HOME%\bin,点击删除即可
image.png

image.png

  1. 依次点击三次确定关闭系统属性面板,完成Java17的Path环境变量删除

image.png

  1. 验证Java17的Path环境变量是否删除成功

验证方法是重新开启一个新的终端,在终端的任意路径下输入javac -version和java -version,如下图所示如果系统提示javac和java不是内部或外部命令,也不是可运行的程序或批处理文件则表示Java17的Path 环境变量删除成功

查看Java编译器和Java解释器的版本信息

3.6.2 删除Java17 JAVA_HOME环境变量

  1. 打开系统属性面板

在任务栏的搜索框搜索编辑系统环境变量,然后选择编辑系统环境变量并打开
编辑系统环境变量

然后会弹出系统属性面板
系统属性面板

  1. 在系统属性面板依次点击高级>环境变量打开环境变量面板

image.png

  1. 删除Java17的JAVA_HOME环境变量
    选择系统变量的JAVA_HOME,点击删除

image.png

删除

  1. 依次点击两次确定关闭系统属性面板完成Java17 JAVA_HOME环境变量的删除

两次确定

  1. 验证Java17 JAVA_HOME环境变量是否删除成功

验证方法是重新开启一个终端,然后在终端上输入echo %JAVA_HOME% 回车后,如下图所示如果不能输出Java17的安装路径而是输出%JAVA_HOME%,那么表示Java17 JAVA_HOME环境变量删除成功
验证Java17 JAVA_HOME环境变量是否删除成功

3.6.3 卸载Java17程序

  1. 打开安装的应用

右键点击开始菜单,然后左键选择安装的应用
image.png

此时可以查看安装的应用

免安装版本的软件不会在安装的应用列表显示
Java8已经被提前卸载

安装的应用列表

  1. 在安装的应用中搜索Java

搜索Java

  1. 选择Java17,点击卸载

卸载

确认卸载
确认卸载

然后在弹出的用户账户控制,你要允许此应用对你的设备进行更改吗? 选择是即可
用户账户控制

接下来就会开始卸载,此过程大概几秒钟
卸载中

卸载成功后在安装的应用中找不到Java17
找不到Java17

4 Windows版Java21开发环境搭建

4.1 Windows版Java21下载

  1. 访问Java的官网,其访问地址是https://www.oracle.com/java/

java官网

  1. 点击右上角的Download Java,跳转到Java的下载页面

Download Java

Java的下载地址是 https://www.oracle.com/java/technologies/downloads/

Java下载地址

目前(2024/08/09)Oracle官方提供最新可用的Java版本(JDK版本)是Java22、Java21 和Java17,最新的LTS版本是Java21
根据 Oracle 免费条款和条件 (NFTC),JDK 21 二进制文件可以在生产中免费使用,并且可以免费重新分发。
JDK 21 将根据 NFTC 接收更新,直到 2026 年 9 月,即下一个 LTS 发布一年后。后续的 JDK 21 更新将根据 Java SE OTN 许可证 (OTN) 进行许可,并且超出 OTN 许可证有限免费授予的生产使用将需要付费。
Java21付费策略

目前Java21支持三个系统

  • Linux
  • macOS
  • Windows

大家在下载Java21的时候需要根据自己所使用操作系统的版本选择对应版本的Java21
Java21支持的操作系统

  1. 选择Windows版 x64 Installer Java21

Q:如何知道使用Windows版本
A:在设置(Windows+I)>系统>系统信息查看设备规格和Windows规格
系统信息

设备规格和Windows规格

由于本机使用的操作系统是 64 位 Windows11专业工作站版 23H2 ,因此选择Windows x64 Installer 的jdk-21_windows-x64_bin.exe
x64 Installer

  1. 下载Windows版 JDK21 x64 Installer
    当点击 https://download.oracle.com/java/21/latest/jdk-21_windows-x64_bin.exe 下载连接后浏览器会自动开始下载Windows版 JDK21 x64 Installer

下载Windows版 JDK21 x64 Installer

使用快捷键 Ctrl+J 可以打开下载内容,查看下载的速度以及所需的时间
下载记录

由于目前Java21可以免费使用,因此和Java8相比下载时不需要同意许可协议,也不需要注册和登录Oracle账号,因此下载Java21比下载Java8更加方便。

当Java21下载完成后,点击在文件夹中显示
在文件夹中显示

默认在下载目录(C:\Users\liuguanglei\Downloads)下会看到Java21的安装包jdk-21_windows-x64_bin.exe
jdk-21_windows-x64_bin.exe

4.2 Windows版Java21安装

4.2.1 Windows版Java21安装过程

  1. 左键双击Windows版Java21的安装包jdk-21_windows-x64_bin.exe启动安装程序

左键双击

在弹出的用户账户控制,你要允许此应用对你的设备进行更改吗?选择是即可启动安装程序
用户账户控制

安装程序

  1. 点击下一步

点击下一步

  1. 选择目标文件夹

默认安装路径是C:\Program Files\Java\jdk-21
如果想要更改到其他目录,点击更改即可,但是注意安装路径不要包含中文字符和中文空格
选择目标文件夹

  1. 点击下一步

点击下一步

安装进行中,安装过程需要几秒钟
安装进行中

  1. 安装成功
    Java21安装完成后点击①后续步骤和②关闭
    安装成功

Java21官方文档

  • 关闭:关闭Java21安装向导,完成Java21安装

4.2.2 Windows版Java21安装目录

Windows版Java21默认的安装路径是C:\Program Files\Java\jdk-21
Java21安装路径

Java21安装目录说明
Java21安装目录

目录说明
bin该目录下主要存放JDK的各种工具,例如javac,java等等
conf该目录下主要存放JDK的相关配置文件
include该目录下主要存放一些平台(操作系统)特定的头文件
jmods该目录下主要存放JDK的各种模块
legal该目录下主要存放JDK各种模块的授权文档
lib该目录下主要存放JDK的一些补充jar包以及Java源码(src.zip)

作为Java初学者来说,目前只需要关注bin目录和lib目录

  • bin目录:存放Java提供的开发工具,例如javac,java,javadoc,javap 等等

bin目录

  • lib目录:src.zip 存放Java源代码文件(.java结尾的文件)

lib目录

该文件可以使用WinRAR解压缩,WinRAR需要下载、安装后才能使用
WinRAR

将src.zip文件解压到src
解压src.zip

在弹出的用户账户控制,你要允许此应用对你的设备进行更改吗?选择是即可
用户账户控制

src文件夹下存放的就是Java源代码
src文件夹

例如String.java
该文件位于 java.base\java\lang 目录下
String.java

Visual Studio Code是一个跨平台的文本编辑器,需要自己下载、安装后才能使用
VS Code官网

使用Visual Studio Code文本编辑器打开String.java
打开String.java

String.java

4.3 Windows版Java21配置JAVA_HOME环境变量

4.3.1 为什么Java21要配置JAVA_HOME环境变量

JAVA_HOME表示Java的安装路径,例如C:\Program Files\Java\jdk-21
JAVA_HOME

后期我们会使用到Java开发的一些工具,例如TomcatMaven这些工具都会依赖JAVA_HOME环境变量。如果你不配置就无法正常使用,而且这些工具会提示你配置JAVA_HOME环境变量。
例如在终端位于Tomcat的bin目录下(D:\soft\java\apache-tomcat-10.1.28\bin)执行 startup.bat脚本启动Tomcat时会提示需要配置JAVA_HOME环境变量
Tomcat的bin目录

而只有在安装Java并且配置JAVA_HOME环境变量以后,在终端位于Tomcat的bin目录下(D:\soft\java\apache-tomcat-10.1.28\bin)执行 startup.bat脚本才能正常启动Tomcat

  1. 打开文件资源管理器(Windows+E),进入Tomcat的bin目录(D:\soft\java\apache-tomcat-10.1.28\bin)

文件资源管理器

  1. 在文件资源管理器的地址栏输入cmd后回车打开终端

打开终端

此时终端所在的当前路径就是Tomcat的bin目录(D:\soft\java\apache-tomcat-10.1.28\bin)
Tomcat的bin目录

  1. 在终端上输入startup.bat回车后启动Tomcat

启动它Tomcat

启动Tomcat

启动成功之后在浏览器地址栏输入 http://127.0.0.1:8080 可以访问Tomcat首页
访问Tomcat首页

不过Tomcat运行窗口会有中文乱码问题
原因是因为Window终端默认是GBK编码(GB2312),但是Tomcat默认是UTF-8编码,为了解决乱码问题
中文乱码

因此启动之前需要将位于Tomcat配置文件目录(D:\soft\java\apache-tomcat-10.1.28\conf)的Tomcat日志配置文件logging.properties使用Visual Studio Code打开
logging.properties

打开方式

将关于控制台编码由默认的UTF-8改成GBK,就可以解决Tomcat启动窗口中文乱码问题
UTF-8

改成GBK

java.util.logging.ConsoleHandler.encoding = GBK

编码修改成GBK以后重新打开终端后再次重启Tomcat,就会发现Tomcat运行窗口中文没有乱码
重启Tomcat

最后将控制台编码改回UTF-8,因为以后开发Java项目会使用UTF-8编码,而不是GBK编码
还原编码配置

4.3.2 Java21配置JAVA_HOME环境变量

  1. 打开系统属性面板
    依次打开设置(Windows+I)>系统>系统信息

系统信息

点击高级系统设置
高级系统设置

然后会弹出系统属性面板
系统属性面板

  1. 在系统属性面板依次点击高级>环境变量打开环境变量面板

环境变量分为用户变量和系统变量,二者的区别是作用范围不同

  • 用户变量只针对当前用户有效
  • 系统变量针对所有用户都有效

Windows电脑通常只有一个人使用,不太可能有多个用户,因此建议使用系统变量
环境变量

  1. 配置Java21的JAVA_HOME环境变量
    点击系统变量的新建(W),然后输入变量名和变量值
    变量名:JAVA_HOME
    变量值:C:\Program Files\Java\jdk-21

配置JAVA_HOME环境变量

  1. 依次点击三个确定,关闭系统属性面板,完成Java21 的JAVA_HOME环境变量配置

三个确定

  1. 验证Java21的JAVA_HOME环境变量配置是否成功

验证的方法就是启动一个终端,然后在终端输入echo %JAVA_HOME%,如果能够输出Java21的安装路径表示配置成功

Q:如何启动终端
A:在文件资源管理器(Windows+E)的地址栏输入cmd后回车

文件资源管理器

就可以打开终端
打开终端

输入 echo %JAVA_HOME% 验证JAVA_HOME环境变量是否配置成功,如下图所示如果能够输出Java21的安装目录C:\Program Files\Java\jdk-21则表示配置成功
echo %JAVA_HOME%

4.4 Windows版Java21配置Path环境变量

4.4.1 Java21自动配置Path环境变量

在安装Java21以后,Java21会自动配置Path环境变量

  1. 打开系统属性面板

在任务栏的搜索框搜索编辑系统环境变量,然后选择编辑系统环境变量并打开
编辑系统环境变量

然后会弹出系统属性面板
系统属性面板

  1. 打开编辑环境变量面板
    在系统属性面板依次点击高级>环境变量>系统变量Path>编辑后可以查看到Java21自动配置的Path环境变量

环境变量面板

不过配置的路径是C:\Program Files\Common Files\Oracle\Java\javapath,该路径下只有javac、java、javaw和jshell四个工具
javapath

这样也就意味着即使在没有手动配置Java21的Path环境变量的情况下依然可以在终端的任意路径下使用javac和java,例如在终端的任意路径下使用javac和java提供的-version选项查看Java编译器和解释器的版本信息
查看Java版本

但是无法在终端的任意路径下使用Java提供的除了javac、java、javaw和jshell以外的其他工具,例如jconsole、jps、jstack等等,因此建议手动配置Java21的Path环境变量。

使用其他工具

4.4.2 Java21手动配置Path环境变量

  1. 打开系统属性面板

在任务栏的搜索框搜索编辑系统环境变量,然后选择编辑系统环境变量并打开
编辑系统环境变量

然后会弹出系统属性面板
系统属性面板

  1. 在系统属性面板依次点击高级>环境变量打开环境变量面板

环境变量

  1. 配置Java21的PATH环境变量
    首先点击系统变量的Path环境变量,再点击编辑

配置Java21的PATH环境变量
配置Java21的PATH环境变量

点击新建,将Java21安装目录的bin目录(C:\Program Files\Java\jdk-21\bin)添加到Path环境变量中
新建和添加

并且置顶
选中Java21的Path环境变量,然后点击若干次上移
置顶

置顶

然后将Java21自动配置的Path环境变量删除
删除

删除

  1. 依次点击三次确定,关闭系统属性面板,完成Java21的Path环境变量配置

三次确定

  1. 验证Java21的Path环境变量是否配置成功

验证Java21的Path环境变量是否配置成功的方法就是重新开启一个终端,然后在终端的任意路径分别输入javac -version和java -version并回车,如下图所示如果终端能够输出Java编译器版本信息和Java解释器版本信息则表示Java21的Path环境变量配置成功
查看Java版本

4.4.3 Java21使用JAVA_HOME配置Path环境变量

Q:为什么Java21要使用JAVA_HOME配置Path环境变量
A:切换JDK版本时只需要修改JAVA_HOME环境变量的值即可

  1. 打开系统属性面板

在任务栏的搜索框搜索编辑系统环境变量,然后选择编辑系统环境变量并打开
编辑系统环境变量

然后会弹出系统属性面板
系统属性面板

  1. 在系统属性面板依次点击高级>环境变量打开环境变量面板

环境变量

  1. 使用JAVA_HOME配置Java21的PATH环境变量
    首先点击系统变量的Path环境变量,再点击编辑

使用JAVA_HOME配置Java21的PATH环境变量

使用JAVA_HOME配置Java21的PATH环境变量

将Java21的Path环境变量由C:\Program Files\Java\jdk-21\bin改成%JAVA_HOME%\bin
%JAVA_HOME%就表示C:\Program Files\Java\jdk-21
使用JAVA_HOME配置Java21的PATH环境变量

使用JAVA_HOME配置Java21的PATH环境变量

  1. 依次点击三次确定,关闭系统属性面板,完成Java17使用JAVA_HOME配置Path环境变量

三次确定

  1. 验证Java21的Path环境变量配置是否成功

验证Java21的Path环境变量是否配置成功的方法就是重新开启一个终端,然后在终端的任意路径分别输入javac -version和java -version并回车,如果终端能够输出Java编译器版本信息和Java解释器版本信息则表示Java21的Path环境变量配置成功
查看Java版本

4.5 Windows版Java21和Java17相互切换

4.5.1 如何实现Java21和Java17相互切换

由于开发项目时使用Java17,但是想要学习和使用高版本Java的新特性,因此安装了Java21
此时电脑上同时存在两个不同版本的Java:Java17和Java21
Java17和Java21

那么如何在这两个版本之间来回切换?
首先需要知道当前使用的Java版本
在终端的任意路径通过javac -version和java -version得知目前使用的是Java21
查看Java版本

Q:为什么Java版本是Java21?
A:因为通过系统属性面板查看①JAVA_HOME环境变量的值是Java21的安装路径,②JDK的Path环境变量引用了JAVA_HOME环境变量

Java环境变量配置

那么想要实现Java17和Java21相互切换,只需要修改JAVA_HOME环境变量值即可

4.5.2 Windows版Java21切换到Java17

想要从Java21切换到Java17,只需要将JAVA_HOME环境变量的变量值C:\Program Files\Java\jdk-21修改成Java17的安装路径C:\Program Files\Java\jdk-17
Java21切换到Java17

然后重新开启一个终端,在终端的任意路径上输入javac -version和java -version,如下图所示如果终端输出的Java编译器和解释器版本信息为Java17则表示Java版本成功从Java21切换到Java17

查看Java版本

4.5.3 Windows版Java17切换到Java21

从Java17再次切换到Java21,只需要将JAVA_HOME环境变量的变量值C:\Program Files\Java\jdk-17改成Java21的安装路径C:\Program Files\Java\jdk-21
Java17切换到Java21

然后重新开启一个终端,在终端的任意路径上输入javac -version和java -version,如下图所示如果终端输出的Java编译器和解释器版本信息为Java21则表示Java版本成功从Java17切换到Java21

查看Java版本

4.6 Windows版Java21卸载

Q:什么时候需要卸载Java21
A:如果不再使用(例如公司项目全部使用Java25开发)Java21时就可以将其卸载

Windows版Java21的卸载需要删除Java21相关环境变量(Path环境变量、JAVA_HOME环境变量)以及Java21程序

4.6.1 删除Java21 Path环境变量

  1. 打开系统属性面板

在任务栏的搜索框搜索编辑系统环境变量,然后选择编辑系统环境变量并打开
编辑系统环境变量

然后会弹出系统属性面板
系统属性面板

  1. 在系统属性面板依次点击高级>环境变量打开环境变量面板

环境变量

  1. 删除Java21的Path环境变量

首先选择系统变量的Path,然后点击编辑
系统变量的Path

编辑

然后选择Java21的Path环境变量%JAVA_HOME%\bin,点击删除即可
删除

删除

  1. 依次点击三次确定关闭系统属性面板,完成Java21的Path环境变量删除

三次确定

  1. 验证Java21的Path环境变量是否删除成功

验证方法是重新开启一个新的终端,在终端的任意路径下输入javac -version和java -version,如下图所示如果系统提示javac和java不是内部或外部命令,也不是可运行的程序或批处理文件则表示Java21的Path 环境变量删除成功

查看Java版本

4.6.2 删除Java21 JAVA_HOME环境变量

  1. 打开系统属性面板

在任务栏的搜索框搜索编辑系统环境变量,然后选择编辑系统环境变量并打开
编辑系统环境变量

然后会弹出系统属性面板
系统属性面板

  1. 在系统属性面板依次点击高级>环境变量打开环境变量面板

环境变量

  1. 删除Java21的JAVA_HOME环境变量
    选择系统变量的JAVA_HOME,点击删除

删除Java21的JAVA_HOME环境变量

删除Java21的JAVA_HOME环境变量

  1. 依次点击两次确定关闭系统属性面板完成Java21 JAVA_HOME环境变量的删除

两次确定

  1. 验证Java21 JAVA_HOME环境变量是否删除成功
    验证的方法就是重新开启一个终端,然后在终端上输入echo %JAVA_HOME% 回车后
    如下图所示如果不能输出Java21的安装路径而是输出%JAVA_HOME%,那么表示Java21 JAVA_HOME环境变量删除成功

    查看JAVA_HOME环境变量

4.6.3 卸载Java21程序

  1. 打开安装的应用

右键点击开始菜单,然后左键选择安装的应用
安装的应用

此时可以查看安装的应用

免安装版本的软件不会在安装的应用列表显示
Java17已经被提前卸载

安装的应用列表

  1. 在安装的应用中搜索Java

搜索Java

  1. 选择Java21,点击卸载

卸载

确认卸载
确认卸载

然后在弹出的用户账户控制,你要允许此应用对你的设备进行更改吗? 选择即可
用户账户控制

接下来就会开始卸载,此过程大概几秒钟
开始卸载

卸载成功后在安装的应用中找不到Java
找不到Java

5 Mac平台CPU架构和Rosetta

5.1 Mac平台CPU架构

早期Mac电脑都是使用Intel CPU,但是2020年以后苹果在ARM架构基础上自己研发CPU,例如M1 Max,M2 Max,M2 Ultra,M3 Max ,M4,M4 Pro,M4 Max等等用于不同的Mac电脑(MacBook Air,MacBook Pro,Mac Studio,Mac Pro)
苹果官网

因此苹果的Mac电脑有Intel x86架构ARM架构两种不同的CPU架构
那么问题来了,如何知道自己所使用Mac电脑的CPU架构?
在macOS Sonoma点击左上角的苹果菜单,然后选择关于本机
关于本机

在弹出的面板中看到芯片是Apple开头的就是ARM架构
ARM架构

而macOS Monterey在弹出的概览窗口中看到芯片包含Intel就是 Intel x86架构
Intel x86架构

正是因为两种不同的CPU架构,直接导致基于Intel x86架构开发的程序(例如阿里旺旺、金山文档、亿图图示等等)是无法直接运行在基于ARM架构的CPU上,例如M1 Max,M1 Ultra,M2 Max,M2 Ultra,M3 Max,M3 Ultra等等

5.2 Rosetta

**5.2.1 **什么时候需要Rosetta

苹果公司提供了一个翻译工具-Rosetta 2,通过 Rosetta 2,搭载 Apple 芯片的 Mac 可以使用专为配备 Intel 处理器的 Mac 构建的 App,这样也就意味着以前为Intel CPU开发的程序可以通过Rosetta 2 运行在苹果芯片的Mac电脑上,例如阿里旺旺、金山文档等等。

5.2.3 如何安装Rosetta

Rosetta 2 仅适用于搭载 Apple 芯片的 Mac 电脑。
首次安装或者打开需要 Rosetta 的 App 时,例如阿里旺旺,恒星播放器,金山文档等等,系统会要求您安装 Rosetta。点按“安装”,然后输入您的用户名和密码以允许继续安装。
阿里旺旺

亿图图示

如果您点按“以后”,则下次打开需要 Rosetta 的 App 时,系统会再次要求您安装 Rosetta。
如果 Rosetta 已经安装,则系统不会再次要求您安装,也就是仅仅需要安装一次。

5.2.3 如何使用Rosetta

您不需要打开 Rosetta 或与这个 App 互动。每当您使用专为搭载 Intel 处理器的 Mac 电脑构建的 App 时,Rosetta 都会在后台自动运行。Rosetta 会转换相应 App,使它可以与 Apple 芯片搭配使用。 对于需要 Rosetta 的 App,在大多数情况下,您不会察觉它的性能有任何不同。不过,您应该联系 App 开发者,以询问相应 App 有没有一个版本能够以原生方式来充分利用 Apple 芯片的功能和性能。

5.2.4 哪些应用需要Rosetta

要识别需要 Rosetta 或者可以使用 Rosetta 的 App,请按照以下步骤操作:
在“访达”中选择一个 App。 从菜单栏的“文件”菜单中,选取“显示简介”。
显示简介

查看标有“种类”字样的信息: 应用程序 (Intel) 表示 App 仅支持 Intel 处理器,并且需要 Rosetta 才能在搭载 Apple 芯片的 Mac 上运行,例如阿里旺旺、金山文档、亿图图示

阿里旺旺

金山文档

亿图图示

应用程序(通用)表示 App 既支持 Apple 芯片也支持 Intel 处理器,并且在默认情况下使用 Apple 芯片。通用 App 不需要 Rosetta。例如微信、QQ、网易邮箱大师等等
对于标有“应用程序(通用)”的 App,“简介”窗口包含“使用 Rosetta 打开”这项设置。通过这项设置,网页浏览器等通用 App 可以使用还没有更新为支持 Apple 芯片的插件、扩展或其他附加组件。如果某个通用 App 无法识别您为这个 App 安装的附加组件,您可以退出这个 App,选择这项设置,然后再试一次。
微信

QQ

网易邮箱大师

应用程序(Apple芯片) 表示App是专门针对Apple芯片开发的,例如M1 Max,M1 Ultra,M2 Max,M2 Ultra,M3 Max,M3 Ultra等等都属于Apple芯片。
飞书

腾讯会议

6 iTerm2

6.1 iTerm2介绍

iTerm**2 **是macOS平台的第三方终端,目前最新版本是iTerm2 3.5.4
iTerm2

6.2 iTerm2下载

  1. 访问iTerm2官网

iTerm2

  1. 点击Download就可以下载最新版iTerm2

Download

  1. 使用快捷键Optional+Command+L查看下载内容

查看下载内容

点击在Finder中显示
点击在Finder中显示
就可以在访达的下载目录看到iTerm2-3_5_4.zip
在这里插入图片描述

6.3 iTerm2安装

  1. 解压iTerm2-3_5_4.zip

双击iTerm2-3_5_4.zip就可以解压
解压

  1. 将iTerm移动到应用程序文件夹

应用程序文件夹

6.4 iTerm2配置

6.4.1 修改默认字体大小

使用Command+空格打开聚焦搜索
聚焦搜索

然后搜索并打开iTerm
iTerm

首次打开iTerm时会提示 iTerm是从互联网下载的App。你确定是要打开它吗?点击打开
打开

就可以启动iTerm
启动iTerm

不过iTerm2默认的字体大小只有12,建议改成16
在启动iTerm后,首先点击菜单栏的iTerm>Settings,快捷键是Command+,
Settings

在Preferences>Profiles>Text将Font大小由12

Font大小由12改成16即可

改成16即可
Font大小由12改成16即可

6.4.2 修改默认配色

iTerm2默认配色配置是Regular
依次点击Profiles>Default>Colors>Color Presets…
Regular

就可以看到配色默认选择的是Regular
Regular

个人比较喜欢黑色,因此选择Tango Dark
Tango Dark

Tango Dark

7 右键助手专业版

7.1 右键助手专业版介绍

macOS的右键没有Windows功能丰富,只有新建文件夹、显示简介等等几个选项,无法新建文件。
右键助手专业版

因此一些第三方开发者提供了类似于Windows那样的右键菜单,例如右键助手专业版
邮件助手专业版

7.2 右键助手专业版安装

App Store中提供正版右键助手专业版,只需要搜索后付费安装即可
安装

7.3 右键助手专业版设置

在安装完右键助手专业版需要启用
启动右键助手专业版
右键助手专业版

右键助手专业版

点击去启用
去启用

去启用

再右键时右键菜单多了很多功能
右键菜单多了很多功能

7.4 右键助手专业版基本使用

7.4.1 新建文件

右键新建文件,选择Text
image.png
首次使用时需要授权
image.png

然后就可以新建文本文件
image.png

或者是其他文件,例如word等等
image.png

image.png

7.4.2 打开iTerm2终端

右键选择进如iTerm2
image.png

打开iTerm2终端
image.png

8 macOS版Java8开发环境搭建

8.1 macOS版Java8下载

  1. 访问Java的官网,其访问地址是 https://www.oracle.com/java/

image.png

  1. 点击右上角的Download Java,跳转到Java的下载界面

image.png
Java的下载地址是https://www.oracle.com/java/technologies/downloads/
image.png
目前(2024/08/12)Oracle官方提供最新可用的Java版本(JDK版本)是Java22、Java21 和Java17,最新的LTS版本是Java21
本次我们下载的是Java8,所以往下滚动到Java8的下载
image.png
目前Java8支持四个操作系统

  1. Linux
  2. macOS
  3. Solaris
  4. Windows

大家在下载Java8的时候需要根据CPU和操作系统的版本选择对应版本的Java8
image.png
macOS Sonoma可以点击左上角的苹果菜单>关于本机
关于本机

在弹出的面板中查看系统版本信息
目前本机使用的系统是macOS Sonoma 14.6.1,芯片是M1 Max
image.png

  1. 根据CPU架构和系统版本选择Java8

如果你的Mac电脑使用的Intel CPU,那么选择macOS版 x64 DMG Installerjdk-8u421-macosx-x64.dmg
image.png
如果你的Mac电脑使用的是Apple CPU,例如M1 Max,M1 Ultra,M2 Max,M2 Ultra,M3 Max等等,那么选择macOS版ARM64 DMG Installerjdk-8u421-macosx-aarch64.dmg
image.png
由于本机使用的是Apple M1 Max CPU,因此选择macOS版ARM64 DMG Installerjdk-8u421-macosx-aarch64.dmg

  1. 下载jdk-8u421-macosx-aarch64.dmg

首先点击jdk-8u421-macosx-aarch64.dmg,然后勾选许可协议,最后点击 Download jdk-8u421-macosx-aarch64.dmg
image.png

  1. 注册、登录Oracle账户

如果没有Oracle账户,大家可以在注册页面填写相应的信息注册Oracle账户

账户创建成功以后,在登录页面填写账户信息登录Oracle账户


登录成功之后浏览器会自动下载Java8使用快捷键 Option+Command+L 可以打开下载内容
点击更多操作
image.png

下载未经验证的文件
image.png

当Java8下载完成后,点击在Finder中显示
image.png
默认在下载目录(/Users/liuguanglei/Downloads)下会看到Java8的安装包jdk-8u421-macosx-aarch64.dmg
image.png

8.2 macOS版Java8安装

8.2.1 macOS版Java8安装过程

  1. 双击Java8安装包jdk-8u421-macosx-aarch64.dmg

image.png
image.png

  1. 双击JDK 8 Update421.pkg启动安装器

image.png

image.png

  1. 介绍

点击继续
image.png

  1. 目的宗卷

你要如何安装此软件?默认选择为这台电脑上的所有用户安装
选择一个目的宗卷:为这台电脑上的所有用户安装,点击继续
image.png

  1. 安装类型

默认选择标准安装,点击安装即可
image.png

安装之前安装器会提示 "安装器"正在尝试安装新软件 使用触控ID或输入密码以允许此次操作
安装器提示

输入密码或者使用TouchID后安装器就会开始安装,安装过程几秒钟就可以完成
输入密码

输入密码或者使用TouchID后安装器就会开始安装,安装过程仅需不到1分钟
image.png

  1. 安装完成

image.png
安装完成后可以点击①后续步骤?和②关闭

官方文档

  • 关闭:关闭安装向导,完成Java8安装

关闭安装向导后还会提示你要将“JDK 8 Update 421”安装器移到废纸篓吗?,建议点击保留,这样下次重装时不需要重新下载Java8
image.png

  1. 推出桌面的JDK 8 Update 421

选中桌面的JDK 8 Update 421,然后右键推出即可,当然也可以使用快捷键Command+E推出
推出

推出成功
推出成功

8.2.2 macOS版Java8安装目录

默认情况下Oracle ARM64位架构macOS版Java8安装目录是/Library/Java/JavaVirtualMachines/jdk-1.8.jdk
依次点击访达>前往>前往文件夹,快捷键是Shift+Command+G
前往文件夹

输入路径/Library/Java/JavaVirtualMachines/jdk-1.8.jdk后回车
输入路径

即可进入该目录
image.png

不过我们需要了解的是/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home目录
image.png

image.png
作为Java初学者来说,目前只需要关注bin目录和src.zip压缩文件

  • bin目录:存放Java提供的开发工具,例如javac,java,javadoc,javap等等

image.png

  • src.zip:存放Java源代码文件(.java结尾的文件)

image.png

可以双击src.zip解压后查看,默认解压在下载目录

src目录存放的是Java源代码文件(.java结尾)
image.png
例如查看String.java
String.java源文件位于src/java/lang目录下
image.png
Visual Studio Code是一个跨平台的文本编辑器,需要自己下载、安装后才能使用
image.png
使用Visual Studio Code文本编辑器打开String.java
image.png

首次使用Visual Studio Code时会提示 Visual Studio Code 是从互联网下载的App。你确定要打开它吗?点击打开即可
image.png

使用Visual Studio Code打开String.java时会提示Visual Studio Code想要访问下载文件夹中的文件,点击允许
image.png

image.png

8.3 macOS版Java8配置

8.3.1 macOS版Java8配置说明

当Oracle ARM64位架构macOS版Java8安装完成后,你会发现没有配置PATH环境变量,也可以在终端的任意路径下使用javac和java,例如javac和java通过 -version选项查看Java编译器和解释器版本信息
image.png

没有配置JAVA_HOME环境变量,也可以在终端的maven bin目录(/Users/liuguanglei/Document/soft/java/apache-maven-3.9.8/bin)下使用maven命令 mvn --version查看Maven版本信息以及依赖的Java环境信息,其中./表示当前路径
image.png

Q:这样是不是意味着不需要配置Java8的PATH环境变量和JAVA_HOME环境变量?
A:依然需要配置,因为后期我们会使用多个不同版本的JDK,例如在公司开发项目时使用Java8,而学习Java新特性时使用Java17或者Java21,那么就会有切换Java版本的需求,因此还需要配置Java8的PATH环境变量和JAVA_HOME环境变量。

8.3.2 macOS版Java8配置JAVA_HOME环境变量

JAVA_HOME指的就是Java8的Home目录(/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home)
image.png
image.png

配置JAVA_HOME环境变量的目的就是方便配置Java的PATH环境变量以及通过修改JAVA_HOME环境变量实现在终端上切换不同版本的Java,例如Java8和Java17的相互切换,Java17和Java21的相互切换。

  1. 启动iTerm终端

image.png

  1. 查看系统所使用的Shell类型

苹果公司在2019年宣布,从macOS Catalina(版本10.15)开始,系统的默认Shell从Bash切换到了Zsh(Z Shell)。
不同的macOS系统使用的Shell类型不同,因此对应的配置文件不同
例如zsh使用的.zshrc,而bash使用的.bash_profile。
使用echo $SHELL 命令查看当前系统所使用的Shell类型
macOS Sonoma默认使用的zsh
image.png

  1. 创建配置文件
  • 如果你使用的是bash shell,在用户家目录下创建.bash_profile文件
  • 如果你使用的是zsh shell,在用户家目录下创建.zshrc文件

macOS的用户家目录指的就是/Users/liuguanglei,其中liuguanglei表示用户名,每个系统的用户名可能不相同。
当启动终端后默认就是在用户家目录下,可以使用pwd命令查看当前所在的目录
image.png

macOS Sonoma使用的Shell是zsh,因此在用户的家目录(/Users/liuguanglei)下使用touch .zshrc命令创建.zshrc配置文件,文件创建成功后使用 ls -a命令查看所有文件image.png

  1. 打开.zshrc配置文件

在终端上输入vim .zshrc命令回车后打开用户家目录的.zshrc配置文件
image.png

此时vim处于命令模式,无法编辑文件内容
image.png

  1. 编辑.zshrc配置文件

需求:在.zshrc文件中添加Java8的JAVA_HOME环境变量
将输入法切换到英文后再按i键切换到编辑模式,只有进入编辑模式后才能修改文件内容
image.png
配置Oracle ARM64位架构macOS版Java8的JAVA_HOME环境变量

# 配置Oracle ARM64位架构macOS版Java8的JAVA_HOME环境变量   
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home

image.png
Oracle ARM64位架构macOS版Java8的JAVA_HOME环境变量配置完成后按esc键由编辑模式切换到命令模式
image.png

  1. 保存并退出vim

输入法在英文状态下输入:由命令模式切换到底行模式,然后再输入wq回车后保存并退出vim
image.png

成功保存并退出vim
image.png

  1. 重新加载.zshrc配置文件

在重新加载.zshrc配置文件之前,先使用echo $JAVA_HOME查看JAVA_HOME环境变量,发现JAVA_HOME环境变量的值为空
image.png
输入source .zshrc 命令并回车,重新加载.zshrc配置文件,让当前Shell环境中设置的JAVA_HOME环境变量立即生效
source 命令是在 Unix/Linux 系统中用于在当前 Shell 环境中执行指定脚本文件的命令。该命令通常用于重新加载修改过的 shell 配置文件,使更改立即生效,而不必注销并重新登录。
具体来说,source 命令用于读取并执行指定的脚本文件,而不是启动一个新的进程来执行。这使得在当前 Shell 环境中设置的环境变量、别名以及其他配置更改能够立即生效。

需要注意的是每次执行source .zshrc都会将.zshrc配置文件中的环境变量加载到当前Shell环境中(执行一次,加载一次)
image.png

  1. 验证配置

在终端上输入 echo $JAVA_HOME命令回车后
如果能够输出Java8安装目录的Home目录(/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home ),则表示JAVA_HOME环境变量配置成功
image.png

8.3.3 macOS版Java配置PATH环境变量

8.3.3.1 PATH环境变量介绍

PATH环境变量的本质就是一系列路径,例如/bin,/usr/bin,/usr/local/bin等等,多个路径之间使用冒号(:)隔开,macOS下可以在终端上输入echo $PATH命令回车后查看系统PATH环境变量
image.png

PATH环境变量的作用就是在终端上执行命令时,系统会从当前路径和PATH环境变量配置的路径下查找命令对应的可执行程序,然后执行该程序。
例如date命令可以查看系统日期时间,而where date 可以查看到date命令对应可执行程序的路径,正因为/bin目录在PATH环境变量中,因此在终端输入date命令实际上执行的是/bin目录下的date程序
image.png
如果输入一个不存在的命令,那么shell会提示command not found因为在PATH环境变量对应的路径下找不到一个名为datexxx的命令(程序)

image.png

8.3.3.2 PATH环境变量使用

需求:实现在macOS终端(例如内置终端和第三方终端iTerm)的任意路径下输入QQ就可以启动QQ
此次测试的QQ版本为6.9.52-26740

image.png

  1. 查找QQ安装目录

macOS系统中所有的软件都安装在访达的应用程序
应用程序

选择QQ,右键 显示包内容
显示包内容

此时会打开Contents目录
Contents目录

而在Contents/MacOS下刚好有个QQ,它是一个Unix可执行文件
image.png

只要将它所在的路径(/Applications/QQ.app/Contents/MacOS)配置在PATH环境变量中即可实现在终端的任意路径下输入QQ就可以启动QQ

  1. 启动终端

image.png

  1. 打开.zshrc配置文件

首先在终端上输入vim .zshrc命令回车后打开用户家目录的.zshrc配置文件
image.png
打开后可以看到Java8的JAVA_HOME环境变量的配置
image.png

  1. 编辑.zshrc配置文件

此时vim处于命令模式无法编辑文件内容,需要将输入法切换到英文状态下后再按i键由命令模式切换到编辑模式
image.png

配置QQ的PATH环境变量

# 配置QQ的PATH环境变量
export PATH=$PATH:/Applications/QQ.app/Contents/MacOS

image.png

QQ的PATH环境变量配置添加完成后按esc键由编辑模式切换到命令模式
image.png

  1. 保存并退出vim

在英文状态下输入:切换到底行模式,然后再输入wq并回车后保存并退出vim
image.png

成功保存并退出vim
image.png

  1. 重新加载.zshrc配置文件

在重新加载.zshrc配置文件之前,先使用echo $PATH查看系统PATH环境变量,发现系统PATH环境变量中没有包含QQ的PATH环境变量配置
image.png

输入source .zshrc 命令并回车,重新加载.zshrc配置文件,让当前Shell环境中设置的PATH环境变量立即生效
image.png

  1. 验证配置

先在终端输入echo $PATH查看PATH环境变量,PATH环境变量必须包含QQ的PATH环境变量配置
image.png

然后在终端的任意路径输入QQ回车后看是否能够启动成功
如果能够启动QQ则表示QQ的PATH环境变量配置成功
在用户的家目录启动QQ
image.png

在系统根目录启动QQ
image.png

终止命令运行可以使用Control+c

8.3.3.3 macOS版Java8配置PATH环境变量
  1. 启动iTerm

image.png

  1. 打开.zshrc配置文件

在终端上输入vim .zshrc命令回车后打开用户家目录的.zshrc配置文件
image.png

打开后可以看到Java8的JAVA_HOME环境变量的配置以及QQ的PATH环境变量配置
image.png

  1. 编辑.zshrc配置文件

此时vim处于命令模式无法编辑文件内容,需要将输入法切换到英文状态下后再按i键由命令模式切换到编辑模式
image.png

然后配置Oracle ARM64位架构macOS版Java8的PATH环境变量

# 配置Oracle ARM64位架构macOS版Java8的PATH环境变量
export PATH=$PATH:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/bin

image.png
配置Oracle ARM64位架构macOS版Java8的PATH环境变量后按esc键从编辑模式切换到命令模式
image.png

  1. 保存并退出vim

输入法在英文状态下输入:切换到底行模式,再输入wq并回车后保存并退出vim
image.png
成功保存并退出vim
image.png

  1. 重新加载.zshrc配置文件

在重新加载.zshrc配置文件之前,先使用echo $PATH查看系统PATH环境变量,发现系统PATH环境变量中没有包含Java8的PATH环境变量配置
image.png
输入source .zshrc 命令并回车,重新加载.zshrc配置文件,让当前Shell环境中设置的PATH环境变量立即生效
image.png

  1. 验证配置

在终端上输入echo $PATH命令查看系统的PATH环境变量,如果PATH环境变量包含了Java8则表示配置成功
image.png
不过细心的同学会发现QQ的PATH环境变量被加载了两次,因为每执行一次source .zshrc命令,QQ的PATH环境变量被加载一次到当前Shell环境中
image.png
重新开启一个新的终端(command+n),在终端上输入echo $PATH 查看系统PATH环境变量时会发现QQ的PATH环境变量不再重复出现(即只加载了一次)
image.png
同时也可以在终端的任意路径下使用Java提供的命令,例如javac命令和java命令通过-version选项可以查看版本信息
image.png

8.3.3.4 macOS版Java8使用JAVA_HOME环境变量配置PATH环境变量

Q:为什么Java8要使用JAVA_HOME配置Path环境变量
A:切换JDK版本时只需要修改JAVA_HOME环境变量的值即可

  1. 启动iTerm

image.png

  1. 打开.zshrc配置文件

在终端上输入vim .zshrc命令回车后打开家目录的.zshrc配置文件
image.png
打开以后看到Java8的JAVA_HOME环境变量的配置、QQ的PATH环境变量配置以及Java8的PATH环境变量配置
image.png

  1. 编辑.zshrc配置文件

此时vim处于命令模式无法编辑文件内容,需要将输入法切换到英文状态后再按i键由命令模式切换到编辑模式
image.png
然后使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java8的PATH环境变量

# 使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java8的PATH环境变量
export PATH=$PATH:$JAVA_HOME/bin

image.png

使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java8的PATH环境变量后按esc键由编辑模式切换到命令模式
image.png

  1. 保存并退出vim

输入法在英文状态下输入:切换到底行模式,再输入wq回车后保存并退出vim
image.png

成功保存并退出vim
image.png

  1. 重新加载.zshrc配置文件

在加载.zshrc配置文件之前先在终端上输入echo $PATH查看系统PATH环境变量,发现系统PATH环境变量中包含Java8的PATH环境变量配置
image.png
输入source .zshrc 命令并回车,重新加载.zshrc配置文件,让当前Shell环境中设置的PATH环境变量立即生效
image.png

  1. 验证配置

在终端上输入echo $PATH命令查看系统的PATH环境变量,如果PATH环境变量包含了Java8则表示配置成功
image.png
细心的同学会发现在系统PATH环境变量中QQ的PATH环境变量和Java8的PATH环境变量都被加载了两次,因为每执行一次source .zshrc命令,它们都会被加载一次到当前Shell环境中
image.png

如果重新开启新的终端,在终端上输入echo $PATH则会看到QQ的PATH环境变量以及Java8的PATH环境变量只加载一次
image.png

8.4 macOS版Java8卸载

Q:什么时候需要卸载Java8
A:如果不再使用(例如公司项目全部使用Java17开发)Java8时就可以将其卸载
Oracle ARM64位架构macOS版Java8卸载需要删除Java8相关的目录以及文件,除此以外还要删除.zshrc配置文件,.zshrc配置文件配置了Java8的JAVA_HOME环境变量和PATH环境变量

8.4.1 删除Java8相关的目录和文件

Java8相关的目录和文件说明
/Library/Java/JavaVirtualMachines/jdk-1.8.jdkJava8安装目录
/Library/Application Support/Oracle/JavaJava8支持目录
/Library/PreferencePanes/JavaControlPanel.prefPaneJava8控制面板首选项
/Library/Internet Plug-Ins/JavaAppletPlugin.pluginJava8 Applet插件

/Library/Java/JavaVirtualMachines/jdk-1.8.jdk,该目录是Java8安装目录
image.png
/Library/Application Support/Oracle/Java,该目录是Java8支持目录
image.png
/Library/PreferencePanes/JavaControlPanel.prefPane,该文件是Java8控制面板首选项
image.png
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin,该文件是Java8 Applet 插件
image.png
删除Java8相关的目录和文件需要使用管理员权限在终端上使用rm命令结合 -rf选项实现

  1. 启动终端

image.png

  1. 删除Java8安装目录

删除Java8安装目录需要使用sudo rm -rf /Library/Java/JavaVirtualMachines/jdk-1.8.jdk命令来完成。首次执行sudo rm -rf前需要输入用户的开机密码
image.png

  1. 删除Java8应用程序支持目录

删除Java8应用程序支持目录需要在终端上执行sudo rm -rf /Library/Application\ Support/Oracle/Java命令
image.png

  1. 删除Java8控制面板首选项

Java8 控制面板位于系统设置>Java
image.png
image.png
删除java8控制面板首选项需要在终端上执行 sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane 命令
image.png
删除完成后重新打开系统设置,系统设置的Java控制面板也会删除
image.png

  1. 删除Java8 Applet插件

删除Java8 Applet插件需要在终端上执行sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin命令
image.png

8.4.2 删除配置文件

  1. 启动终端

image.png

  1. 删除配置文件.zshrc

删除Java8环境变量配置文件.zshrc需要在终端上执行rm -f .zshrc命令
image.png

  1. 验证Java8是否卸载成功

删除.zshrc文件后,在终端的任意路径使用javac -version和java -version查看Java编译器和Java解释器版本信息,
如果提示The operation couldn’t be completed. Unable to locate a Java Runtime. Please visithttp://www.java.comfor information on installing Java.表示Java8卸载成功
image.png

9 macOS版Java17开发环境搭建

9.1 macOS版Java17下载

  1. 访问Java的官网,其访问地址是https://www.oracle.com/java/

image.png

  1. 点击右上角的Download Java,跳转到Java的下载界面

image.png
Java的下载地址是https://www.oracle.com/java/technologies/downloads/
image.png
目前(2024/08/12)Oracle官方提供最新可用的Java版本(JDK版本)是Java22、Java21 和Java17,最新的LTS版本是Java21
本次我们下载的是Java17,所以点击JDK17 切换到Java17的下载

这是 NFTC 计划的 JDK 17 的最后一次更新。 2024 年 9 月之后的更新将根据 Java SE OTN 许可证 (OTN) 进行许可,超出 OTN 许可证有限免费授权的生产使用将需要付费。
根据 Oracle 免费条款和条件 (NFTC),JDK 17 二进制文件可以在生产中免费使用,并且可以免费重新分发。
image.png
目前Java17支持三个操作系统

  • Linux
  • macOS
  • Windows

大家在下载Java17的时候需要根据自己所使用CPU和操作系统的版本选择对应版本的Java17
image.png

macOS Sonoma可以点击左上角的苹果菜单>关于本机
关于本机

在弹出的面板中查看系统版本信息
目前本机使用的系统是macOS Sonoma 14.6.1,芯片是M1 Max
image.png

  1. 根据CPU架构和系统版本选择Java17

如果你的Mac电脑使用的Intel CPU,那么选择Oracle macOS版 x64 DMG Installer的jdk-17_macos-x64_bin.dmg** **
image.png
如果你的电脑使用的是Apple CPU,例如M1 Max,M1 Ultra,M2 Max,M2 Ultra,M3 Max等等,那么选择Oracle macOS版ARM64 DMG Installer的jdk-17_macos-aarch64_bin.dmg
image.png

由于本机使用的是Apple M1 Max CPU,因此选择macOS版ARM64 DMG Installer的jdk-17_macos-aarch64_bin.dmg
image.png

  1. 下载jdk-17_macos-aarch64_bin.dmg

下载Oracle ARM64位架构macOS版Java17时目前不需要同意许可协议以及注册、登录Oracle账号
点击https://download.oracle.com/java/17/latest/jdk-17_macos-aarch64_bin.dmg ( sha256)下载Oracle官方提供的ARM 64位架构macOS版Java17
image.png

使用快捷键 Option+Command+L 可以打开下载内容
image.png

点击更多操作
image.png

点击下载未经验证的文件
image.png

下载完成后点击在Finder中显示
image.png

默认在下载目录(/Users/liuguanglei/Downloads)下会看到Java17的安装包jdk-17_macos-aarch64_bin.dmg
image.png

9.2 macOS版Java17安装

9.2.1 macOS版Java17安装过程

  1. 双击Java17安装包jdk-17_macos-aarch64_bin.dmg

image.png

image.png

  1. 双击JDK 17.0.12.pkg启动安装器

image.png
image.png

  1. 介绍

点击继续
image.png

  1. 目的宗卷

你要如何安装此软件?默认选择为这台电脑上的所有用户安装
选择一个目的宗卷:为这台电脑上的所有用户安装,点击继续
image.png

  1. 安装类型

默认选择标准安装,点击安装即可
image.png

安装之前安装器会提示 "安装器"正在尝试安装新软件 使用触控ID或输入密码以允许此次操作
安装器提示

输入密码或者使用TouchID后安装器就会开始安装,安装过程几秒钟就可以完成
输入密码

image.png

  1. 安装完成

image.png
安装完成后可以点①击访问JavaSE文档和②关闭

访问JavaSE文档

  • 关闭:关闭安装向导,完成Java17安装

关闭安装向导时还会提示你要将“JDK 17.0.12”安装器移到废纸篓吗?,建议点击保留,这样下次重装时不需要重新下载Java17
image.png

  1. 推出桌面的JDK 17.0.12

选中桌面的JDK 17.0.12,然后右键推出即可,当然也可以使用快捷键Command+E推出
推出

推出成功
推出成功

9.2.2 macOS版Java17安装目录

默认情况下Oracle ARM64位架构macOS版Java17安装目录是/Library/Java/JavaVirtualMachines/jdk-17.jdk
依次点击访达>前往>前往文件夹,快捷键是Shift+Command+G
前往文件夹

输入路径/Library/Java/JavaVirtualMachines/jdk-17.jdk后回车
输入路径

可以进入该目录
image.png

不过我们需要了解的是/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home目录
Home目录

image.png

Java17 Home目录说明

目录说明
bin该目录下主要存放JDK的各种工具命令,例如javac和java
conf该目录下主要存放JDK相关的配置文件
include该目录下主要存放一些平台的头文件
jmods该目录下主要存放JDK的各种模块
legal该目录下主要存放JDK各模块的授权文档
lib该目录下主要存放JDK工具的一些补充jar包和源代码,Java源码src.zip在该目录下

作为Java初学者来说,目前只需要关注bin目录和lib文件夹中的src.zip压缩文件

  • bin目录:存放Java提供的开发工具,例如javac,java,javadoc,javap等等

image.png

  • src.zip:存放Java源代码文件(.java结尾的文件)

image.png
可以双击src.zip解压后查看,默认解压在下载目录
image.png
src目录存放的是Java源代码文件(.java结尾)
image.png
例如查看String.java
String.java源文件在src/java.base/java/lang目录下
然后选择src/java.base/java/lang/String.java
image.png

Visual Studio Code是一个跨平台的文本编辑器,需要自己下载、安装后才能使用
image.png
使用Visual Studio Code文本编辑器打开String.java
image.png

image.png

9.3 macOS版Java17配置

9.3.1 macOS版Java17配置说明

当Oracle ARM64位架构macOS版Java17安装完成后,你会发现没有配置PATH环境变量,也可以在终端的任意路径下使用javac和java,例如javac和java通过 -version选项查看Java编译器和解释器版本信息
image.png
没有配置JAVA_HOME环境变量,也可以在终端的maven bin目录(/Users/liuguanglei/workspace/soft/java/apache-maven-3.9.8/bin)下使用maven命令 mvn --version查看Maven版本信息以及依赖的Java环境信息,其中./表示当前路径
image.png

Q:这样是不是意味着不需要配置Java17的PATH环境变量和JAVA_HOME环境变量
A:依然需要配置,因为后期我们会使用多个不同版本的JDK,例如在公司开发项目时使用Java8,而学习Java新特性时使用Java17或者Java21,那么就会有切换Java版本的需求,因此还需要配置Java17的PATH环境变量和JAVA_HOME环境变量。

9.3.2 macOS版Java17配置JAVA_HOME环境变量

JAVA_HOME指的就是Java17的Home目录(/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home)

image.png

配置JAVA_HOME环境变量的目的就是方便配置Java的PATH环境变量以及通过修改JAVA_HOME环境变量实现在终端上切换不同版本的Java,例如Java8和Java17的相互切换,Java17和Java21的相互切换。

  1. 启动Visual Studio Code

image.png

点击Welcome
image.png

取消勾选Show welcome page on startup
image.png

image.png

然后关闭Welcome
image.png

  1. 打开/Users/liuguanglei目录



Visual Studio Code想要访问桌面文件夹中的文件,点击允许
image.png

Visual Studio Code想要访问其他App的数据,点击允许
image.png
Visual Studio Code想要访问文稿文件夹中的文件,点击允许
image.png
Visual Studio Code想要访问受iCloud云盘管理的文件,点击允许
image.png

“Visual Studio Code”想访问你的提醒事项。点击允许
image.png
勾选信任作者
image.png

  1. 创建配置文件

macOS Sonoma使用的Shell是zsh,因此在家目录(/Users/liuguanglei)下创建.zshrc配置文件
在文件资源管理器右键New File
image.png
设置文件名为.zshrc后回车

Visual Studio Code会自动打开.zshrc配置文件
image.png

  1. 编辑.zshrc配置文件

在.zshrc文件中配置Oracle ARM64位架构macOS版Java17的JAVA_HOME环境变量

# 配置Oracle ARM64位架构macOS版Java17的JAVA_HOME环境变量
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

image.png
配置完成后按Command+S保存文件
image.png

  1. 打开终端

依次点击Visual Studio Code菜单栏的Terminal>New Terminal
image.png
就可以启动Visual Studio Code内置的终端
image.png

  1. 验证配置

在终端上输入 echo $JAVA_HOME命令回车
如果能够输出Java17的Home目录(/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home),则表示Java17的JAVA_HOME环境变量配置成功
image.png

9.3.3 macOS版Java17配置PATH环境变量

9.3.3.1 PATH环境变量介绍

PATH环境变量的本质就是一系列路径,例如/bin,/usr/bin,/usr/local/bin等等,多个路径之间使用冒号(:)隔开,macOS下可以在终端上输入echo $PATH命令回车后查看系统PATH环境变量
image.png
PATH环境变量的作用就是在终端上执行命令时,系统会从当前路径和PATH环境变量配置的路径下查找命令对应的可执行程序,然后执行该程序。
例如date命令可以查看系统日期,而where date 可以查看到date命令对应的可执行程序路径,正因为/bin目录在PATH环境变量中,因此在终端输入date命令实际上执行的是/bin目录下的date程序
image.png
如果输入一个不存在的命令,那么shell会提示command not found,因为在PATH环境变量对应的路径下找不到一个名为datexxx的命令(程序)
image.png

9.3.3.2 PATH环境变量的使用

需求:实现在macOS终端(例如内置终端和第三方终端iTerm)的任意路径下输入WeChat就可以启动微信
此次测试的微信版本为Version. 3.8.8 (28486)
image.png

  1. 找到微信安装目录

macOS系统中所有的软件都安装在访达的应用程序

选择QQ,右键 显示包内容
image.png
此时会打开Contents目录
image.png
而在Contents/MacOS下刚好有个WeChat,它是一个Unix可执行文件
image.png
只要将它所在的路径(/Applications/WeChat.app/Contents/MacOS)配置在PATH环境变量中即可实现在终端的任意路径下输入QQ就可以启动微信

  1. 启动Visual Studio Code

image.png

  1. 打开.zshrc文件

image.png

image.png

image.png

点击.zshrc配置文件
image.png

打开后可以看到Java17的JAVA_HOME环境变量的配置
image.png

  1. 编辑.zshrc配置文件

在.zshrc配置文件中添加微信的PATH环境变量配置

# 配置微信的PATH环境变量
export PATH=$PATH:/Applications/WeChat.app/Contents/MacOS

image.png

配置完成后按Command+S保存配置
image.png

  1. 验证配置

打开终端
image.png
image.png

先在终端输入echo $PATH查看PATH环境变量,PATH环境变量必须包含QQ的PATH环境变量配置
image.png
然后在终端的任意路径输入WeChat回车后看是否能够启动成功
如果能够启动微信则表示微信的PATH环境变量配置成功
在用户家目录启动微信
image.png
在系统根目录启动微信
image.png
终止命令运行可以使用Control+c

9.3.3.3 macOS版Java17配置PATH环境变量
  1. 启动Visual Studio Code

image.png

  1. 打开/Users/liuguanglei目录

image.png

image.png

  1. 打开.zshrc配置文件

打开后可以看到Java17的JAVA_HOME环境变量的配置以及微信的PATH环境变量配置
image.png

  1. 编辑.zshrc配置文件

配置Oracle ARM64位架构macOS版Java17的PATH环境变量

# 配置Oracle ARM64位架构macOS版Java17的PATH环境变量
export PATH=$PATH:/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home/bin

image.png
配置完成后按Command+S保存
image.png

  1. 启动终端

依次点击Visual Studio Code菜单栏的New Terminal>New Terminal
image.png
就可以启动Visual Studio Code内置的终端
image.png

  1. 验证配置

首先在终端的任意路径下执行echo $PATH查看系统PATH环境变量
如果系统PATH环境变量中包含Java17的PATH环境变量则表示Java17的PATH环境变量配置成功
image.png
然后在终端的任意路径使用Java提供的javac和java结合-version选项查看Java编译器和解释器的版本信息应该为Java17
image.png

9.3.3.4 macOS版Java17使用JAVA_HOME配置PATH环境变量

Q:为什么Java17要使用JAVA_HOME配置Path环境变量
A:切换JDK版本时只需要修改JAVA_HOME环境变量的值即可

  1. 启动Visual Studio Code

image.png

  1. 打开/Users/liuguanglei目录

image.png

  1. 打开.zshrc配置文件

.zshrc配置文件位于/Users/liuguanglei目录下
image.png

  1. 编辑.zshrc配置文件

使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java17的PATH环境变量

# 使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java17的PATH环境变量
export PATH=$PATH:$JAVA_HOME/bin

image.png
配置完成后按Command+S保存
image.png

  1. 打开终端

依次点击Visual Studio Code菜单栏Terminal>New Terminal
image.png
就可以启动Visual Studio Code内置的终端
image.png

  1. 验证配置

首先在终端的任意路径下执行echo $PATH查看系统PATH环境变量,如果PATH环境变量包含Java17的PATH环境变量配置则表示Java17的PATH环境变量配置成功
image.png
然后在终端的任意路径使用Java提供的javac和java命令结合-version选项查看Java编译器和解释器的版本信息应该是Java17
image.png

9.4 macOS版Java17和Java8相互切换

9.4.1 如何实现macOS版Java17和Java8相互切换

由于开发项目时使用Java8,但是学习Java17新特性或者使用Spring Boot 3时安装了Java17,因此此时Mac电脑上同时存在两个不同版本的JDK,分别是Oracle ARM64位架构macOS版的Java8和Java17
image.png
那么如何在这两个版本中间切换?

首先需要知道当前使用的Java版本
在终端的任意路径通过javac -version和java -version得知目前使用的是Java17
image.png
Q:为什么是Java17?
A:因为在.zshrc配置文件中JAVA_HOME环境变量的值是Java17的Home目录(/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home),而Java的PATH环境变量引用了JAVA_HOME环境变量,因此当前Java版本是Java17

image.png
那么想要实现Java8和Java17相互切换,只需要修改JAVA_HOME环境变量的变量值即可

9.4.2 macOS版Java17切换到Java8

想要从Java17切换到Java8,只需要将JAVA_HOME环境变量的变量值修改成Java8的Home路径(/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home)

  1. 启动Visual Studio Code

image.png

  1. 打开/Users/liuguanglei目录

image.png

liuguanglei

image.png

  1. 打开.zshrc配置文件

.zshrc配置文件位于/Users/liuguanglei目录下
image.png

  1. 编辑.zshrc配置文件

将JAVA_HOME环境变量的变量值修改成Java8的Home目录(/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home)

# 配置Oracle ARM64位架构macOS版Java8的JAVA_HOME环境变量   
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home

# 配置微信的PATH环境变量
export PATH=$PATH:/Applications/WeChat.app/Contents/MacOS

# 使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java8的PATH环境变量
export PATH=$PATH:$JAVA_HOME/bin

image.png
配置完成后按Command+S保存
保存配置

  1. 启动终端

依次点击Visual Studio Code菜单栏的New Terminal>New Terminal
image.png

就可以启动Visual Studio Code内置的终端
image.png

  1. 验证配置

首先在终端的任意路径输入echo $JAVA_HOME,查看JAVA_HOME环境变量的变量值是否为Java8的Home目录
image.png

然后在终端的任意路径使用Java提供的javac和java命令结合-version选项查看Java编译器和解释器的版本信息是否为Java8,如果是Java8则表示当前Java版本成功从Java17切换到Java8
image.png

9.4.3 macOS版Java8切换到Java17

从Java8再次切换到Java17,只需要将JAVA_HOME环境变量的变量值改成Java17的Home目录(/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home)

  1. 启动Visual Studio Code

启动Visual Studio Code

  1. 打开/Users/liuguanglei目录

打开liuguanglei目录

liuguanglei目录

liuguanglei目录

  1. 打开.zshrc配置文件

.zshrc配置文件位于/Users/liuguanglei目录下

.zshrc配置文件

  1. 编辑.zshrc配置文件

image.png

# 配置Oracle ARM64位架构macOS版Java17的JAVA_HOME环境变量   
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

# 配置微信的PATH环境变量
export PATH=$PATH:/Applications/WeChat.app/Contents/MacOS

# 使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java17的PATH环境变量
export PATH=$PATH:$JAVA_HOME/bin

配置完成后按Command+S保存
image.png

  1. 启动终端

依次点击Visual Studio Code菜单栏的New Terminal>New Terminal
启动终端

就可以启动Visual Studio Code内置的终端
VS Code内置的终端

  1. 验证配置

首先在终端的任意路径输入echo $JAVA_HOME,查看JAVA_HOME环境变量的变量值是否为Java17的Home目录
验证配置

然后在终端的任意路径使用Java提供的javac和java命令结合-version选项查看Java编译器和解释器的版本信息是否为Java17,如果是Java17则表示当前Java版本成功从Java8切换到Java17

查看Java版本

9.5 macOS版Java17卸载

Q:什么时候需要卸载Java17
A:如果不再使用(例如公司项目全部使用Java21开发)Java17时就可以将其卸载

Oracle ARM64位架构macOS版Java17卸载需要删除Java17安装目录
除此以外还要删除.zshrc配置文件,.zshrc配置文件中包含Java17的PATH环境变量和JAVA_HOME环境变量配置

9.5.1 删除Java17安装目录

Oracle ARM64位架构macOS版Java17的安装目录是/Library/Java/JavaVirtualMachines/jdk-17.jdk
image.png

选择jdk-17.jdk,右键>移除到废纸篓
image.png
然后使用Touch ID或者使用密码
image.png
这样就可以将Java17的安装目录移动到废纸篓
image.png

使用command+Shift+delete清空废纸篓
image.png
image.png

删除成功后JavaVirtualMachines目录下看不到Java17的安装目录
image.png

9.5.2 删除配置文件

  1. 启动Visual Studio Code

image.png

  1. 打开/Users/liuguanglei文件夹

image.png

image.png

image.png
点击Move to Trash
image.png
.zshrc配置文件删除成功
image.png

  1. 验证Java17是否卸载成功

删除Java17安装目录以及.zshrc配置文件后

在终端的任意路径使用javac -version和java -version查看Java编译器和Java解释器版本信息,如果提示The operation couldn’t be completed. Unable to locate a Java Runtime. 表示Java17卸载成功

image.png

10 macOS版Java21开发环境搭建

10.1 macOS版Java21下载

  1. 访问Java的官网,其访问地址是https://www.oracle.com/java/

image.png

  1. 点击右上角的Download Java,跳转到Java的下载界面

image.png
Java的下载地址是https://www.oracle.com/java/technologies/downloads/
image.png
目前(2024/08/12)Oracle官方提供最新可用的Java版本(JDK版本)是Java22、Java21 和Java17,最新的LTS版本是Java21
本次我们下载的是Java21,所以点击JDK21 切换到Java21的下载

根据 Oracle 免费条款和条件 (NFTC),JDK 21 二进制文件可以在生产中免费使用,并且可以免费重新分发。
JDK 21 将根据 NFTC 接收更新,直到 2026 年 9 月,即下一个 LTS 发布一年后。后续的 JDK 21 更新将根据 Java SE OTN 许可证 (OTN) 进行许可,并且超出 OTN 许可证有限免费授予的生产使用将需要付费。

Java21

目前Java21支持三个操作系统

  1. Linux
  2. macOS
  3. Windows

大家在下载Java21的时候需要根据自己所使用CPU和操作系统的版本选择对应版本的Java21
** **image.png

macOS Sonoma可以点击左上角的苹果菜单
在弹出的面板中查看系统版本信息
目前本机使用的系统是macOS Sonoma 14.6.1,芯片是M1 Max
关于本机

image.png

  1. 根据CPU架构和系统版本选择Java21

如果你的Mac电脑使用的Intel CPU,那么选择macOS版 x64 DMG Installer的jdk-21_macos-x64_bin.dmg
image.png

如果你的电脑使用的是Apple CPU,例如M1 Max,M1 Ultra,M2 Max,M2 Ultra,M3 Max等等,那么选择macOS版ARM64 DMG Installer的jdk-21_macos-aarch64_bin.dmg** **

image.png

由于本机使用的是Apple M1 Max CPU,因此选择macOS版ARM64 DMG Installer的jdk-21_macos-aarch64_bin.dmg** **
image.png

  1. 下载jdk-21_macos-aarch64_bin.dmg

下载Oracle ARM架构 64位macOS版Java21时目前不需要同意许可协议以及注册、登录Oracle账号
点击https://download.oracle.com/java/21/latest/jdk-21_macos-aarch64_bin.dmg下载Oracle** ARM64位架构macOS版Java21**
image.png
使用快捷键 Option+Command+L 可以打开下载内容,查看下载的速度以及所需的时间
image.png
当Java21下载完成后,点击在Finder中显示
image.png
** 默认在下载目录(/Users/liuguanglei/Downloads)下会看到Java21的安装包jdk-21_macos-aarch64_bin.dmg**
image.png

10.2 macOS版Java21安装

10.2.1 macOS版Java21安装过程

  1. 双击Java21安装包jdk-21_macos-aarch64_bin.dmg

image.png
image.png

  1. 双击JDK 21.0.4.pkg启动安装器

image.png

image.png

  1. 介绍

点击继续
image.png

  1. 目的宗卷

你要如何安装此软件?默认选择为这台电脑上的所有用户安装
选择一个目的宗卷:为这台电脑上的所有用户安装,点击继续
image.png

  1. 安装类型

默认选择标准安装,点击安装即可
image.png
安装之前安装器会提示 "安装器"正在尝试安装新软件 使用触控ID或输入密码以允许此次操作
安装器

输入密码或者使用TouchID后安装器就会开始安装,安装过程几秒钟就可以完成
输入密码

image.png

  1. 安装完成

image.png

安装完成后可以点击访问JavaSE文档和关闭

JavaSE文档

  • 关闭:关闭安装向导,完成Java21安装

关闭安装向导时还会提示你要将“JDK 21.0.4”安装器移到废纸篓吗?,建议点击保留,这样下次重装时不需要重新下载Java21
image.png

  1. 推出桌面的JDK 21.0.4

选中桌面的JDK 21.0.4,然后右键推出即可,当然也可以使用快捷键Command+E推出

推出Java

推出成功

推出成功

10.2.2 macOS版Java21安装目录

默认情况下Oracle ARM64位架构macOS版Java21安装目录是/Library/Java/JavaVirtualMachines/jdk-21.jdk
依次点击访达>前往>前往文件夹,快捷键是Shift+Command+G

前往文件夹

输入路径/Library/Java/JavaVirtualMachines/jdk-21.jdk后回车

前往Java21文件夹

jdk-21.jdk

不过我们需要了解的是/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home目录
Home目录

image.png
Java21 Home目录说明

目录说明
bin该目录下主要存放JDK的各种工具命令,例如javac和java
conf该目录下主要存放JDK相关的配置文件
include该目录下主要存放一些平台的头文件
jmods该目录下主要存放JDK的各种模块
legal该目录下主要存放JDK各模块的授权文档
lib该目录下主要存放JDK工具的一些补充jar包和源代码,Java源码src.zip在该目录下
man该目录下主要是存放JDK的帮助文档

作为Java初学者来说,目前只需要关注bin目录和lib文件夹中的src.zip压缩文件

  • bin目录:存放Java提供的开发工具,例如javac,java,javadoc,javap等等

image.png

  • src.zip:存放Java源代码文件(.java结尾的文件)

image.png

可以双击src.zip解压后查看,默认解压在下载目录
image.png
src目录存放的是Java源代码文件(.java结尾)
image.png
例如查看String.java
String.java源文件在src/java.base/java/lang目录下
然后选择src/java.base/java/lang/String.java
image.png
Visual Studio Code是一个跨平台的文本编辑器,需要自己下载、安装后才能使用
image.png
使用Visual Studio Code文本编辑器打开String.java
image.png

image.png

10.3 macOS版Java21配置

10.3.1 macOS版Java21配置说明

当Oracle ARM64位架构macOS版Java21安装完成后,你会发现没有配置PATH环境变量,也可以在终端的任意路径下使用javac和java,例如javac和java通过 -version选项查看Java编译器和解释器的版本信息
image.png

没有配置JAVA_HOME环境变量,也可以在终端的maven bin目录(/Users/liuguanglei/workspace/soft/java/apache-maven-3.9.6/bin)下使用maven命令 mvn --version查看Maven版本信息以及依赖的Java环境信息,其中./表示当前路径

image.png

Q:这样是不是意味着不需要配置Java21的PATH环境变量和JAVA_HOME环境变量?
A:依然需要配置,因为后期我们会使用多个不同版本的JDK,例如在公司开发项目时使用Java8,而学习Java新特性时使用Java17或者Java21,那么就会有切换Java版本的需求,因此还需要配置Java21的PATH环境变量和JAVA_HOME环境变量。

10.3.2 macOS版Java21配置JAVA_HOME环境变量

JAVA_HOME指的就是Java21的Home目录(/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home)
JAVA_HOME

image.png

配置JAVA_HOME环境变量的目的就是方便配置Java的PATH环境变量以及通过修改JAVA_HOME环境变量实现在终端上切换不同版本的Java,例如Java8和Java17的相互切换,Java17和Java21的相互切换。

  1. 启动Visual Studio Code

image.png

  1. 打开/Users/liuguanglei目录

image.png

liuguanglei

** **image.png

  1. 创建配置文件

macOS Sonoma使用的Shell是zsh,因此在家目录(/Users/liuguanglei)下创建.zshrc配置文件
在文件资源管理器右键New File
创建配置文件

设置文件名为.zshrc后回车
.zshrc

Visual Studio Code会自动打开.zshrc配置文件
image.png

  1. 在配置文件中添加Java21的JAVA_HOME环境变量

**在.zshrc文件中配置Oracle ARM64位架构macOS版Java21的JAVA_HOME环境变量 **

# 配置Oracle ARM64位架构macOS版Java21的JAVA_HOME环境变量   
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home

image.png
配置完成后按Command+S保存文件
image.png

  1. 打开终端

依次点击Visual Studio Code菜单栏的Terminal>New Terminal

就可以启动Visual Studio Code内置的终端
image.png

  1. 验证配置

在终端上输入 echo $JAVA_HOME命令回车后
如果能够输出Java21的Home目录(/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home ),则表示Java21的JAVA_HOME环境变量配置成功

image.png

10.3.3 macOS版Java21配置PATH环境变量

10.3.3.1 PATH环境变量介绍

**PATH环境变量的本质就是一系列路径,例如/bin,/usr/bin,/usr/local/bin等等,多个路径之间使用冒号(:)隔开,macOS下可以在终端上使用echo $PATH查看系统PATH环境变量 **
image.png

PATH环境变量的作用就是在终端上执行命令时,系统会从当前路径和PATH环境变量配置的路径下查找命令对应的可执行程序,然后执行该程序。

例如date命令可以查看系统日期,而where date 可以查看到date命令对应的可执行程序路径,正因为/bin目录在PATH环境变量中,因此在终端输入date命令实际上执行的是/bin目录下的date程序
image.png
如果输入一个不存在的命令,那么shell会提示command not found,因为在PATH环境变量对应的路径下找不到一个名为datexxx的命令(程序)
image.png

10.3.3.2 PATH环境变量的使用

需求:实现在macOS终端(例如内置终端和第三方终端iTerm)的任意路径下输入DingTalk就可以启动钉钉
此次测试的钉钉版本为Version 7.6.3 (38842528)
image.png

  1. 找到钉钉安装目录

macOS系统中所有的软件都安装在访达的应用程序
image.png

选择钉钉,右键 显示包内容
image.png

此时会打开Contents目录
image.png

而在Contents/MacOS下刚好有个QQ,它是一个Unix可执行文件
image.png

只要将它所在的路径(/Applications/DingTalk.app/Contents/MacOS)配置在PATH环境变量中即可实现在终端的任意路径下输入DingTalk就可以启动钉钉

  1. 启动Visual Studio Code

image.png

  1. 打开/Users/liuguanglei目录

image.png

image.png

  1. 打开.zshrc配置文件

.zshrc配置文件位于/Users/liuguanglei目录下
image.png

  1. 编辑.zshrc配置文件

配置钉钉的PATH环境变量

# 配置钉钉的PATH环境变量
export PATH=$PATH:/Applications/DingTalk.app/Contents/MacOS

image.png

配置完成后按Command+S保存
image.png

  1. 打开终端

依次点击Visual Studio Code菜单栏的New Terminal>New Terminal
image.png

就可以启动Visual Studio Code内置的终端
image.png

  1. 验证配置

在终端的任意路径下执行echo $PATH查看系统PATH环境变量
如果系统PATH环境变量中是否已经包含钉钉的PATH环境变量配置则表示钉钉的PATH环境变量配置成功
image.png

然后在终端的任意路径输入QQ回车后看是否能够启动成功
如果能够启动QQ则表示QQ的PATH环境变量配置成功

在用户的家目录启动钉钉
image.png
在根目录下启动钉钉
image.png

10.3.3.3 macOS版Java21配置PATH环境变量
  1. 启动Visual Studio Code

image.png

  1. 打开/Users/liuguanglei目录

image.png

  1. 打开.zshrc配置文件

.zshrc配置文件位于/Users/liuguanglei目录下
image.png

  1. 编辑.zshrc配置文件

配置Oracle ARM64位架构macOS版Java21的PATH环境变量

# 配置Oracle ARM64位架构macOS版Java21的PATH环境变量
export PATH=$PATH:/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home/bin

image.png
配置完成后按Command+S保存
image.png

  1. 启动终端

依次点击Visual Studio Code菜单栏的New Terminal>New Terminal
image.png

就可以启动Visual Studio Code内置的终端
image.png

  1. 验证配置

首先在终端的任意路径下执行echo $PATH查看系统PATH环境变量,如果系统PATH环境变量中包含Java21的PATH环境变量则表示Java21的PATH环境变量配置成功
image.png

然后在终端的任意路径使用Java提供的javac和java结合-version选项查看Java编译器和解释器的版本信息应该为Java21
image.png

10.3.3.4 macOS版Java21使用JAVA_HOME配置PATH环境变量

Q:为什么Java21要使用JAVA_HOME配置Path环境变量
A:切换JDK版本时只需要修改JAVA_HOME环境变量的变量值即可

  1. 启动Visual Studio Code

启动VS Code

  1. 打开/Users/liuguanglei目录

  1. 打开.zshrc配置文件

.zshrc配置文件位于/Users/liuguanglei目录下
image.png

  1. 编辑.zshrc配置文件

使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java21的PATH环境变量

# 使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java21的PATH环境变量
export PATH=$PATH:$JAVA_HOME/bin

image.png
配置完成后按Command+S保存文件
image.png

  1. 启动终端

依次点击Visual Studio Code菜单栏的New Terminal>New Terminal

就可以启动Visual Studio Code内置的终端
VS Code内置终端

  1. 验证配置

首先在终端的任意路径下执行echo $PATH查看系统PATH环境变量
如果PATH环境变量包含Java21的PATH环境变量配置则表示Java21的PATH环境变量配置成功
image.png
然后在终端的任意路径使用Java提供的javac和java命令结合-version选项查看Java编译器和解释器的版本信息应该是Java21
image.png

10.4 macOS版Java21和Java17相互切换

10.4.1 如何实现macOS版Java21和Java17相互切换

由于开发项目时使用Java17,但是学习JDK新特性时安装了Java21,因此此时电脑上同时存在两个不同版本的JDK,分别是Oracle ARM64位架构macOS版本的Java17和Java21
image.png
那么如何在这两个版本中间切换?
首先需要知道当前使用的Java版本
在终端的任意路径通过javac -version和java -version得知目前使用的是Java21
image.png

Q:为什么是Java21?
A:因为在.zshrc配置文件中JAVA_HOME环境变量的值是Java21的Home目录(/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home),而Java的PATH环境变量引用了JAVA_HOME环境变量
image.png
那么想要实现Java17和Java21相互切换,只需要修改JAVA_HOME环境变量的值即可

10.4.2 macOS版Java21切换到Java17

想要从Java21切换到Java17,只需要将JAVA_HOME环境变量的值修改成Java17的Home路径(/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home)

  1. 启动Visual Studio Code

  1. 打开/Users/liuguanglei目录



  1. 打开.zshrc配置文件

.zshrc配置文件位于/Users/liuguanglei目录下
image.png

  1. 编辑.zshrc配置文件

配置Oracle ARM64位架构macOS版Java17的PATH环境变量
image.png

# 配置Oracle ARM64位架构macOS版Java17的JAVA_HOME环境变量   
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

# 配置钉钉的PATH环境变量
export PATH=$PATH:/Applications/DingTalk.app/Contents/MacOS

# 使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java17的PATH环境变量
export PATH=$PATH:$JAVA_HOME/bin

配置完成后按Command+S保存
image.png

  1. 启动终端

依次点击Visual Studio Code菜单栏的New Terminal>New Terminal

就可以启动Visual Studio Code内置的终端

  1. 验证配置

首先在终端的任意路径输入echo $JAVA_HOME,查看JAVA_HOME环境变量的变量值是否为Java17的Home目录
image.png
然后在终端的任意路径使用Java提供的javac和java命令结合-version选项查看Java编译器和解释器的版本信息是否为Java17,如果是Java17则表示当前Java版本成功从Java21切换到Java17
image.png

10.4.3 macOS版Java17切换到Java21

从Java17再次切换到Java21,只需要将JAVA_HOME环境变量的变量值改成Java21的Home目录(/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home )

  1. 启动Visual Studio Code

  1. 打开/Users/liuguanglei目录



  1. 打开.zshrc配置文件

.zshrc配置文件位于/Users/liuguanglei目录下

  1. 编辑.zshrc配置文件
# 配置Oracle ARM64位架构macOS版Java21的JAVA_HOME环境变量   
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home

# 配置QQ的PATH环境变量
export PATH=$PATH:/Applications/QQ.app/Contents/MacOS

# 使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java21的PATH环境变量
export PATH=$PATH:$JAVA_HOME/bin

image.png
配置完成后按Command+S保存
image.png

  1. 启动终端

依次点击Visual Studio Code菜单栏的New Terminal>New Terminal

就可以启动Visual Studio Code内置的终端

  1. 验证配置

首先在终端的任意路径输入echo $JAVA_HOME,查看JAVA_HOME环境变量的变量值是否为Java21的Home目录
image.png
然后在终端的任意路径使用Java提供的javac和java命令结合-version选项查看Java编译器和解释器的版本信息是否为Java21,如果是Java21则表示当前Java版本成功从Java17切换到Java21
image.png

10.5 macOS版Java21卸载

Q:什么时候需要卸载Java21
A:如果不再使用(例如公司未来的项目全部使用Java25开发)Java21时就可以将其卸载

Oracle ARM64位架构macOS版Java21卸载需要删除Java21安装目录
除此以外还要删除.zshrc配置文件,.zshrc配置文件配置了Java21的PATH环境变量和JAVA_HOME环境变量。

10.5.1 删除Java21安装目录

Oracle ARM64位架构macOS版Java21的安装目录是/Library/Java/JavaVirtualMachines/jdk-21.jdk

选中jdk-21.jdk,右键移到废纸篓,删除Java21的安装目录
image.png

然后使用Touch ID或者使用密码
image.png

然后右键清倒废纸篓
image.png

确认清倒废纸篓
image.png
删除成功后JavaVirtualMachines目录下看不到Java21的安装目录
image.png

10.5.2 删除配置文件

  1. 启动Visual Studio Code

image.png

  1. 打开/Users/liuguanglei

image.png

  1. 删除.zshrc配置文件

选择.zshrc配置文件,右键选择Delete
image.png

点击 Move to Trash
image.png

image.png

  1. 验证Java21是否卸载成功

删除Java21安装目录以及.zshrc文件后,在终端的任意路径使用javac -version和java -version查看Java编译器和Java解释器版本信息
如果提示**The operation couldn’t be completed. Unable to locate a Java Runtime.Please visit **http://www.java.comfor information on installing Java. 表示Java21卸载成功
image.png

11 第一个Java程序开发

11.1 Java程序开发流程

Java程序开发流程

  1. 编写使用Java开发工具编写源文件,源文件以.java结尾,用于存储Java代码
  2. 编译使用javac**把源文件编译生成字节码文件,字节码文件以.class结尾,字节码文件名和类名相同,字节码文件的数量和源文件中class的数量相同,**编译的格式是javac 源文件名.java,例如javac HelloWorld.java
  3. 运行:使用java解释运行编译生成后的字节码文件,**运行的格式是java 字节码文件名(不需要.class后缀),例如java HelloWorld

Q:如何看待Java是一门半编译半解释型的语言?
A:半编译半解释指的是JVM在解释执行既有解释器解释执行,又有JIT编译器编译执行

11.2 Java开发工具

工欲善其事,必先利其器
虽然JDK提供了开发Java程序时所用到的一些工具,例如javac,java,jconsole,jdb等等
image.png
但是JDK并没有提供编写Java代码的开发工具,因此想要在编写Java程序之前,还需要了解Java开发工具, 我这里把Java开发工具分成两类,分别是文本编辑器IDE(Integrated Development Environment)
常用的文本编辑器有记事本、Visual Studio Code、Sublime Text
Visual Studio Code
image.png
Sublime Text
image.png
Visual Studio Code和Sublime Text都是高级的文本编辑器,而且是跨平台的(Windows,macOS,Linux),建议没有任何编程经验的朋友可以使用Visual Studio Code来开发Java程序,因为相比IDE而言更加轻量级,对初学者更加容易上手

常用的Java IDE(Integrated Development Environment) 有IntelliJ IDEA和Eclipse
IntelliJ IDEA
image.png
Eclipse
image.png
IDEA和Eclipse都是IDE,IDE集成项目开发中常用的功能,包括编辑器、编译工具、反编译工具、测试工具、性能分析工具、部署工具等等,因此可以大大提高开发效率。
目前大部分互联网公司基本普遍都会使用IntelliJ IDEA开发Java项目,因此我们后期会全程使用IntelliJ IDEA。

11.3 Windows版第一个Java程序开发与详解

11.3.1 Windows版第一个Java程序开发

在学习任何一门编程语言时编写的第一个程序通常都称为HelloWorld,如果你能够编写并且运行HelloWorld,那么意味着已经迈入编程的大门
本次我们使用比较原始的开发方式:也就是基于记事本+Windows终端(命令提示符)+JDK提供的开发工具(javac和java)来开发人生第一个Java程序,这种方式虽然和使用IDE开发相比效率比较低,但是能够让初学者更加直观地理解Java程序的开发和运行流程

  1. 检查Java开发环境

在开发第一个Java程序之前先要检查Java开发环境:即安装、配置JDK
目前本机已经安装四个不同版本的Java,分别是Java8、Java11、Java17、Java21,它们都是官方长期支持版
image.png
那么到底是使用哪个版本,是由PATH环境变量决定的
从系统属性>环境变量>系统变量>Path环境变量得知目前使用的Java版本为Java21,因为JAVA_HOME配置的是Java21的目录,而且Java的Path环境变量引用JAVA_HOME环境变量
image.png
也可以在终端上使用Java提供的javac、java命令,这两个命令提供了-version选项查看版本信息

  • javac -version查看Java编译器的版本信息

  • java -version查看Java解释器的版本信息

  1. 新建code文件夹

在D盘目录下,鼠标右键新建>文件夹
image.png
image.png

将文件夹的名称由默认的新建文件夹重命名为code,用于存放Java源文件
code文件夹

image.png

  1. 显示文件后缀名

默认情况下Windows是隐藏已知文件扩展名
image.png
在新建源文件之前依次点击查看>显示>文件扩展名,勾选文件扩展名,这样才能显示文件扩展名
image.png

  1. 新建Java源文件

在code文件夹下 右键新建>文本文档
image.png
image.png
将默认的文件名新建 文本文档.txt 重命名为HelloWorld.java
image.png
重命名时系统会提示如果改变文件扩展名,可能导致文件不可以,确实要更改吗?,点击是即可
image.png
HelloWorld.java源文件创建成功
image.png

  1. 打开源文件

选中HelloWorld.java,右键选择 在记事本中编辑
image.png

Windows11 2023 H2首次使用记事本打开HelloWorld.java源文件时,记事本会提示记事本自动保存进度。下次打开记事本时,你的所有内容都将可用

  1. 编辑源文件

在HelloWorld.java源文件中编写HelloWorld

public class HelloWorld{
    public static void main(String[]args){
        System.out.println("Hello World");
    }
}


在使用记事本编写Java代码时注意以下事项

  • 如果觉得代码字体太小,可以按住Ctrl键,然后向上滚动鼠标放大字体

  • 源代码需要进行适当的换行、缩进,方便阅读代码

  • 源代码遇到了符号,比如说圆括号(()),方括号([]),大括号({})都需要成对编写,然后再往里面编写内容,而且这些符号都是英文的,因为Java是美国人发明的,不支持中文。

    源文件(例如HelloWorld.java)编写完成后按Ctrl+s保存

  1. 编译源文件

首先需要开启Windows终端,因为javacjava只能在Windows终端上使用。
当前文件资源管理器的路径位于D:\code
image.png
建议直接在文件资源管理器的地址栏输入cmd后回车打开终端
image.png
由于文件资源管理器的地址栏位于D:\code,因此开启终端后会自动切换到D:\code
image.png
然后输入javac HelloWorld.java并回车 编译HelloWorld.java源文件
image.png
如果没有语法错误编译成功之后会在和源文件相同的目录下生成字节码文件HelloWorld.class
image.png

  1. 解释运行字节码文件

在终端上输入java HelloWorld后回车解释执行字节码文件HelloWorld.class
如果没有任何运行时错误就会看到Windows终端打印输出Hello World并换行
image.png

11.3.2 Windows版第一个Java程序详解

public class HelloWorld{
    public static void main(String[]args){
        System.out.println("Hello World");
    }
}
  1. public是一个关键字,表示权限最大的访问权限修饰符,称为公共的,后期在学习面向对象的时候还会学习private,默认的,protected,这里只需要记住如果类名使用public 修饰,那么public修饰的类名必须和源文件名保持一致
  2. class是一个关键字,用于定义类,例如class Welcome{} 表示定义一个类,类名是Welcome,{}表示类的开始范围和结束范围,Java是面向对象的编程语言,类是Java程序的基本单元。
  3. 在一个源文件中可以定义多个class,但是只能有一个类被public修饰。编译器在编译源文件后会生成和源文件中class数量一致的字节码文件,字节码文件名和类名相同

①编写源文件MyWorld.java
源文件MyWorld.java中定义MyWorld、Chinese、American三个类,其中MyWorld是public修饰,因此源文件名只能是MyWorld.java
image.png

public class MyWorld{
    public static void main(String[] args){
        System.out.println("This is my world");
    }
}

class Chinese{
}

class American{
}

②编译源文件MyWorld.java
编译MyWorld.java后会生成3个字节码文件,分别是MyWorld.class、Chinese.class和American.class,因为MyWorld.java中定义了3个类。
image.png
③运行MyWorld.java
image.png

  1. public static void main(String[] args){} 格式是固定的,表示main方法,main方法是Java程序的入口,Java程序是从main方法的第一行开始执行的,该方法被JVM调用,如果你的Java程序想要独立运行,那么必须有固定格式的main方法
  2. System.out.println("Hello World"); 的作用就是在终端上打印输出字符串Hello World然后换行,如果想输出其他内容只需要替换""中的Hello World即可,;表示语句的结束**,**Java中的每条语句都需要使用;结束,否则编译错误。例如System.out.println();就是一条打印语句,用于打印输出指定的内容并换行,如果打印输出后不换行可以使用System.out.print();语句

①编辑源文件PrintData.java
image.png

public class PrintData{
    public static void main(String[]args){
        System.out.println("HelloWorld");
        System.out.print("跟光磊学Java");
        System.out.print("从小白");
        System.out.print("到架构师");
    }
}

②编译源文件PrintData.java
image.png
③解释运行字节码文件PrintData.class
image.png

虽然PrintData程序中System.out.println()语句打印的内容包含了中文,但是我们使用Java21可以直接编译和运行,不会有中文乱码的问题。

11.4 macOS版第一个Java程序开发与详解

11.4.1 macOS版第一个Java程序开发

在学习任何一门编程语言时编写的第一个程序通常都称为HelloWorld,如果你能够编写并且运行HelloWorld,那么意味着已经迈入编程的大门

本次我们使用比较原始的开发方式:也就是基于文本编辑+macOS终端(iTerm2)+JDK提供的开发工具(javac和java)来开发人生的第一个Java程序,这种方式虽然和使用IDE开发相比效率比较低,但是能够让初学者更加直观地理解Java程序的开发和运行流程

  1. 检查Java开发环境

在开发第一个Java程序之前先要检查Java开发环境:即安装、配置JDK
目前本机已经安装四个不同版本的Java,分别是Java8、Java11、Java17、Java21,它们都是官方长期支持版

那么到底是使用哪个版本,是由PATH环境变量决定的
从.zshrc文件中配置得知目前使用的Java版本为Java21
image.png
也可以在终端上使用Java提供的javac、java命令,这两个命令提供了-version选项查看版本信息

  • javac -version查看Java编译器的版本信息
  • java -version查看Java解释器的版本信息

image.png

  1. 新建code文件夹

在/Users/Documents目录下,右键新建文件夹
image.png

image.png
将文件夹的名称由默认的未命名文件夹改为code,用于存放Java源文件
image.png

image.png

  1. 新建源文件

首先在code目录下右键 新建文件>Text
image.png
这样就会创建一个文本文件,文件名是未命名.txt
未命名.txt

将默认的未命名.txt重命名成HelloWorld.java
HelloWorld.java

访达还会提示 **你确定要将扩展名“.txt”更改为“.java”吗?,**点击使用.java
扩展名改成.java

这样HelloWorld.java源文件就创建成功
HelloWorld.java源文件创建成功

  1. 打开源文件

选中HelloWorld.java,右键 打开方式>文本编辑.app打开
打开

文本编辑打开HelloWorld.java源文件,打开后就可以开始编写Java代码

  1. 编辑源文件

在HelloWorld.java源文件中编写HelloWorld

public class HelloWorld{
    public static void main(String[]args){
        System.out.println("Hello World");
    }
}

HelloWorld程序

在使用文本编辑编写Java代码时

  • 如果觉得代码字体太小不合适,可以使用Command +和Command - 临时调整字体大小
  • 代码需要进行适当的换行、缩进
  • 代码中遇到了符号,比如说圆括号(()),方括号([]),大括号({})都需要成对编写,然后再往里面编写内容,而且这些符号都是英文的,因为Java是美国人发明的,不支持中文。

编写完成后按Command+S保存源文件
编写HelloWorld程序

  1. 编译源文件

开启macOS终端(内置终端或者iTerm),因为javac和java只能在终端上使用

image.png
切换到HelloWorld.java源文件所在的目录(/Users/liuguanglei/Documents/code)
切换目录

编译源文件HelloWorld.java,如果没有语法错误编译成功之后会生成HelloWorld.class文件
编译源文件

  1. 解释运行字节码文件

在终端上输入java HelloWorld后回车解释执行HelloWorld.class字节码文件
如果没有任何运行时错误就会看到Windows终端打印输出HelloWorld并换行

11.4.2 macOS版第一个Java程序详解

public class HelloWorld{
    public static void main(String[]args){
        System.out.println("Hello World");
    }
}
  1. public是一个关键字,表示权限最大的访问权限修饰符,称为公共的,后期在学习面向对象的时候还会学习private,默认的,protected,这里只需要记住如果类名使用public 修饰,那么public修饰的类名必须和文件名保持一致
  2. class是一个关键字,用于定义类,例如class Welcome{} 表示定义一个类,类名是Welcome,{}表示类的开始范围和结束范围,Java是面向对象的编程语言,类是Java程序的基本单元。
  3. 在一个源文件中可以定义多个class,但是只能有一个类被public修饰。编译器在编译后会生成和源文件中class数量一致的字节码文件,字节码文件名和类名相同。

①编写源文件MyWorld.java
源文件MyWorld.java中定义MyWorld、Chinese、American三个类,其中MyWorld是public修饰,因此源文件名只能是MyWorld.java
编写源文件MyWorld.java

public class MyWorld{
    public static void main(String[]args){
        System.out.println("This is my world");
    }
}

class Chinese{

}

class American{

}

②编译源文件MyWorld.java
编译MyWorld.java后会生成3个字节码文件,分别是MyWorld.class、Chinese.class和American.class,因为MyWorld.java中定义了3个类。
编译源文件MyWorld.java

③运行MyWorld.java
运行MyWorld.java

  1. public static void main(String[] args){} 格式是固定的,表示main方法,main方法是Java程序的入口,Java程序是从main方法的第一行开始执行的,该方法被JVM调用,如果你的Java程序想要独立运行,那么必须有固定格式的main方法
  2. System.out.println("Hello World"); 的作用就是在终端上打印输出字符串Hello World 然后换行,如果想输出其他内容只需要替换""中的HelloWorld即可,;表示语句的结束,Java中的每条语句(例如System.out.println()就是打印输出语句)都需要使用;结束,否则编译错误。如果打印输出后不想换行可以使用System.out.print();语句

①编辑源文件PrintData.java
image.png

public class PrintData{
    public static void main(String[]args){
        System.out.println("HelloWorld");
        System.out.print("跟光磊学Java");
        System.out.print("从小白");
        System.out.print("到架构师");
    }
}

②编译源文件PrintData.java
编译源文件PrintData.java

③解释运行字节码文件PrintData.class
image.png
需要注意的是最后一句打印输出语句末尾添加了%

这是因为如果最后输出不是换行,zsh 就会在最后帮你加一个%,然后强制换行,这样的好处是下一个命令总是从头开始的,不容易混乱。

程序中**System.out.println()**语句打印的内容包含了中文,但是macOS系统无论是文件还是终端默认都是UTF-8编码,不管你使用的是Java8、Java17还是Java21,都不会有中文乱码的问题存在

11.5 第一个Java程序常见问题

11.5.1 编译时错误和运行时错误

初学者在开发第一个Java程序时可能会遇到各种各样的错误(Bug),这些错误可以分成两类:编译时错误和运行时错误。
因为Java程序是先编译,再解释运行的,因此先出现编译错误,然后再出现解释错误。
即使程序编译通过(语法没有问题),也不一定表示你的程序完全没有问题,因为可能还有运行时错误。

  • 编译时错误就是使用javac编译Java源文件遇到的语法错误,除此以外还有找不到源文件的问题
  • 运行时错误就是使用java解释执行字节码文件遇到的错误(Bug)和异常

在排查运行时错误的时候如果你修改了源文件的代码,那么一定要重新编译,否则你修改的内容不会生效
在遇到错误后也不要慌,Java会告诉你错在哪里(行号),大家如果解决不了还可以利用网络搜索问题的答案,因为你们遇到的大部分错误在之前别人也遇到过。

  • 通过多看实现具备识别Bug的能力
  • 通过多思考、多查阅资料实现具备分析Bug的能力
  • 通过多尝试、多总结实现具备解决Bug的能力

11.5.2 第一个Java程序程序常见错误和解决方案

11.5.2.1 编译时错误:找不到文件

第一种情况:源文件路径不正确
HelloWorld.java源文件在D:\code目录下
但是启动终端后默认在C:\Users\liuguanglei目录下,如果使用javac编译HelloWorld.java就会出现编译错误:找不到文件
image.png
解决办法就是在Windows终端下切换到D:\code目录下再使用javac HelloWorld.java编译源文件

  • 切换盘符:输入盘符:(例如D:)然后回车即可
  • 切换路径:使用cd 路径然后回车即可,cd只能在盘符内切换

image.png
第二种情况:源文件文件名不正确
源文件名不正确

解决方案就是将源文件名改正确即可
image.png

11.5.2.2 编译时错误:找不到符号问题

错误案例

public class HelloWorld{
    public static void main(string[]args){
        System.out.println("Hello World");
    }
}

编译时错误:找不到符号问题

解决方案:将string改成String然后重新编译和解释运行,因为Java语法规定严格区分大小写,string和String表示完全不同的含义。

public class HelloWorld{
    public static void main(String[]args){
        System.out.println("Hello World");
    }
}

image.png

11.5.2.3 编译时错误:非法字符

错误案例

public class HelloWorld{
    public static void main(String[]args){
        System.out.println("Hello World")}
}

image.png
解决方案:将中文的分号;替换成英文的分号;即可,因为Java不识别中文分号

大家需要注意的是Java代码中各种符号必须是英文,例如{},(),[],;都是英文的
建议设置输入法开启 中文输入时使用英文标点,这样就不需要切换到英文输入法再输入符号**。**
以微软拼音为例
依次点击输入法>设置
设置

打开微软拼音输入法设置
微软拼音输入法设置

选择常规
选择常规

打开中文输入时使用英文标点
打开中文输入时使用英文标点

打开中文输入时使用英文标点

11.5.2.4 编译时错误:GBK的不可映射字符(乱码问题)

当前使用的Java版本是Java17
Java版本是Java17

image.png
如果你的Java版本是Java17及其以下的版本,例如Java17、Java11或者Java8,编译以下程序

public class HelloWorld{
    public static void main(String[]args){
        System.out.println("跟光磊学Java从小白到架构师");
    }
}

中文乱码

原因就是编码和解码的不是同一个编码,这两个编码不一致导致的乱码

  • Java源文件的默认编码是UTF-8

  • Windows终端或者称为命令提示符的编码是GB2312

在Windows终端中可以使用chcp查看终端编码,如果输出结果是936则表示GB2312编码,GB2312是一种双字节编码,用于表示简体中文字符。
image.png
解决方案1:将文件另存为的时候设置编码为ANSI

将文件另存为的时候设置编码为ANSI

设置文件编码为ANSI,点击保存
设置文件编码为ANSI,点击保存

设置文件编码为ANSI,点击保存

确认另存为HelloWorld时会提示 **HelloWorld.java已经存在。要替换它吗?**点击是即可

此时文件编码从UTF-8改成ANSI,ANSI在中文环境下就是中文编码,等价GB2312

再编译和解释运行HelloWorld
image.png
解决方案2:不修改源文件编码,即源文件HelloWorld.java依然使用UTF-8编码
使用UTF-8

但是在编译时指定文件编码:javac -encoding UTF-8 HelloWorld.java
image.png
解决方案3:使用Java21
使用Java21

image.png
Java18以后默认javac编译源文件时使用UTF-8编码
java18默认使用UTF-8编码

11.5.2.5 运行时错误:找不到或者无法加载主类
public class HelloWorld{
    public static void main(String[]args){
        System.out.println("跟光磊学Java从小白到架构师");
    }
}

主类表示有main方法的类,找不到或者无法加载主类的原因就是当前路径下没有指定的字节码文件或者类中没有main方法
image.png
解决方案:先使用javac HelloWorld.java编译生成字节码文件,再使用java HelloWorld解释运行程序
先编译,再运行

需要注意区分的是macOS系统的终端(例如iTerm)默认使用的是UTF-8编码,因此即使使用的Java版本是Java17,如果编译和运行HelloWorld程序也不会出现中文乱码问题。

11.5.2.6 运行时错误:找不到main方法的问题

错误案例

public class HelloWorld{
    public static void mian(String[]args){
        System.out.println("跟光磊学Java从小白到架构师");
    }
}

运行时错误:找不到main方法的问题

解决方案:将mian改成main即可

public class HelloWorld{
    public static void main(String[]args){
        System.out.println("跟光磊学Java从小白到架构师");
    }
}

Java程序想要独立运行必须包含如下固定格式的main方法

public static void main(String[]args){
}

解决错误

12 Java新特性

12.1 Java11新特性-运行单文件源码程序

在Java11之前Java源文件必须先经过javac编译,然后在使用java运行
Java程序开发流程

Java11提供新特性-运行单文件源码程序
image.png
Java11新特性

当编写一个源文件(例如HelloWorld.java)后无需再使用javac编译源文件生成字节码文件,而可以直接使用java运行单文件源码程序(例如HelloWorld.java)

使用java运行源文件

12.2 Java21新特性-未命名类和实例main方法

Java21新增预览版的特性:未命名类和实例main方法

此特性的好处就是可以让初学者在不需要了解程序结构和修饰符的前提下,更快更容易地写出第一个HelloWorld程序
Java21之前的HelloWorld
Java21之前的HelloWorld

public class HelloWorld{
    public static void main(String[]args){
        System.out.println("跟光磊学Java从小白到架构师");
    }
}

Java21之后的HelloWorld
Java21之后的HelloWorld

void main(){
    System.out.println("跟光磊学Java从小白到架构师");
}

比之下Java21之后的HelloWorld更加简洁,这样可以减少错误的出现

  • 编译时需要使用javac **--enable-preview --source 21** 源文件名.java,例如javac --enable-preview --source 21 HelloWorld.java
  • 解释运行时使用java **--enable-preview** 字节码文件名,例如java --enable-preview HelloWorld

image.png

在使用Java21新特性未命名类和实例main方法编写完源文件后,也可以直接使用java --enable-preview --souce 21 源文件名.java**,**例如java --enable-preview --souce 21 HelloWorld.java 来编译运行HelloWorld。
Java21新特性

13 Java跨平台原理

13.1 Java跨平台原理介绍

在搭建Windows版和macOS版Java开发环境时都需要根据自己所使用操作系统的版本来选择安装、配置对应版本的JDK
image.png
而JDK包含JRE和开发工具,JRE包含JVM和核心类库,Oracle公司需要根据不同的操作系统开发不同版本的JDK
JDK、JRE和JVM的关系
Java跨平台原理

Java跨平台指的是在Windows系统上开发的Java程序编译之后的字节码文件可以在任意安装了JDK的其他操作系统上运行

Java跨平台的原理就是Java程序不是直接在操作系统上运行的,而是在JVM(Java Virtual Machine)上运行。JVM屏蔽底层操作系统差异性,但是JVM本身不是跨平台。

13.2 Java跨平台原理实战

HelloWorld程序演示Java跨平台

  1. 检查Windows和macOS的Java环境

检查Windows Java环境
检查Windows java环境

检查macOS Java环境
检查macOS Java环境

  1. 在Windows上编辑源文件HelloWorld.java

在Windows上编辑源文件HelloWorld.java

public class HelloWorld{
    public static void main(String[]args){
        System.out.println("跟光磊学Java从小白到架构师");
    }
}
  1. 在Windows终端上使用javac编译HelloWorld.java源文件,生成HelloWorld.class字节码文件

image.png

  1. 在macOS iTerm终端上使用java解释运行Windows系统使用javac编译生成的HelloWorld字节码文件

在macOS iTerm终端上使用java解释运行Windows系统使用javac编译生成的HelloWorld字节码文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ittimeline

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值