日常办公和软件开发除了可以使用Windows系统以外,还可以使用macOS系统,至于具体使用什么系统取决于你入职公司之后公司给你发的什么电脑,如果是MacBookPro那么就使用macOS开发项目,因此现在我们开始在macOS系统下搭建Java8的开发环境,如果你的Mac电脑使用的Intel CPU,那么按照如下方法下载、安装和配置Java8的开发环境。
早期Mac电脑都是使用Intel 的CPU,在2020年以后苹果公司在ARM架构的基础上自研CPU,例如M1,M1 Pro,M1 Ultra,M2等等,因此苹果公司的Mac电脑有 Intel x86架构和ARM 架构两种不同的CPU架构
那么问题来了,我怎么知道我使用的Mac电脑CPU架构呢?
在macOS Ventura 点击左上角的苹果菜单,然后选择关于本机
在弹出的窗口中看到芯片是Apple开头的 ,例如Apple M1 Pro,Apple M1 Max,Apple M1 Ultra,Apple M2,等等就是属于ARM架构
在macOS Montery 点击左上角的苹果菜单,然后选择关于本机
在弹出的概览窗口中看到处理器包含Intel,例如2.3 GHz 八核 Intel Core i9 就是属于Intel x86架构
正是有这两种不同的CPU架构,直接导致基于Intel x86架构开发的程序(例如金山文档、恒星播放器、cleanmymac)是无法直接运行在基于ARM架构的CPU(例如M1,M1 Pro,M1 Max,M1 Ultra ,M2)上
2. Rosetta
2.1 什么时候需要Rosetta
苹果公司提供了一个翻译工具-Rosetta 2,通过 Rosetta 2,搭载 Apple 芯片的 Mac 可以使用专为配备 Intel 处理器的 Mac 构建的 App,这样也就意味着以前为Intel CPU开发的程序可以通过Rosetta 2 运行在苹果芯片的Mac电脑上,例如金山文档、恒星播放器等等。
2.2 如何安装Rosetta
Rosetta 2 仅适用于搭载 Apple 芯片的 Mac 电脑。
首次打开需要 Rosetta 的 App 时,系统会要求您安装 Rosetta。点按“安装”,然后输入您的用户名和密码以允许继续安装。
如果您点按“以后”,则下次打开需要 Rosetta 的 App 时,系统会再次要求您安装 Rosetta。
如果 Rosetta 已经安装,则系统不会再次要求您安装,也就是仅仅需要安装一次。
2.3 如何使用 Rosetta
您不需要打开 Rosetta 或与这个 App 互动。每当您使用专为搭载 Intel 处理器的 Mac 电脑构建的 App 时,Rosetta 都会在后台自动运行。Rosetta 会转换相应 App,使它可以与 Apple 芯片搭配使用。
对于需要 Rosetta 的 App,在大多数情况下,您不会察觉它的性能有任何不同。不过,您应该联系 App 开发者,以询问相应 App 有没有一个版本能够以原生方式来充分利用 Apple 芯片的功能和性能。
2.4 哪些 App 需要 Rosetta?
要识别需要 Rosetta 或者可以使用 Rosetta 的 App,请按照以下步骤操作:
在“访达”中选择一个 App。
从菜单栏的“文件”菜单中,选取“显示简介”。
查看标有“种类”字样的信息:
应用程序 (Intel) 表示 App 仅支持 Intel 处理器,并且需要 Rosetta 才能在搭载 Apple 芯片的 Mac 上运行。例如金山文档、恒星播放器
应用程序(通用)表示 App 既支持 Apple 芯片也支持 Intel 处理器,并且在默认情况下使用 Apple 芯片。通用 App 不需要 Rosetta。
对于标有“应用程序(通用)”的 App,“简介”窗口包含“使用 Rosetta 打开”这项设置。通过这项设置,网页浏览器等通用 App 可以使用还没有更新为支持 Apple 芯片的插件、扩展或其他附加组件。如果某个通用 App 无法识别您为这个 App 安装的附加组件,您可以退出这个 App,选择这项设置,然后再试一次。
应用程序(Apple芯片) 表示App是专门针对Apple芯片开发的,例如例如M1,M1 Pro,M1 Max,M1 Ultra ,M2)等等
3. 基于Intel x86 64-bit macOS版Java8下载
- 访问Java官网,其访问地址是https://www.oracle.com/java/
- 点击右上角的Download Java,跳转到Java的下载页面
Java的下载地址 https://www.oracle.com/java/technologies/downloads/
目前Oracle官方提供的最新Java版本\JDK版本是Java19和Java17,但是最新的LTS版本是Java17
这次我们要下载的是Java8,所以往下滚动鼠标到Java8的下载
目前Java8支持4个操作系统
- Linux
- macOS
- Solaris
- Windows
- 选择macOS版x64 DMG Installer
x64 DMG Installer 表示Intel x86 64位安装程序,如果你的Mac电脑使用的Intel CPU 那么就下载这个
4.下载jdk-8u351-macosx-x64.dmg
首先点击jdk-8u351-macosx-x64.dmg,然后勾选同意许可协议,最后点击Download jdk-8u351-macosx-x64.dmg
-
注册\登录Oracle账户
如果没有Oracle账账户,大家可以在注册页面 https://profile.oracle.com/myprofile/account/create-account.jspx 填写相应的信息注册账户
账户创建成功以后,在登录页面填写账户信息登录Oracle账户
登录成功之后浏览器会自动开始下载 -
下载成功
然后在访达的下载目录就可以看到jdk-8u351-macosx-x64.dmg文件
4. 基于Intel x86 64-bit macOS版Java8安装
-
双击jdk-8u351-macosx-x64.dmg文件
-
双击JDK 8 Update 351.pkg
-
点击继续
-
点击安装
安装之前安装器会提示 使用触控ID或输入密码以运行此次操作
- 安装中
- 安装成功
点击后续步骤跳转到Java8的官方文档 https://docs.oracle.com/javase/8/
点击关闭 完成安装
然后会提示 你要将JDK 8 Update 351 安装器移动到废纸篓吗?
这里建议保留,因为后期可能会因为某些原因需要重新安装
- 推出桌面的JDK 8 Update 351
选中JDK 8 Update 351 ,然后右键推出即可,当然也可以使用快捷键Command+E推出
5. 基于Intel x86 64-bit macOS版Java8配置
5.1 基于Intel x86 64-bit macOS版Java8配置说明
当基于Intel x86架构 macOS版Java8安装完成以后,你会发现即使没有配置JAVA_HOME环境变量,在终端上运行mvn --version时也不会像Windows那样提示需要配置JAVA_HOME
而且即使没有配置PATH环境变量,在终端的任意路径下也可以运行javac -version和java -version,意味着可以在终端的任意路径使用javac和java
这样是不是就意味着不用配置Java8的JAVA_HOME和PATH环境变量呢?
其实不然,因为后期我们会使用多个不同版本的Java,例如在开发Java项目时使用的Java8,而学习Java语言时为了使用高版本的新特性可能会使用Java11甚至Java17,这里就会有在终端上切换Java版本的需求。因此我们依然要配置Java8的JAVA_HOME和PATH环境变量
不过和Windows上Java8的配置方式不同,macOS版Java8的配置方式需要通过在终端上执行一些命令进行,如果你熟悉Linux命令那么上手会比较容易。
5.2 基于Intel x86 64-bit macOS版Java8配置JAVA_HOME环境变量
JAVA_HOME其实指的就是Java的家目录,默认情况下Java8家目录的路径是/Library/Java/JavaVirtualMachines/jdk1.8.0_351.jdk/Contents/Home
配置JAVA_HOME环境变量的目的就是为了给Java8的PATH环境变量使用的
- 启动终端
Mac内置终端程序,你可以在启动台的其他中找到它
不过我使用的是第三方终端iTerm,需要自己手动安装,可以使用Command+空格打开聚焦搜索,然后搜索iTerm回车后打开
-
查看系统所使用的Shell类型
不同类型的Shell所使用的配置文件不同,例如zsh使用的.zshrc,而bash使用的.bash_profile
使用echo $SHELL 命令可以查看当前使用的Shell类型,这里默认使用的是zsh如果想要使用bash,那么可以使用chsh -s /bin/bash命令切换到bash,不过切换以后需要重新开启新的窗口,然后使用echo $SHELL查看Shell类型
-
创建配置文件
如果你是使用的bash ,那么在用户的家目录下使用touch .bash_profile 创建.bash_profile文件
如果你是使用的zsh,那么在用户的家目录下使用touch .zshrc创建.zshrc文件
Mac的家目录就是/Users/liuguanglei,其中liuguanglei表示用户名,每个系统的用户名可能不相同。打开终端以后默认的路径就是在家目录下
我这里使用默认的shell是zsh,因此创建.zshrc文件
文件创建成功后可以使用 ls -al查看文件
- 在配置文件中添加Java8的JAVA_HOME环境变量
首先使用vim .zshrc 打开文件
此时处于命令模式,无法添加内容
需要按i键进入编辑模式
然后添加如下配置
# 配置Java8的JAVA_HOME
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_351.jdk/Contents/Home
配置完成以后按esc退出编辑模式
退出了编辑模式后
然后按:wq 保存并退vim编辑器
-
重新加载配置文件
在终端上输入source .zshrc让添加的配置生效 -
验证配置
在终端上输入echo $JAVA_HOME 命令看能否输出Java8家目录的路径/Library/Java/JavaVirtualMachines/jdk1.8.0_351.jdk/Contents/Home
5.3 基于Intel x86 64-bit macOS版Java8配置PATH环境变量
5.3.1 PATH环境变量的介绍
PATH环境变量的本质就是一系列的路径,例如/bin,/usr/bin,/usr/local/bin,多个路径之间使用冒号(:)隔开,Mac下可以在终端上使用echo $PATH命令查看当前系统的PATH环境变量
PATH环境变量的作用就是在终端上执行命令时,系统会从PATH环境变量的路径查找命令对应的可执行程序,然后执行该程序
例如date 可以查看系统日期,而 where date 可以查看到date命令的路径,正因为/bin在PATH环境变量中,因此在终端输入date实际是运行的是/bin目录下的date程序
如果输入一个不存在的命令,那么系统会提示command not found
5.3.2 基于Intel x86 64-bit macOS版Java8配置PATH环境变量
- 启动终端
Mac内置终端程序,你可以在启动台的其他中找到它
不过我使用的是第三方终端iTerm,需要自己手动安装,可以使用Command+空格打开聚焦搜索,然后搜索iTerm回车后打开
-
打开配置文件
之前在配置JAVA_HOME环境变量创建过.zshrc文件,因此使用vim .zshrc命令打开即可
打开文件后可以查看到Java8的JAVA_HOME环境变量配置 -
编辑配置文件
vim打开文件后只能查看文件内容而不能编辑,因此按i键进入编辑模式
然后在文件末尾添加如下内容
#配置Java8的PATH环境变量
export PATH=$PATH:$JAVA_HOME/bin
- 保存配置并退出vim编辑器
文件编辑完成后按esc退出编辑模式
然后按:wq保存并退出vim编辑器
-
重新加载配置文件
在终端上输入source .zshrc让添加的配置生效 -
验证配置
在终端上输入echo $PATH命令查看系统PATH环境变量,确认是否已经添加Java8的PATH环境变量
6. 基于Intel x86 64-bit macOS版Java8卸载
未来的某个时间可能你不再需要使用Java8时,就可以将其卸载,卸载Java8时需要删除三个目录和配置文件(例如.zshrc)
/Library/Java/JavaVirtualMachines/jdk1.8.0_351.jdk # Java8的安装目录
/Library/Application\ Support/Oracle/Java/
/Library/PreferencePanes/JavaControlPanel.prefPane/ # Java8的控制面板
删除三个目录时需要使用sudo rm -rf 命令来完成,首次执行sudo rm -rf前需要输入用户的开机密码
sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_351.jdk
sudo rm -rf /Library/Application\ Support/Oracle/Java
sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane
然后删除配置文件,例如.zshrc,此时使用rm .zshrc命令删除即可
删除.zshrc文件后重新开个终端窗口来验证JAVA_HOME和PATH环境变量是否已经删除
最后在终端上输入javac -version 和java -version,如果提示The operation couldn’t be completed. Unable to locate a Java Runtime. 表示卸载成功