当前位置:   article > 正文

macOS版Java开发环境搭建_mac 安装java17

mac 安装java17

跟光磊学Java从小白到架构师-Java语言核心技术

macOS版Java开发环境搭建

1.Mac平台CPU架构和Rosetta

1.1 Mac平台CPU架构

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

苹果官网

因此苹果的Mac电脑有Intel x86架构ARM架构两种不同的CPU架构

那么问题来了,如何知道自己所使用Mac电脑的CPU架构?

在macOS Sonoma点击左上角的苹果菜单,然后选择关于本机

关于本机

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

mac电脑配置

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

mac电脑配置

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

1.2 Rosetta

1.2.1 什么时候需要Rosetta

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

1.2.2 如何安装Rosetta

Rosetta 2 仅适用于搭载 Apple 芯片的 Mac 电脑。

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

阿里旺旺需要Rosetta

亿图图示需要Rosetta

如果您点按“以后”,则下次打开需要 Rosetta 的 App 时,系统会再次要求您安装 Rosetta。

如果 Rosetta 已经安装,则系统不会再次要求您安装,也就是仅仅需要安装一次。

1.2.3 如何使用Rosetta

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

1.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芯片。

飞书

腾讯会议

2.macOS版Java8开发环境搭建

2.1 macOS版Java8下载

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

Java官网

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

Java下载页面

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

Java下载页面

目前(2024/01/04)Oracle官方提供的最新Java版本(JDK版本)是Java21 和Java17,最新的LTS版本是Java21

本次我们下载的是Java8,所以往下滚动到Java8的下载

Java8

目前Java8支持四个操作系统

  1. Linux

  2. macOS

  3. Solaris

  4. Windows

大家在下载Java8的时候需要根据CPU和操作系统的版本选择对应版本的Java8

Java支持主流操作系统

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

关于本机

在弹出的面板中查看系统版本信息

目前本机使用的系统是macOS Sonoma 14.2.1,芯片是M1 Max

mac电脑信息

  1. 选择ARM64 DMG Installer

如果你的Mac电脑使用的Intel CPU,那么选择macOS版 x64 DMG Installerjdk-8u391-macosx-x64.dmg

macOS版 x64 DMG Installer

如果你的Mac电脑使用的是Apple CPU,例如M1 Max,M1 Ultra,M2 Max,M2 Ultram,M3 Max等等,那么选择macOS版ARM64 DMG Installerjdk-8u391-macosx-aarch64.dmg

macOS版ARM64 DMG Installer

由于本机使用的是Apple M1 Max CPU,因此选择macOS版ARM64 DMG Installerjdk-8u391-macosx-aarch64.dmg

mac电脑信息

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

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

下载Java8

  1. 注册、登录Oracle账户

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

创建Oracle账户

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

登录页面

登录成功之后浏览器会自动下载Java8使用快捷键 Option+Command+L 可以打开下载内容,查看下载的速度以及所需的时间

查看下载内容

当Java8下载完成后,点击在Finder中显示

在Finder中显示

默认在下载目录(/Users/liuguanglei/Downloads)下会看到Java8的安装包jdk-8u391-macosx-aarch64.dmg

下载目录

2.2 macOS版Java8安装

2.2.1 macOS版Java8安装过程

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

双击它

双击它

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

双击它

继续

  1. 介绍

点击继续

点击继续

  1. 目的宗卷

你要如何安装此软件?默认选择为这台电脑上的所有用户安装

选择一个目的宗卷:为这台电脑上的所有用户安装,点击继续

目的卷宗

  1. 安装类型

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

安装类型

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

输入密码

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

安装中

安装中

安装中

  1. 安装完成

安装完成

安装完成后可以点击后续步骤?和关闭

Java8官方文档

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

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

保留

  1. 推出桌面的JDK 8 Update 391

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

推出成功

2.2.2 macOS版Java8安装目录

默认情况下Oracle ARM64位架构macOS版Java8安装目录是/Library/Java/JavaVirtualMachines/jdk-1.8.jdk

依次点击访达>前往>前往文件夹,快捷键是Shift+Command+G

macOS版Java8安装目录

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

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

即可进入该目录

/Library/Java/JavaVirtualMachines/jdk-1.8.jdk

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

Home目录

Home目录

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

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

bin目录

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

src.zip

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

解压缩

src目录存放的是Java源代码文件(.java结尾)

src目录

例如查看String.java

String.java源文件位于src/java/lang目录下

String.java

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

VS Code

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

打开String.java

打开String.java

打开String.java

打开String.java

2.3 macOS版Java8配置

2.3.1 macOS版Java8配置说明

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

查看Java版本

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

查看maven版本

Q:这样是不是意味着不需要配置Java8的PATH环境变量和JAVA_HOME环境变量?

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

2.3.2 macOS版Java8配置JAVA_HOME环境变量

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

Java8的Home目录

Java8的Home目录

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

  1. 启动终端

macOS内置终端程序,你可以在程序坞的启动台的其他中找到它

启动终端

macOS内置终端

macOS内置终端

不过我使用的是第三方终端iTerm,该终端需要自己下载、安装后才能使用。

iTerm

使用Command+空格键打开聚焦搜索,然后搜索iTerm,点击iTerm打开

聚焦搜索

就可以启动iTerm

启动iTerm

不过iTerm默认的字体大小只有12,建议改成16

在启动iTerm后,首先点击菜单栏的iTerm>Settings,快捷键是Command+,
Settings

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

修改字体大小

改成16即可

改成16即可

修改完成以后点击Preferences左上角的x关闭窗口

关闭

建议将iTerm放到Dock栏,

其方法就是在启动iTerm后,右键选择程序坞的iTerm,然后依次点击选项>在程序坞中保留即可

iTerm放在Dock栏

以后只需要点击Dock栏的iTerm图标就可以启动iTerm终端

Dock栏启动iTerm

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

不同的macOS系统使用的Shell类型不同,因此对应的配置文件不同

例如zsh使用的.zshrc,而bash使用的.bash_profile。

使用echo $SHELL 命令查看当前系统所使用的Shell类型

macOS Sonoma默认使用的zsh

  查看系统所使用的Shell类型

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

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

macOS的用户家目录指的就是/Users/liuguanglei,其中liuguanglei表示用户名,每个系统的用户名可能不相同。

当启动终端后默认就是在用户的家目录下,可以使用pwd命令查看当前所在的目录

查看所在目录

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

创建.zshrc配置文件

  1. 打开.zshrc配置文件

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

  查看系统所使用的Shell类型

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

命令模式

  1. 编辑.zshrc配置文件

需求:在.zshrc文件中添加Java8的JAVA_HOME环境变量

将输入法切换到英文后再按i键进入编辑模式,只有进入编辑模式后才能修改文件内容

编辑.zshrc配置文件

配置Oracle ARM64位架构macOS版Java8的JAVA_HOME环境变量

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

配置JAVA_HOME

Oracle ARM64位架构macOS版Java8的JAVA_HOME环境变量配置完成后按esc键退出编辑模式回到命令模式

回到命令模式

  1. 保存并退出vim

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

保存并退出vim

成功保存并退出vim

保存并退出vim

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

在重新加载.zshrc配置文件之前,先使用echo $JAVA_HOME查看JAVA_HOME环境变量,发现JAVA_HOME环境变量的值为空

查看JAVA_HOME

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

source 命令是在 Unix/Linux 系统中用于在当前 Shell 环境中执行指定脚本文件的命令。该命令通常用于重新加载修改过的 shell 配置文件,使更改立即生效,而不必注销并重新登录。

具体来说,source 命令用于读取并执行指定的脚本文件,而不是启动一个新的进程来执行。这使得在当前 Shell 环境中设置的环境变量、别名以及其他配置更改能够立即生效。

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

重新加载.zshrc配置文件

  1. 验证配置

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

 验证配置

2.3.3 macOS版Java8配置PATH环境变量

2.3.3.1 PATH环境变量介绍

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

PATH环境变量

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

例如date命令可以查看系统日期时间,而where date 可以查看到date命令对应可执行程序的路径,正因为/bin目录在PATH环境变量中,因此在终端输入date命令实际上执行的是/bin目录下的date程序

date和where date

如果输入一个不存在的命令,那么shell会提示command not found**,**因为在PATH环境变量对应的路径下找不到一个名为datexxx的命令(程序)

输入一个不存在的命令

2.3.3.2 PATH环境变量使用

需求:实现在macOS终端(例如内置终端和第三方终端iTerm)的任意路径下输入QQ就可以启动QQ

  1. 查找QQ安装目录

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

访达的应用程序

选择QQ,右键 显示包内容

显示包内容

此时会打开Contents目录

Contents目录

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

QQ

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

  1. 启动终端

启动终端

  1. 打开.zshrc配置文件

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

打开.zshrc配置文件

打开后可以看到Java8的JAVA_HOME环境变量的配置

Java8的JAVA_HOME环境变量

  1. 编辑.zshrc配置文件

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

进入编辑模式

配置QQ的PATH环境变量

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

配置QQ的PATH环境变量

QQ的PATH环境变量配置添加完成后按esc键退出编辑模式回到命令模式

回到命令模式

  1. 保存并退出vim

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

成功保存并退出vim

成功保存并退出vim

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

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

 重新加载.zshrc配置文件

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

source

  1. 验证配置

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

验证配置

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

如果能够启动QQ则表示QQ的PATH环境变量配置成功

在用户的家目录启动QQ

启动QQ

在系统根目录启动QQ

启动QQ

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

启动iTerm

  1. 打开.zshrc配置文件

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

打开.zshrc配置文件

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

打开.zshrc配置文件

  1. 编辑.zshrc配置文件

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

编辑.zshrc配置文件

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

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

编辑.zshrc配置文件

配置Oracle ARM64位架构macOS版Java8的PATH环境变量后按esc键退出编辑模式回到命令模式

编辑.zshrc配置文件

  1. 保存并退出vim

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

保存并退出vim

成功保存并退出vim

保存并退出vim

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

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

重新加载.zshrc配置文件

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

重新加载.zshrc配置文件

  1. 验证配置

在终端上输入echo $PATH命令查看系统的PATH环境变量,如果PATH环境变量包含了Java8则表示配置成功

验证配置

不过细心的同学会发现QQ的PATH环境变量被加载了两次,因为每执行一次source .zshrc命令,QQ的PATH环境变量被加载一次到当前Shell环境中

验证配置

重新开启一个新的终端(command+n),在终端上输入echo $PATH 查看系统PATH环境变量时会发现QQ的PATH环境变量不再重复出现

验证配置

同时也可以在终端的任意路径下使用Java提供的命令,例如javac命令和java命令通过-version选项可以查看版本信息

验证配置

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

Q:为什么Java8要使用JAVA_HOME配置Path环境变量

A:切换JDK版本时只需要修改JAVA_HOME环境变量的值即可

  1. 启动iTerm

启动iTerm

  1. 打开.zshrc配置文件

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

 打开.zshrc配置文件

打开以后看到Java8的JAVA_HOME环境变量的配置、QQ的PATH环境变量配置以及Java8的PATH环境变量配置

 打开.zshrc配置文件

  1. 编辑.zshrc配置文件

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

编辑.zshrc配置文件

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

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

编辑.zshrc配置文件

使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java8的PATH环境变量后按esc键退出编辑模式回到命令模式

编辑.zshrc配置文件

  1. 保存并退出vim

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

 保存并退出vim

成功保存并退出vim

 保存并退出vim

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

在加载.zshrc配置文件之前先在终端上输入echo $PATH查看系统PATH环境变量,发现系统PATH环境变量中包含Java8的PATH环境变量配置

重新加载.zshrc配置文件

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

重新加载.zshrc配置文件

  1. 验证配置

在终端上输入echo $PATH命令查看系统的PATH环境变量,如果PATH环境变量包含了Java8则表示配置成功

验证配置

细心的同学会发现在系统PATH环境变量中QQ的PATH环境变量和Java8的PATH环境变量都被加载了两次,因为每执行一次source .zshrc命令,它们都会被加载一次到当前Shell环境中

验证配置

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

image

同时也可以在终端的任意路径下使用Java提供的命令,例如javac和java通过-version选项可以查看版本信息

验证配置

2.4 macOS版Java8卸载

Q:什么时候需要卸载Java8

A:如果不再使用(例如公司项目全部使用Java17开发)Java8时就可以将其卸载

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

2.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安装目录

Java8安装目录

/Library/Application Support/Oracle/Java,该目录是Java8支持目录

Java8支持目录

/Library/PreferencePanes/JavaControlPanel.prefPane,该文件是Java8控制面板首选项

Java8控制面板首选项

/Library/Internet Plug-Ins/JavaAppletPlugin.plugin,该文件是Java8 Applet 插件

Java8 Applet 插件

删除Java8相关的目录和文件需要使用管理员权限在终端上使用rm命令结合 -rf选项实现

  1. 启动终端

启动终端

  1. 删除Java8安装目录

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

删除Java8安装目录

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

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

删除Java8应用程序支持目录

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

Java8 控制面板位于系统设置>Java

 删除Java8控制面板首选项

java8控制面板首选项

删除java8控制面板首选项需要在终端上执行 sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane 命令

删除java8控制面板首选项

删除完成后重新打开系统设置,系统设置的Java控制面板也会删除

系统设置

  1. 删除Java8 Applet插件

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

删除Java8 Applet插件

2.4.2 删除Java8环境变量配置文件

  1. 启动终端

启动终端

  1. 删除Java8环境变量配置文件.zshrc

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

删除Java8环境变量配置文件.zshrc

  1. 验证Java8是否卸载成功

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

验证Java8是否卸载成功

3.macOS版Java17开发环境搭建

3.1 macOS版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/01/04)Oracle官方提供的最新Java版本(JDK版本)是Java21 和Java17,最新的LTS版本是Java21

本次我们下载的是Java17,所以点击JDK17 切换到Java17的下载

根据 Oracle 免费条款和条件 (NFTC),JDK 17 二进制文件可以在生产中免费使用,并且可以免费重新分发。

JDK 17 将根据 NFTC 接收更新,直至 2024 年 9 月。后续的 JDK 17 更新将根据 Java SE OTN 许可证 (OTN) 获得许可,超出 OTN 许可证有限免费授予的生产使用将需要付费。

Java的下载

目前Java17支持三个操作系统

  1. Linux

  2. macOS

  3. Windows

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

Java17支持三个操作系统

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

在弹出的面板中查看系统版本信息

目前本机使用的系统是macOS Sonoma 14.2.1,芯片是M1 Max

mac电脑配置

  1. 选择ARM64 DMG Installer

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

选择ARM64 DMG Installer

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

ARM64 DMG Installer

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

mac电脑配置

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

下载Oracle ARM64位架构macOS版Java17时目前不需要同意许可协议以及注册、登录Oracle账号

点击https://download.oracle.com/java/17/latest/jdk-17_macos-aarch64_bin.dmg下载Oracle ARM架构macOS版Java17

Oracle ARM64位架构macOS版Java17

使用快捷键 Option+Command+L 可以打开下载内容,查看下载的速度以及所需的时间

查看下载的速度以及所需的时间

当Java17下载完成后,点击在Finder中显示

Java17下载完成

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

Java17的安装包

3.2 macOS版Java17安装

3.2.1 macOS版Java17安装过程

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

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

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

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

双击JDK 17.0.9.pkg启动安装器

双击JDK 17.0.9.pkg启动安装器

  1. 介绍

点击继续

点击继续

  1. 目的宗卷

你要如何安装此软件?默认选择为这台电脑上的所有用户安装

选择一个目的宗卷:为这台电脑上的所有用户安装,点击继续

为这台电脑上的所有用户安装

  1. 安装类型

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

标准安装

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

提示

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

安装中

安装中

  1. 安装完成

安装完成

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

JavaSE文档

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

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

关闭安装向导

  1. 推出桌面的JDK 17.0.9

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

右键推出

推出成功
推出成功

3.2.2 macOS版Java17安装目录

默认情况下Oracle ARM64位架构macOS版Java17安装目录是/Library/Java/JavaVirtualMachines/jdk-17.jdk

依次点击访达>前往>前往文件夹,快捷键是Shift+Command+G

Java17安装目录

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

Java17安装目录

可以进入该目录

Java17安装目录

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

Home目录

Home目录

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

bin目录

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

src.zip

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

解压

src目录存放的是Java源代码文件(.java结尾)

src目录

例如查看String.java

String.java源文件在src/java.base/java/lang目录下

然后选择src/java.base/java/lang/String.java

查看String.java

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

VS Code官网

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

image

VS Code打开String.java

3.3 macOS版Java17配置

3.3.1 macOS版Java17配置说明

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

查看java版本信息

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

查看maven版本信息

Q:这样是不是意味着不需要配置Java17的PATH环境变量和JAVA_HOME环境变量?

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

3.3.2 macOS版Java17配置JAVA_HOME环境变量

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

JAVA_HOME

JAVA_HOME

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

  1. 启动Visual Studio Code

启动Visual Studio Code

首次启动后,取消勾选启动后显示欢迎页

启动Visual Studio Code

image

  1. 打开/Users/liuguanglei目录

  打开/Users/liuguanglei目录

  打开/Users/liuguanglei目录

勾选信任作者

勾选信任作者

允许Visual Studio Code 访问其他App的数据

允许Visual Studio Code 访问其他App的数据

允许Visual Studio Code访问文稿 文件夹中的文件

允许Visual Studio Code访问文稿 文件夹中的文件

打开/Users/liuguanglei目录

  1. 创建配置文件

macOS Sonoma使用的Shell是zsh,因此在家目录(/Users/liuguanglei)下创建.zshrc配置文件

在文件资源管理器右键New File

创建配置文件

设置文件名为.zshrc后回车

创建配置文件

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

创建配置文件

  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
  • 1
  • 2

编辑.zshrc配置文件

配置完成后按command+s保存文件

编辑.zshrc配置文件

  1. 打开终端

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

打开终端

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

打开终端

  1. 验证配置

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

验证配置

3.3.3 macOS版Java17配置PATH环境变量

3.3.3.1 PATH环境变量介绍

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

 PATH环境变量

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

例如date命令可以查看系统日期,而where date 可以查看到date命令对应的可执行程序路径,正因为/bin目录在PATH环境变量中,因此在终端输入date命令实际上执行的是/bin目录下的date程序

查看系统日期和date命令的执行路径

如果输入一个不存在的命令,那么shell会提示command not found,因为在PATH环境变量对应的路径下找不到一个名为datexxx的命令(程序)

输入一个不存在的命令

3.3.3.2 PATH环境变量的使用

需求:实现在macOS终端(例如内置终端和第三方终端iTerm)的任意路径下输入QQ就可以启动QQ

  1. 找到QQ安装目录

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

找到QQ安装目录

选择QQ,右键 显示包内容

显示包内容

此时会打开Contents目录

打开Contents目录

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

QQ

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

  1. 启动Visual Studio Code

 启动Visual  Studio Code

  1. 打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

  1. 打开.zshrc配置文件

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

打开.zshrc配置文件

  1. 编辑.zshrc配置文件

配置QQ的PATH环境变量

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

编辑.zshrc配置文件

配置完成后按command+s保存

编辑.zshrc配置文件

  1. 启动终端

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

 启动终端

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

 启动终端

  1. 验证配置

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

验证配置

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

如果能够启动QQ则表示QQ的PATH环境变量配置成功

在用户的家目录启动QQ

启动QQ

在根目录启动QQ

启动QQ

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

启动Visual Studio Code

  1. 打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

  1. 打开.zshrc配置文件

打开后可以看到Java17的JAVA_HOME环境变量的配置以及QQ的PATH环境变量配置

打开.zshrc配置文件

  1. 编辑.zshrc配置文件

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

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

编辑.zshrc配置文件

配置完成后按command+s保存

编辑.zshrc配置文件

  1. 启动终端

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

启动终端

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

启动终端

  1. 验证配置

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

验证配置

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

验证配置

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

Q:为什么Java17要使用JAVA_HOME配置Path环境变量

A:切换JDK版本时只需要修改JAVA_HOME环境变量的值即可

  1. 启动Visual Studio Code

 启动Visual Studio Code

  1. 打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

  1. 打开.zshrc配置文件

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

打开.zshrc配置文件

  1. 编辑.zshrc配置文件

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

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

打开.zshrc配置文件

配置完成后按command+s保存

打开.zshrc配置文件

  1. 打开终端

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

打开终端

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

打开终端

  1. 验证配置

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

验证配置

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

验证配置

3.4 macOS版Java17和Java8相互切换

由于开发项目时使用Java8,但是学习JDK新特性时安装了Java17,因此此时机器上同时存在两个不同版本的JDK,分别是Oracle ARM64位架构macOS版的Java8和Java17

不同版本的JDK

那么如何在这两个版本中间切换?

首先需要知道当前使用的Java版本

在终端的任意路径通过javac -version和java -version得知目前使用的是Java17

当前使用的Java版本

Q:为什么是Java17?

A:因为在.zshrc文件中JAVA_HOME环境变量的值是Java17的Home目录(/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home),而Java的PATH环境变量引用了JAVA_HOME环境变量,因此当前Java版本是Java17

为什么是Java17

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

3.4.1 macOS版Java17切换到Java8

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

  1. 启动Visual Studio Code

启动Visual Studio Code

  1. 打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

  1. 打开.zshrc配置文件

打开.zshrc配置文件

  1. 编辑.zshrc配置文件

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

编辑.zshrc配置文件

 # 配置Oracle ARM64位架构macOS版Java8的JAVA_HOME环境变量   
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
    
    # 配置QQ的PATH环境变量
    export PATH=$PATH:/Applications/QQ.app/Contents/MacOS
    
    # 使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java8的PATH环境变量
    export PATH=$PATH:$JAVA_HOME/bin
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

配置完成后按command+s保存

编辑.zshrc配置文件

  1. 启动终端

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

启动终端

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

启动终端

  1. 验证配置

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

验证配置

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

验证配置

3.4.2 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目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

  1. 打开.zshrc配置文件

打开.zshrc配置文件

  1. 编辑.zshrc配置文件

 编辑.zshrc配置文件

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

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

# 使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java17的PATH环境变量
export PATH=$PATH:$JAVA_HOME/bin
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

配置完成后按command+s保存

 编辑.zshrc配置文件

  1. 启动终端

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

启动终端

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

启动终端

  1. 验证配置

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

验证配置

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

验证配置

3.5 macOS版Java17卸载

Q:什么时候需要卸载Java17

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

Oracle ARM64位架构macOS版Java17卸载需要删除Java17安装目录

除此以外还要**.zshrc删除环境变量配置文件**,.zshrc环境变量配置文件配置了Java21的PATH环境变量和JAVA_HOME环境变量。

3.5.1 删除Java17安装目录

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

Java17安装目录

  1. 启动终端

启动终端

  1. 删除Java17的安装目录

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

删除Java17的安装目录

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

看不到Java17的安装目录

3.5.2 删除Java17环境变量配置文件

  1. 启动终端

 启动终端

  1. 删除.zshrc配置文件

使用rm .zshrc命令 删除.zshrc配置文件

删除.zshrc配置文件

删除后使用Visual Studio Code打开/Users/liuguanglei目录后,看到不.zshrc文件

看到不.zshrc文件

ls -al命令中也不会看到.zshrc文件

看到不.zshrc文件

  1. 验证Java17是否卸载成功

删除Java17安装目录以及.zshrc配置文件后,在终端的任意路径使用javac -version和java -version查看Java编译器和Java解释器版本信息,如果提示The operation couldn’t be completed. Unable to locate a Java Runtime. 表示Java17卸载成功

验证Java17是否卸载成功

4.macOS版Java21开发环境搭建

4.1 macOS版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/01/04)Oracle官方提供的最新Java版本(JDK版本)是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

Java支持的操作系统

macOS Sonoma可以点击左上角的苹果菜单

关于本机

在弹出的面板中查看系统版本信息

目前本机使用的系统是macOS Sonoma 14.2.1,芯片是M1 Max

mac电脑信息

  1. 选择ARM64 DMG Installer

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

jdk-21_macos-x64_bin.dmg

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

jdk-21_macos-aarch64_bin.dmg

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

jdk-21_macos-aarch64_bin.dmg

4.下载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

下载jdk-21_macos-aarch64_bin.dmg

使用快捷键 Option+Command+L 可以打开下载内容,查看下载的速度以及所需的时间

查看下载的速度以及所需的时间

当Java21下载完成后,点击在Finder中显示

在Finder中显示

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

jdk-21_macos-aarch64_bin.dmg

4.2 macOS版Java21安装

4.2.1 macOS版Java21安装过程

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

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

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

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

双击JDK 21.0.1.pkg启动安装器

双击JDK 21.0.1.pkg启动安装器

  1. 介绍

点击继续

继续

  1. 目的宗卷

你要如何安装此软件?默认选择为这台电脑上的所有用户安装

选择一个目的宗卷:为这台电脑上的所有用户安装,点击继续

目的宗卷

  1. 安装类型

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

标准安装

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

安装器

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

安装中

安装中

  1. 安装完成

安装完成

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

JavaSE文档

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

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

提示

  1. 推出桌面的JDK 21.0.1

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

推出成功

推出成功

4.2.2 macOS版Java21安装目录

默认情况下Oracle ARM64位架构macOS版Java21安装目录是/Library/Java/JavaVirtualMachines/jdk-21.jdk

依次点击访达>前往>前往文件夹,快捷键是Shift+Command+G

Java21安装目录

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

Java21安装目录

Java21安装目录

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

Home目录

Home目录

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

bin目录

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

src.zip

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

解压src.zip

src目录存放的是Java源代码文件(.java结尾)

src目录

例如查看String.java

String.java源文件在src/java.base/java/lang目录下

然后选择src/java.base/java/lang/String.java

查看String.java

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

Visual Studio Code

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

VS Code查看String.java

VS Code查看String.java

4.3 macOS版Java21配置

4.3.1 macOS版Java21配置说明

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

macOS版Java21配置说明

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

终端的maven bin目录

Q:这样是不是意味着不需要配置Java21的PATH环境变量和JAVA_HOME环境变量?

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

4.3.2 macOS版Java21配置JAVA_HOME环境变量

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

Java21的Home目录

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

  1. 启动Visual Studio Code

启动Visual Studio Code

首次启动后,取消勾选启动后显示欢迎页

首次启动

首次启动

  1. 打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

勾选信任作者

勾选信任作者

允许Visual Studio Code 访问其他App的数据

允许Visual Studio Code 访问其他App的数据

允许Visual Studio Code访问文稿 文件夹中的文件

允许Visual Studio Code访问文稿 文件夹中的文件

VS Code打开Java目录

  1. 创建配置文件

macOS Sonoma使用的Shell是zsh,因此在家目录(/Users/liuguanglei)下创建.zshrc配置文件

在文件资源管理器右键New File

创建配置文件

设置文件名为.zshrc后回车

设置文件名为.zshrc后回车

Visual Studio Code会自动打开.zshrc文件

Visual Studio Code会自动打开.zshrc文件

  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
  • 1
  • 2

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

配置完成后按command+s保存文件

配置完成后按command+s保存文件

  1. 打开终端

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

打开终端

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

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

  1. 验证配置

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

 验证配置

4.3.3 macOS版Java21配置PATH环境变量

4.3.3.1 PATH环境变量介绍

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

PATH环境变量介绍

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

例如date命令可以查看系统日期,而where date 可以查看到date命令对应的可执行程序路径,正因为/bin目录在PATH环境变量中,因此在终端输入date命令实际上执行的是/bin目录下的date程序

PATH环境变量介绍

如果输入一个不存在的命令,那么shell会提示command not found,因为在PATH环境变量对应的路径下找不到一个名为datexxx的命令(程序)

不存在的命令

4.3.3.2 PATH环境变量的使用

需求:实现在macOS终端(例如内置终端和第三方终端iTerm)的任意路径下输入QQ就可以启动QQ

  1. 找到QQ安装目录

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

PATH环境变量的使用

选择QQ,右键 显示包内容

显示包内容

此时会打开Contents目录

打开Contents目录

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

QQ

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

  1. 启动Visual Studio Code

启动Visual  Studio Code

  1. 打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

  1. 打开.zshrc配置文件

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

打开.zshrc配置文件

  1. 编辑.zshrc配置文件

配置QQ的PATH环境变量

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

 编辑.zshrc配置文件

配置完成后按Command+s保存

 编辑.zshrc配置文件

  1. 打开终端

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

打开终端

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

启动Visual Studio Code内置的终端

  1. 验证配置

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

验证配置

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

如果能够启动QQ则表示QQ的PATH环境变量配置成功

在用户的家目录下启动QQ

在用户的家目录下启动QQ

在根目录下启动QQ

在根目录下启动QQ

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

启动Visual Studio Code

  1. 打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

  1. 打开.zshrc配置文件

打开后可以看到Java21的JAVA_HOME环境变量的配置以及QQ的PATH环境变量配置

打开.zshrc配置文件

  1. 编辑.zshrc文件

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

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

编辑.zshrc文件

配置完成后按command+s保存

配置完成后按command+s保存

  1. 启动终端

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

启动终端

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

启动Visual Studio Code内置的终端

  1. 验证配置

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

验证配置

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

查看Java编译器和解释器的版本信息应该为Java21

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

Q:为什么Java21要使用JAVA_HOME配置Path环境变量

A:切换JDK版本时只需要修改JAVA_HOME环境变量的值即可

  1. 启动Visual Studio Code

 启动Visual Studio Code

  1. 打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

  1. 打开.zshrc配置文件

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

打开.zshrc配置文件

  1. 编辑.zshrc配置文件

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

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

编辑.zshrc配置文件

配置完成后按command+s保存文件

配置完成后按command+s保存文件

  1. 打开终端

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

打开终端

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

启动Visual Studio Code内置的终端

  1. 验证配置

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

 验证配置

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

查看Java编译器和解释器的版本信息应该是Java21

4.4 macOS版Java21和Java17相互切换

由于开发项目时使用Java17,但是学习JDK新特性时安装了Java21,因此此时机器上同时存在两个不同版本的JDK,分别是Oracle ARM64位架构macOS版本的Java17和Java21

不同版本的JDK

那么如何在这两个版本中间切换?

首先需要知道当前使用的Java版本

在终端的任意路径通过javac -version和java -version得知目前使用的是Java21

目前使用的是Java21

Q:为什么是Java21?

A:因为在.zshrc配置文件中JAVA_HOME环境变量的值是Java21的Home目录(/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home),而Java的PATH环境变量引用了JAVA_HOME环境变量

为什么是Java21

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

4.4.1 macOS版Java21切换到Java17

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

  1. 启动终端

启动终端

  1. 打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

  1. 打开.zshrc配置文件

打开.zshrc配置文件

  1. 编辑.zshrc配置文件

配置Oracle ARM64位架构macOS版Java17的PATH环境变量编辑.zshrc配置文件

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

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

# 使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java17的PATH环境变量
export PATH=$PATH:$JAVA_HOME/bin
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

配置完成后按command+s保存

编辑.zshrc配置文件

  1. 启动终端

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

启动终端

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

启动终端

  1. 验证配置

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

验证配置

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

验证配置

4.4.2 macOS版Java17切换到Java21

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

  1. 启动Visual Studio Code

启动Visual Studio Code

  1. 打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

打开/Users/liuguanglei目录

  1. 打开.zshrc配置文件

打开.zshrc配置文件

  1. 编辑.zshrc配置文件

编辑.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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

配置完成后按command+s保存

编辑.zshrc配置文件

  1. 启动终端

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

启动终端

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

启动终端

  1. 验证配置

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

验证配置

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

验证配置

4.5 macOS版Java21卸载

Q:什么时候需要卸载Java21

A:如果不再使用(例如公司未来的项目全部使用Java5开发)Java21时就可以将其卸载

Oracle ARM64位架构macOS版Java21卸载需要删除Java21安装目录

除此以外还要删除.zshrc环境变量配置文件,.zshrc环境变量配置文件配置了Java21的PATH环境变量和JAVA_HOME环境变量。

4.5.1 删除Java21安装目录

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

Java21安装目录

  1. 启动终端

 启动终端

  1. 删除Java21的安装目录

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

删除Java21的安装目录

删除成功后JavaVirtualMachines目录下看不到Java21的安装目录

看不到Java21的安装目录

4.5.2 删除Java21环境变量配置文件

  1. 启动终端

启动终端

  1. 删除.zshrc配置文件

使用rm .zshrc命令 删除.zshrc配置文件

 删除.zshrc配置文件

删除后使用Visual Studio Code打开/Users/liuguanglei目录后,看到不.zshrc配置文件

看到不.zshrc配置文件

ls -al命令中也不会看到.zshrc文件

看到不.zshrc配置文件

  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.com for information on installing Java**.** 表示Java21卸载成功

验证Java21是否卸载成功

5.macOS版第一个Java程序开发

5.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编译器编译执行

如何看待Java是一门半编译半解释型的语言

5.2 Java开发工具介绍

工欲善其事,必先利其器

虽然JDK提供了开发Java程序时所用到的一些工具,例如javac,java,jdb,jconsole等等

Java开发工具

但是JDK并没有提供编写Java代码的开发工具,因此想要在编写Java程序之前,还需要了解Java开发工具, 我这里把Java开发工具分成两类,分别是文本编辑器和IDE

常用的文本编辑器有记事本、Visual Studio Code、Sublime Text

Visual Studio Code

Visual Studio Code

Sublime Text

Sublime Text

Visual Studio Code和Sublime Text都是高级的文本编辑器,而且是跨平台的(Windows,macOS,Linux),建议初学Java的朋友可以使用它们来开发Java程序,因为相比IDE而言更加轻量级,对初学者更加容易上手**。**

常用的Java IDE(Integrated Development Environment) 有IntelliJ IDEA和Eclipse

IntelliJ IDEA

IntelliJ IDEA

Eclipse

Eclipse

IDEA和Eclipse都是IDE,I****DE集成项目开发中常用的功能,包括编辑器、编译工具、反编译工具、测试工具、性能分析工具、部署工具等等,因此可以大大提高开发效率

目前大部分互联网公司基本普遍都会使用IntelliJ IDEA开发Java项目,因此我们后期会全程使用IntelliJ IDEA。

5.3 第一个Java程序开发

在学习任何一门编程语言时编写的第一个程序通常都称为HelloWorld

如果你能够编写并且运行HelloWorld,那么意味着已经迈入编程的大门

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

  1. 检查Java开发环境

在开发第一个Java程序之前先要检查Java开发环境:即安装、配置JDK

目前本机已经安装四个不同版本的Java,分别是Java8、Java11、Java17、Java21,它们都是官方长期支持版

四个不同版本的Java

那么到底是使用哪个版本,是由PATH环境变量决定的

从.zshrc文件中配置得知目前使用的Java版本为Java21

目前使用的Java版本为Java21

也可以在终端上使用Java提供的javac、java命令,这两个命令提供了-version选项查看版本信息

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

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

版本信息

  1. 新建code文件夹

在/Users/Documents目录下,触控板右键新建文件夹

新建code文件夹

新建code文件夹

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

新建code文件夹

新建code文件夹

code文件夹重命名成功

新建code文件夹

  1. 新建源文件

首先在code目录下右键 新建文件>Text

不过macOS Sonoma右键没有新建文件菜单,需要使用第三方软件实现,例如右键助手专业版

右键助手

在安装完右键助手专业版右键助手

需要启用右键菜单

右键助手

右键助手安装、配置完成后,就可以在code目录下选择右键新建文件>Text

新建源文件

授权/Users/liuguanglei目录

新建源文件

这样就会创建一个文本文件,文件名是未命名.txt

新建源文件

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

新建源文件

新建源文件

访达还会提示 **你确定要将扩展名“.txt”更改为“.java”吗?,**点击使用.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");
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5

 编辑源文件

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

  • 如果觉得代码字体太小不合适,可以使用Command +和Command - 临时调整字体大小

  • 代码需要进行适当的换行、缩进

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

编写完成后按command+s保存源文件

 编辑源文件

  1. 编译源文件

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

编译源文件

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

编译源文件

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

编译源文件

  1. 解释运行字节码文件

在终端上输入java HelloWorld后回车解释执行HelloWorld.class字节码文件

如果没有任何运行时错误就会看到Windows终端打印输出HelloWorld并换行

解释运行字节码文件

5.4 第一个Java程序详解

public class HelloWorld{
	public static void main(String[]args){
		System.out.println("Hello World");
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  1. public是一个关键字,表示权限最大的访问权限修饰符,称为公共的,后期在学习面向对象的时候还会学习private,默认的,protected,这里只需要记住如果类名使用public 修饰,那么public修饰的类名必须和文件名保持一致

  2. class是一个关键字,用于定义类,例如class Welcome{} 表示定义一个类,类名是Welcome,{}表示类的开始范围和结束范围,Java是面向对象的编程语言,类是Java程序的基本单元。

  3. 在一个源文件中可以定义多个class,但是只能有一个类被public修饰。编译器在编译后会生成和源文件中class数量一致的字节码文件,字节码文件名和类名相同。

MyWorld.java

   public class MyWorld{
    	public static void main(String[]args){
    		System.out.println("This is my world");
    	}
    }
    
    class Chinese{
    
    }
    
    class American{
    
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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

编译和运行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();语句

public class PrintData{
	public static void main(String[]args){
		System.out.println("HelloWorld");
		System.out.print("跟光磊学Java");
		System.out.print("从小白");
		System.out.print("到架构师");
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

编译和运行PrintData.java程序

编译和运行PrintData.java程序

需要注意的是最后一句打印输出语句末尾添加了%

这是因为如果最后输出不是换行,zsh 就会在最后帮你加一个%,然后强制换行。

这样的好处是下一个命令总是从头开始的,不容易混乱。

程序中**System.out.println()**语句打印的内容包含了中文,但是macOS系统无论是文件还是终端默认都是UTF-8编码,不管你使用的是Java8、Java17还是Java21,都不会有中文乱码的问题存在

5.5 Java跨平台原理

在搭建Windows版和macOS版Java开发环境时都需要根据自己所使用操作系统的版本来选择安装、配置对应版本的JDK

不同系统版本的JDK

而JDK包含JRE和开发工具,JRE包含JVM和核心类库,Oracle公司需要根据不同的操作系统开发不同版本的JDK

JDK的组成

Java跨平台指的是在Windows系统上开发的Java程序编译之后的字节码文件可以在任意安装了JDK的其他操作系统上运行

Java跨平台的原理

Java跨平台的原理就是Java程序不是直接在操作系统上运行的,而是在JVM(Java Virtual Machine)上运行。JVM屏蔽底层操作系统差异性,但是JVM本身不是跨平台。

Java跨平台的原理

HelloWorld程序演示Java跨平台

  1. 检查Windows和macOS的Java环境

检查Windows Java环境

检查Windows Java环境

检查macOS Java环境

检查macOS  Java环境

  1. 在Windows上编写HelloWorld ​在Windows上编写HelloWorld ​
public class HelloWorld{
	public static void main(String[]args){
		System.out.println("跟光磊学Java从小白到架构师");
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 在Windows终端上使用javac编译HelloWorld.java源文件,生成HelloWorld.class字节码文件

编译HelloWorld.java

  1. 在macOS iTerm终端上使用java解释运行Windows编译生成的HelloWorld字节码文件

解释运行HelloWorld

5.6 Java21新特性:未命名类和实例main方法

Java21新增预览版的特性:未命名类和实例main方法

在Windows上编写HelloWorld ​

此特性的好处就是可以让初学者在不需要了解程序结构和修饰符的前提下,更快更容易地写出第一个HelloWorld程序

Java21之前的HelloWorld

image

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

Java21之后的HelloWorld

image

   void main(){
    		System.out.println("跟光磊学Java从小白到架构师");
    }
  • 1
  • 2
  • 3

相比之下Java21之后的HelloWorld更加简洁,这样可以减少错误的出现

  • 编译时需要使用javac --enable-preview --source 21 源文件名.java,例如javac --enable-preview --source 21 HelloWorld.java

  • 解释运行时使用java --enable-preview 字节码文件名,例如java --enable-preview HelloWorld

java21 编译、解释运行HelloWorld

在使用Java21新特性未命名类和实例main方法编写完源文件后,也可以直接使用java --enable-preview --souce 21 源文件.java,例如java --enable-preview --souce 21 HelloWorld.java 来编译运行HelloWorld。

java 21运行HelloWorld

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/509472
推荐阅读
相关标签
  

闽ICP备14008679号