赞
踩
早期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架构
而macOS Monterey在弹出的概览窗口中看到芯片包含Intel就是 Intel x86架构
正是因为两种不同的CPU架构,直接导致基于Intel x86架构开发的程序(例如阿里旺旺、金山文档、亿图图示等等)是无法直接运行在基于ARM架构的CPU上,例如M1 Max,M1 Ultra,M2 Max,M2 Ultra,M3 Max,M3 Ultra等等
苹果公司提供了一个翻译工具-Rosetta 2,通过 Rosetta 2,搭载 Apple 芯片的 Mac 可以使用专为配备 Intel 处理器的 Mac 构建的 App,这样也就意味着以前为Intel CPU开发的程序可以通过Rosetta 2 运行在苹果芯片的Mac电脑上,例如阿里旺旺、金山文档等等。
Rosetta 2 仅适用于搭载 Apple 芯片的 Mac 电脑。
首次安装或者打开需要 Rosetta 的 App 时,例如阿里旺旺,恒星播放器,金山文档等等,系统会要求您安装 Rosetta。点按“安装”,然后输入您的用户名和密码以允许继续安装。
如果您点按“以后”,则下次打开需要 Rosetta 的 App 时,系统会再次要求您安装 Rosetta。
如果 Rosetta 已经安装,则系统不会再次要求您安装,也就是仅仅需要安装一次。
您不需要打开 Rosetta 或与这个 App 互动。每当您使用专为搭载 Intel 处理器的 Mac 电脑构建的 App 时,Rosetta 都会在后台自动运行。Rosetta 会转换相应 App,使它可以与 Apple 芯片搭配使用。 对于需要 Rosetta 的 App,在大多数情况下,您不会察觉它的性能有任何不同。不过,您应该联系 App 开发者,以询问相应 App 有没有一个版本能够以原生方式来充分利用 Apple 芯片的功能和性能。
要识别需要 Rosetta 或者可以使用 Rosetta 的 App,请按照以下步骤操作:
在“访达”中选择一个 App。 从菜单栏的“文件”菜单中,选取“显示简介”。
查看标有“种类”字样的信息: 应用程序 (Intel) 表示 App 仅支持 Intel 处理器,并且需要 Rosetta 才能在搭载 Apple 芯片的 Mac 上运行,例如阿里旺旺、金山文档、亿图图示
应用程序(通用)表示 App 既支持 Apple 芯片也支持 Intel 处理器,并且在默认情况下使用 Apple 芯片。通用 App 不需要 Rosetta。例如微信、QQ、网易邮箱大师等等
对于标有“应用程序(通用)”的 App,“简介”窗口包含“使用 Rosetta 打开”这项设置。通过这项设置,网页浏览器等通用 App 可以使用还没有更新为支持 Apple 芯片的插件、扩展或其他附加组件。如果某个通用 App 无法识别您为这个 App 安装的附加组件,您可以退出这个 App,选择这项设置,然后再试一次。
应用程序(Apple芯片) 表示App是专门针对Apple芯片开发的,例如M1 Max,M1 Ultra,M2 Max,M2 Ultra,M3 Max,M3 Ultra等等都属于Apple芯片。
Java的下载地址是https://www.oracle.com/java/technologies/downloads/
目前(2024/01/04)Oracle官方提供的最新Java版本(JDK版本)是Java21 和Java17,最新的LTS版本是Java21
本次我们下载的是Java8,所以往下滚动到Java8的下载
目前Java8支持四个操作系统
Linux
macOS
Solaris
Windows
大家在下载Java8的时候需要根据CPU和操作系统的版本选择对应版本的Java8
macOS Sonoma可以点击左上角的苹果菜单>关于本机
在弹出的面板中查看系统版本信息
目前本机使用的系统是macOS Sonoma 14.2.1,芯片是M1 Max
如果你的Mac电脑使用的Intel CPU,那么选择macOS版 x64 DMG Installer的jdk-8u391-macosx-x64.dmg
如果你的Mac电脑使用的是Apple CPU,例如M1 Max,M1 Ultra,M2 Max,M2 Ultram,M3 Max等等,那么选择macOS版ARM64 DMG Installer的jdk-8u391-macosx-aarch64.dmg
由于本机使用的是Apple M1 Max CPU,因此选择macOS版ARM64 DMG Installer的jdk-8u391-macosx-aarch64.dmg
首先点击jdk-8u391-macosx-aarch64.dmg,然后勾选许可协议,最后点击 Download jdk-8u391-macosx-aarch64.dmg
如果没有Oracle账户,大家可以在注册页面填写相应的信息注册Oracle账户
账户创建成功以后,在登录页面填写账户信息登录Oracle账户
登录成功之后浏览器会自动下载Java8使用快捷键 Option+Command+L 可以打开下载内容,查看下载的速度以及所需的时间
当Java8下载完成后,点击在Finder中显示
默认在下载目录(/Users/liuguanglei/Downloads)下会看到Java8的安装包jdk-8u391-macosx-aarch64.dmg
点击继续
你要如何安装此软件?默认选择为这台电脑上的所有用户安装
选择一个目的宗卷:为这台电脑上的所有用户安装,点击继续
默认选择标准安装,点击安装即可
安装之前安装器会提示 "安装器"正在尝试安装新软件 使用触控ID或输入密码以允许此次操作
输入密码或者使用TouchID后安装器就会开始安装,安装过程仅需不到1分钟
安装完成后可以点击后续步骤?和关闭
关闭安装向导后还会提示你要将“JDK 8 Update 391”安装器移到废纸篓吗?,建议点击保留,这样下次重装时不需要重新下载Java8
选中桌面的JDK 8 Update 391,然后右键推出即可,当然也可以使用快捷键Command+E推出
默认情况下Oracle ARM64位架构macOS版Java8安装目录是/Library/Java/JavaVirtualMachines/jdk-1.8.jdk
依次点击访达>前往>前往文件夹,快捷键是Shift+Command+G
输入路径/Library/Java/JavaVirtualMachines/jdk-1.8.jdk后回车
即可进入该目录
不过我们需要了解的是/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home目录
作为Java初学者来说,目前只需要关注bin目录和src.zip压缩文件
可以双击src.zip解压后查看,默认解压在下载目录
src目录存放的是Java源代码文件(.java结尾)
例如查看String.java
String.java源文件位于src/java/lang目录下
Visual Studio Code是一个跨平台的文本编辑器,需要自己下载、安装后才能使用
使用Visual Studio Code文本编辑器打开String.java
当Oracle ARM64位架构macOS版Java8安装完成后,你会发现没有配置PATH环境变量,也可以在终端的任意路径下使用javac和java,例如javac和java通过 -version选项查看Java编译器和解释器版本信息
没有配置JAVA_HOME环境变量,也可以在终端的maven bin目录(/Users/liuguanglei/Documents/soft/java/apache-maven-3.9.6/bin)下使用maven命令 mvn --version查看Maven版本信息以及依赖的Java环境信息,其中./表示当前路径
Q:这样是不是意味着不需要配置Java8的PATH环境变量和JAVA_HOME环境变量?
A:依然需要配置,因为后期我们会使用多个不同版本的JDK,例如在公司开发项目时使用Java8,而学习Java新特性时使用Java17或者Java21,那么就会有切换Java版本的需求,因此还需要配置Java8的PATH环境变量和JAVA_HOME环境变量。
JAVA_HOME指的就是Java8的Home目录(/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home)
配置JAVA_HOME环境变量的目的就是方便配置Java的PATH环境变量以及通过修改JAVA_HOME环境变量实现在终端上切换不同版本的Java,例如Java8和Java17的相互切换,Java17和Java21的相互切换。
macOS内置终端程序,你可以在程序坞的启动台的其他中找到它
macOS内置终端
不过我使用的是第三方终端iTerm,该终端需要自己下载、安装后才能使用。
使用Command+空格键打开聚焦搜索,然后搜索iTerm,点击iTerm打开
就可以启动iTerm
不过iTerm默认的字体大小只有12,建议改成16
在启动iTerm后,首先点击菜单栏的iTerm>Settings,快捷键是Command+,
在Preferences>Profiles>Text将Font大小由12
改成16即可
修改完成以后点击Preferences左上角的x关闭窗口
建议将iTerm放到Dock栏,
其方法就是在启动iTerm后,右键选择程序坞的iTerm,然后依次点击选项>在程序坞中保留即可
以后只需要点击Dock栏的iTerm图标就可以启动iTerm终端
不同的macOS系统使用的Shell类型不同,因此对应的配置文件不同
例如zsh使用的.zshrc,而bash使用的.bash_profile。
使用echo $SHELL 命令查看当前系统所使用的Shell类型
macOS Sonoma默认使用的zsh
如果你使用的是bash shell,在用户家目录下创建.bash_profile文件
如果你使用的是zsh shell,在用户家目录下创建.zshrc文件
macOS的用户家目录指的就是/Users/liuguanglei,其中liuguanglei表示用户名,每个系统的用户名可能不相同。
当启动终端后默认就是在用户的家目录下,可以使用pwd命令查看当前所在的目录
macOS Sonoma使用的Shell是zsh,因此在用户的家目录(/Users/liuguanglei)下使用touch .zshrc命令创建.zshrc配置文件,文件创建成功后使用 ls -al命令查看文件列表
在终端上输入vim .zshrc命令回车后打开用户家目录的.zshrc配置文件
此时vim处于命令模式,无法编辑文件内容
需求:在.zshrc文件中添加Java8的JAVA_HOME环境变量
将输入法切换到英文后再按i键进入编辑模式,只有进入编辑模式后才能修改文件内容
配置Oracle ARM64位架构macOS版Java8的JAVA_HOME环境变量
# 配置Oracle ARM64位架构macOS版Java8的JAVA_HOME环境变量
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
Oracle ARM64位架构macOS版Java8的JAVA_HOME环境变量配置完成后按esc键退出编辑模式回到命令模式
输入法在英文状态下输入shift+:切换到底行模式,然后再输入wq回车后保存并退出vim
成功保存并退出vim
在重新加载.zshrc配置文件之前,先使用echo $JAVA_HOME查看JAVA_HOME环境变量,发现JAVA_HOME环境变量的值为空
输入source .zshrc 命令并回车,重新加载.zshrc配置文件,让当前Shell环境中设置的JAVA_HOME环境变量立即生效
source
命令是在 Unix/Linux 系统中用于在当前 Shell 环境中执行指定脚本文件的命令。该命令通常用于重新加载修改过的 shell 配置文件,使更改立即生效,而不必注销并重新登录。
具体来说,
source
命令用于读取并执行指定的脚本文件,而不是启动一个新的进程来执行。这使得在当前 Shell 环境中设置的环境变量、别名以及其他配置更改能够立即生效。
需要注意的是每次执行source .zshrc都会将.zshrc配置文件中的环境变量加载到当前Shell环境中(执行一次,加载一次)
在终端上输入 echo $JAVA_HOME命令回车后,如果能够输出Java8安装目录的Home目录(/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home ),则表示JAVA_HOME环境变量配置成功
PATH环境变量的本质就是一系列路径,例如/bin,/usr/bin,/usr/local/bin等等,多个路径之间使用冒号(:)隔开,macOS下可以在终端上输入echo $PATH命令回车后查看系统PATH环境变量
PATH环境变量的作用就是在终端上执行命令时,系统会从当前路径和PATH环境变量配置的路径下查找命令对应的可执行程序,然后执行该程序。
例如date命令可以查看系统日期时间,而where date 可以查看到date命令对应可执行程序的路径,正因为/bin目录在PATH环境变量中,因此在终端输入date命令实际上执行的是/bin目录下的date程序
如果输入一个不存在的命令,那么shell会提示command not found**,**因为在PATH环境变量对应的路径下找不到一个名为datexxx的命令(程序)
需求:实现在macOS终端(例如内置终端和第三方终端iTerm)的任意路径下输入QQ就可以启动QQ
macOS系统中所有的软件都安装在访达的应用程序
选择QQ,右键 显示包内容
此时会打开Contents目录
而在Contents/MacOS下刚好有个QQ,它是一个Unix可执行文件
只要将它所在的路径(/Applications/QQ.app/Contents/MacOS)配置在PATH环境变量中即可实现在终端的任意路径下输入QQ就可以启动QQ
首先在终端上输入vim .zshrc命令回车后打开用户家目录的.zshrc配置文件
打开后可以看到Java8的JAVA_HOME环境变量的配置
此时vim处于命令模式无法编辑文件内容,需要将输入法切换到英文状态下后再按i键进入编辑模式
配置QQ的PATH环境变量
# 配置QQ的PATH环境变量
export PATH=$PATH:/Applications/QQ.app/Contents/MacOS
QQ的PATH环境变量配置添加完成后按esc键退出编辑模式回到命令模式
在英文状态下输入shift+:切换到底行模式,然后再输入wq并回车后保存并退出vim
成功保存并退出vim
在重新加载.zshrc配置文件之前,先使用echo $PATH查看系统PATH环境变量,发现系统PATH环境变量中没有包含QQ的PATH环境变量配置
输入source .zshrc 命令并回车,重新加载.zshrc配置文件,让当前Shell环境中设置的PATH环境变量立即生效
先在终端输入echo $PATH查看PATH环境变量,PATH环境变量必须包含QQ的PATH环境变量配置
然后在终端的任意路径输入QQ回车后看是否能够启动成功
如果能够启动QQ则表示QQ的PATH环境变量配置成功
在用户的家目录启动QQ
在系统根目录启动QQ
在终端上输入vim .zshrc命令回车后打开用户家目录的.zshrc配置文件
打开后可以看到Java8的JAVA_HOME环境变量的配置以及QQ的PATH环境变量配置
此时vim处于命令模式无法编辑文件内容,需要将输入法切换到英文状态下后再按i键进入编辑模式
然后配置Oracle ARM64位架构macOS版Java8的PATH环境变量
# 配置Oracle ARM64位架构macOS版Java8的PATH环境变量
export PATH=$PATH:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/bin
配置Oracle ARM64位架构macOS版Java8的PATH环境变量后按esc键退出编辑模式回到命令模式
输入法在英文状态下输入shift+:切换到底行模式,再输入wq并回车后保存并退出vim
成功保存并退出vim
在重新加载.zshrc配置文件之前,先使用echo $PATH查看系统PATH环境变量,发现系统PATH环境变量中没有包含Java8的PATH环境变量配置
输入source .zshrc 命令并回车,重新加载.zshrc配置文件,让当前Shell环境中设置的PATH环境变量立即生效
在终端上输入echo $PATH命令查看系统的PATH环境变量,如果PATH环境变量包含了Java8则表示配置成功
不过细心的同学会发现QQ的PATH环境变量被加载了两次,因为每执行一次source .zshrc命令,QQ的PATH环境变量被加载一次到当前Shell环境中
重新开启一个新的终端(command+n),在终端上输入echo $PATH 查看系统PATH环境变量时会发现QQ的PATH环境变量不再重复出现
同时也可以在终端的任意路径下使用Java提供的命令,例如javac命令和java命令通过-version选项可以查看版本信息
Q:为什么Java8要使用JAVA_HOME配置Path环境变量
A:切换JDK版本时只需要修改JAVA_HOME环境变量的值即可
在终端上输入vim .zshrc命令回车后打开家目录的.zshrc配置文件
打开以后看到Java8的JAVA_HOME环境变量的配置、QQ的PATH环境变量配置以及Java8的PATH环境变量配置
此时vim处于命令模式无法编辑文件内容,需要将输入法切换到英文状态后再按i键进入编辑模式
然后使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java8的PATH环境变量
# 使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java8的PATH环境变量
export PATH=$PATH:$JAVA_HOME/bin
使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java8的PATH环境变量后按esc键退出编辑模式回到命令模式
输入法在英文状态下输入shift+:切换到底行模式,再输入wq回车后保存并退出vim
成功保存并退出vim
在加载.zshrc配置文件之前先在终端上输入echo $PATH查看系统PATH环境变量,发现系统PATH环境变量中包含Java8的PATH环境变量配置
输入source .zshrc 命令并回车,重新加载.zshrc配置文件,让当前Shell环境中设置的PATH环境变量立即生效
在终端上输入echo $PATH命令查看系统的PATH环境变量,如果PATH环境变量包含了Java8则表示配置成功
细心的同学会发现在系统PATH环境变量中QQ的PATH环境变量和Java8的PATH环境变量都被加载了两次,因为每执行一次source .zshrc命令,它们都会被加载一次到当前Shell环境中
如果重新开启新的终端,在终端上输入echo $PATH则会看到QQ的PATH环境变量以及Java8的PATH环境变量只加载一次
同时也可以在终端的任意路径下使用Java提供的命令,例如javac和java通过-version选项可以查看版本信息
Q:什么时候需要卸载Java8
A:如果不再使用(例如公司项目全部使用Java17开发)Java8时就可以将其卸载
Oracle ARM64位架构macOS版Java8卸载需要删除Java8相关的目录以及文件,除此以外还要删除.zshrc环境变量配置文件,.zshrc环境变量配置文件配置了Java8的JAVA_HOME环境变量和PATH环境变量
Java8相关的目录和文件 | 说明 |
---|---|
/Library/Java/JavaVirtualMachines/jdk-1.8.jdk | Java8安装目录 |
/Library/Application Support/Oracle/Java | Java8支持目录 |
/Library/PreferencePanes/JavaControlPanel.prefPane | Java8控制面板首选项 |
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin | Java8 Applet插件 |
/Library/Java/JavaVirtualMachines/jdk-1.8.jdk,该目录是Java8安装目录
/Library/Application Support/Oracle/Java,该目录是Java8支持目录
/Library/PreferencePanes/JavaControlPanel.prefPane,该文件是Java8控制面板首选项
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin,该文件是Java8 Applet 插件
删除Java8相关的目录和文件需要使用管理员权限在终端上使用rm命令结合 -rf选项实现
删除Java8安装目录需要使用sudo rm -rf sudo rm -rf /Library/Java/JavaVirtualMachines/jdk-1.8.jdk命令来完成。首次执行sudo rm -rf前需要输入用户的开机密码
删除Java8应用程序支持目录需要在终端上执行sudo rm -rf /Library/Application\ Support/Oracle/Java命令
Java8 控制面板位于系统设置>Java
删除java8控制面板首选项需要在终端上执行 sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane 命令
删除完成后重新打开系统设置,系统设置的Java控制面板也会删除
删除Java8 Applet插件需要在终端上执行sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin命令
删除Java8环境变量配置文件.zshrc需要在终端上执行rm -f .zshrc命令
删除.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卸载成功
Java的下载地址是https://www.oracle.com/java/technologies/downloads/
目前(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 许可证有限免费授予的生产使用将需要付费。
目前Java17支持三个操作系统
Linux
macOS
Windows
大家在下载Java17的时候需要根据自己所使用CPU和操作系统的版本选择对应版本的Java17
macOS Sonoma可以点击左上角的苹果菜单
在弹出的面板中查看系统版本信息
目前本机使用的系统是macOS Sonoma 14.2.1,芯片是M1 Max
如果你的Mac电脑使用的Intel CPU,那么选择macOS版 x64 DMG Installer的jdk-17_macos-x64_bin.dmg
如果你的电脑使用的是Apple CPU,例如M1 Max,M1 Ultra,M2 Max,M2 Ultra,M3 Max等等,那么选择macOS版ARM64 DMG Installer的jdk-17_macos-aarch64_bin.dmg
由于本机使用的是Apple M1 Max CPU,因此选择macOS版ARM64 DMG Installer的jdk-17_macos-aarch64_bin.dmg
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
使用快捷键 Option+Command+L 可以打开下载内容,查看下载的速度以及所需的时间
当Java17下载完成后,点击在Finder中显示
默认在下载目录(/Users/liuguanglei/Downloads)下会看到Java17的安装包jdk-17_macos-aarch64_bin.dmg
点击继续
你要如何安装此软件?默认选择为这台电脑上的所有用户安装
选择一个目的宗卷:为这台电脑上的所有用户安装,点击继续
默认选择标准安装,点击安装即可
安装之前安装器会提示 "安装器"正在尝试安装新软件 使用触控ID或输入密码以允许此次操作
输入密码或者使用TouchID后安装器就会开始安装,安装过程几秒钟就可以完成
安装完成后可以点击访问JavaSE文档和关闭
关闭安装向导时还会提示你要将“JDK 17.0.9”安装器移到废纸篓吗?,建议点击保留,这样下次重装时不需要重新下载Java17
选中桌面的JDK 17.0.9,然后右键推出即可,当然也可以使用快捷键Command+E推出
推出成功
默认情况下Oracle ARM64位架构macOS版Java17安装目录是/Library/Java/JavaVirtualMachines/jdk-17.jdk
依次点击访达>前往>前往文件夹,快捷键是Shift+Command+G
输入路径/Library/Java/JavaVirtualMachines/jdk-17.jdk后回车
可以进入该目录
不过我们需要了解的是/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/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压缩文件
可以双击src.zip解压后查看,默认解压在下载目录
src目录存放的是Java源代码文件(.java结尾)
例如查看String.java
String.java源文件在src/java.base/java/lang目录下
然后选择src/java.base/java/lang/String.java
Visual Studio Code是一个跨平台的文本编辑器,需要自己下载、安装后才能使用
使用Visual Studio Code文本编辑器打开String.java
当Oracle ARM64位架构macOS版Java17安装完成后,你会发现没有配置PATH环境变量,也可以在终端的任意路径下使用javac和java,例如javac和java通过 -version选项查看Java编译器和解释器版本信息
没有配置JAVA_HOME环境变量,也可以在终端的maven bin目录**(/Users/liuguanglei/Documents/soft/java/apache-maven-3.9.6/bin)下使用maven命令 mvn --version查看Maven版本信息以及依赖的Java环境信息,其中./表示当前路径**
Q:这样是不是意味着不需要配置Java17的PATH环境变量和JAVA_HOME环境变量?
A:依然需要配置,因为后期我们会使用多个不同版本的JDK,例如在公司开发项目时使用Java8,而学习Java新特性时使用Java17或者Java21,那么就会有切换Java版本的需求,因此还需要配置Java17的PATH环境变量和JAVA_HOME环境变量。
JAVA_HOME指的就是Java17的Home目录(/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home)
配置JAVA_HOME环境变量的目的就是方便配置Java的PATH环境变量以及通过修改JAVA_HOME环境变量实现在终端上切换不同版本的Java,例如Java8和Java17的相互切换,Java17和Java21的相互切换。
首次启动后,取消勾选启动后显示欢迎页
勾选信任作者
允许Visual Studio Code 访问其他App的数据
允许Visual Studio Code访问文稿 文件夹中的文件
macOS Sonoma使用的Shell是zsh,因此在家目录(/Users/liuguanglei)下创建.zshrc配置文件
在文件资源管理器右键New File
设置文件名为.zshrc后回车
Visual Studio Code会自动打开.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
配置完成后按command+s保存文件
依次点击Visual Studio Code菜单栏的Terminal>New Terminal
就可以启动Visual Studio Code内置的终端
在终端上输入 echo $JAVA_HOME命令回车后如果能够输出Java17的Home目录(/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home),则表示Java17的JAVA_HOME环境变量配置成功
PATH环境变量的本质就是一系列路径,例如/bin,/usr/bin,/usr/local/bin等等,多个路径之间使用冒号(:)隔开,macOS下可以在终端上输入echo $PATH命令回车后查看系统PATH环境变量
PATH环境变量的作用就是在终端上执行命令时,系统会从当前路径和PATH环境变量配置的路径下查找命令对应的可执行程序,然后执行该程序。
例如date命令可以查看系统日期,而where date 可以查看到date命令对应的可执行程序路径,正因为/bin目录在PATH环境变量中,因此在终端输入date命令实际上执行的是/bin目录下的date程序
如果输入一个不存在的命令,那么shell会提示command not found,因为在PATH环境变量对应的路径下找不到一个名为datexxx的命令(程序)
需求:实现在macOS终端(例如内置终端和第三方终端iTerm)的任意路径下输入QQ就可以启动QQ
macOS系统中所有的软件都安装在访达的应用程序
选择QQ,右键 显示包内容
此时会打开Contents目录
而在Contents/MacOS下刚好有个QQ,它是一个Unix可执行文件
只要将它所在的路径(/Applications/QQ.app/Contents/MacOS)配置在PATH环境变量中即可实现在终端的任意路径下输入QQ回车后就可以启动QQ
.zshrc配置文件位于/Users/liuguanglei目录下
配置QQ的PATH环境变量
# 配置QQ的PATH环境变量
export PATH=$PATH:/Applications/QQ.app/Contents/MacOS
配置完成后按command+s保存
依次点击Visual Studio Code菜单栏的New Terminal>New Terminal
就可以启动Visual Studio Code内置的终端
在终端的任意路径下执行echo $PATH查看系统PATH环境变量,如果系统PATH环境变量中是否已经包含QQ的PATH环境变量配置则表示QQ的PATH环境变量配置成功
然后在终端的任意路径输入QQ回车后看是否能够启动成功
如果能够启动QQ则表示QQ的PATH环境变量配置成功
在用户的家目录启动QQ
在根目录启动QQ
打开后可以看到Java17的JAVA_HOME环境变量的配置以及QQ的PATH环境变量配置
配置Oracle ARM64位架构macOS版Java17的PATH环境变量
# 配置Oracle ARM64位架构macOS版Java17的PATH环境变量
export PATH=$PATH:/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home/bin
配置完成后按command+s保存
依次点击Visual Studio Code菜单栏的New Terminal>New Terminal
就可以启动Visual Studio Code内置的终端
首先在终端的任意路径下执行echo $PATH查看系统PATH环境变量,如果系统PATH环境变量中包含Java17的PATH环境变量则表示Java17的PATH环境变量配置成功
然后在终端的任意路径使用Java提供的javac和java结合-version选项查看Java编译器和解释器的版本信息应该为Java17
Q:为什么Java17要使用JAVA_HOME配置Path环境变量
A:切换JDK版本时只需要修改JAVA_HOME环境变量的值即可
.zshrc配置文件位于/Users/liuguanglei目录下
使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java17的PATH环境变量
# 使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java17的PATH环境变量
export PATH=$PATH:$JAVA_HOME/bin
配置完成后按command+s保存
依次点击Visual Studio Code菜单栏Terminal>New Terminal
就可以启动Visual Studio Code内置的终端
首先在终端的任意路径下执行echo $PATH查看系统PATH环境变量,如果PATH环境变量包含Java17的PATH环境变量配置则表示Java17的PATH环境变量配置成功
然后在终端的任意路径使用Java提供的javac和java命令结合-version选项查看Java编译器和解释器的版本信息应该是Java17
由于开发项目时使用Java8,但是学习JDK新特性时安装了Java17,因此此时机器上同时存在两个不同版本的JDK,分别是Oracle ARM64位架构macOS版的Java8和Java17。
那么如何在这两个版本中间切换?
首先需要知道当前使用的Java版本
在终端的任意路径通过javac -version和java -version得知目前使用的是Java17
Q:为什么是Java17?
A:因为在.zshrc文件中JAVA_HOME环境变量的值是Java17的Home目录(/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home),而Java的PATH环境变量引用了JAVA_HOME环境变量,因此当前Java版本是Java17
那么想要实现Java8和Java17相互切换,只需要修改JAVA_HOME环境变量的值即可
想要从Java17切换到Java8,只需要将JAVA_HOME环境变量的值修改成Java8的Home路径(/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home)
将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
# 配置QQ的PATH环境变量
export PATH=$PATH:/Applications/QQ.app/Contents/MacOS
# 使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java8的PATH环境变量
export PATH=$PATH:$JAVA_HOME/bin
配置完成后按command+s保存
依次点击Visual Studio Code菜单栏的New Terminal>New Terminal
就可以启动Visual Studio Code内置的终端
首先在终端的任意路径输入echo $JAVA_HOME,查看JAVA_HOME环境变量的变量值是否为Java8的Home目录
然后在终端的任意路径使用Java提供的javac和java命令结合-version选项查看Java编译器和解释器的版本信息是否为Java8,如果是Java8则表示当前Java版本成功从Java17切换到Java8
从Java8再次切换到Java17,只需要将JAVA_HOME环境变量的变量值改成Java17的Home目录(/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home)
# 配置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
配置完成后按command+s保存
依次点击Visual Studio Code菜单栏的New Terminal>New Terminal
就可以启动Visual Studio Code内置的终端
首先在终端的任意路径输入echo $JAVA_HOME,查看JAVA_HOME环境变量的变量值是否为Java17的Home目录
然后在终端的任意路径使用Java提供的javac和java命令结合-version选项查看Java编译器和解释器的版本信息是否为Java17,如果是Java17则表示当前Java版本成功从Java8切换到Java17
Q:什么时候需要卸载Java17
A:如果不再使用(例如公司项目全部使用Java21开发)Java17时就可以将其卸载
Oracle ARM64位架构macOS版Java17卸载需要删除Java17安装目录
除此以外还要**.zshrc删除环境变量配置文件**,.zshrc环境变量配置文件配置了Java21的PATH环境变量和JAVA_HOME环境变量。
Oracle ARM64位架构macOS版Java17的安装目录是/Library/Java/JavaVirtualMachines/jdk-17.jdk
删除Java17的安装目录需要使用sudo rm -rf /Library/Java/JavaVirtualMachines/jdk-17.jdk命令来完成,首次执行sudo rm -rf前需要输入用户的开机密码
删除成功后JavaVirtualMachines目录下看不到Java17的安装目录
使用rm .zshrc命令 删除.zshrc配置文件
删除后使用Visual Studio Code打开/Users/liuguanglei目录后,看到不.zshrc文件
ls -al命令中也不会看到.zshrc文件
删除Java17安装目录以及.zshrc配置文件后,在终端的任意路径使用javac -version和java -version查看Java编译器和Java解释器版本信息,如果提示The operation couldn’t be completed. Unable to locate a Java Runtime. 表示Java17卸载成功
Java的下载地址是https://www.oracle.com/java/technologies/downloads/
目前(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支持三个操作系统
Linux
macOS
Windows
大家在下载Java21的时候需要根据自己所使用CPU和操作系统的版本选择对应版本的Java21
macOS Sonoma可以点击左上角的苹果菜单
在弹出的面板中查看系统版本信息
目前本机使用的系统是macOS Sonoma 14.2.1,芯片是M1 Max
如果你的Mac电脑使用的Intel CPU,那么选择macOS版 x64 DMG Installer的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
由于本机使用的是Apple M1 Max CPU,因此选择macOS版ARM64 DMG Installer的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
使用快捷键 Option+Command+L 可以打开下载内容,查看下载的速度以及所需的时间
当Java21下载完成后,点击在Finder中显示
默认在下载目录(/Users/liuguanglei/Downloads)下会看到Java21的安装包jdk-21_macos-aarch64_bin.dmg
点击继续
你要如何安装此软件?默认选择为这台电脑上的所有用户安装
选择一个目的宗卷:为这台电脑上的所有用户安装,点击继续
默认选择标准安装,点击安装即可
安装之前安装器会提示 "安装器"正在尝试安装新软件 使用触控ID或输入密码以允许此次操作
输入密码或者使用TouchID后安装器就会开始安装,安装过程几秒钟就可以完成
安装完成后可以点击访问JavaSE文档和关闭
关闭安装向导时还会提示你要将“JDK 21.0.1”安装器移到废纸篓吗?,建议点击保留,这样下次重装时不需要重新下载Java21
选中桌面的JDK 21.0.1,然后右键推出即可,当然也可以使用快捷键Command+E推出
推出成功
默认情况下Oracle ARM64位架构macOS版Java21安装目录是/Library/Java/JavaVirtualMachines/jdk-21.jdk
依次点击访达>前往>前往文件夹,快捷键是Shift+Command+G
输入路径/Library/Java/JavaVirtualMachines/jdk-21.jdk后回车
不过我们需要了解的是/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/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压缩文件
可以双击src.zip解压后查看,默认解压在下载目录
src目录存放的是Java源代码文件(.java结尾)
例如查看String.java
String.java源文件在src/java.base/java/lang目录下
然后选择src/java.base/java/lang/String.java
Visual Studio Code是一个跨平台的文本编辑器,需要自己下载、安装后才能使用
使用Visual Studio Code文本编辑器打开String.java
当Oracle ARM64位架构macOS版Java21安装完成后,你会发现没有配置PATH环境变量,也可以在终端的任意路径下使用javac和java,例如javac和java通过 -version选项查看Java编译器和解释器的版本信息
没有配置JAVA_HOME环境变量,也可以在终端的maven bin目录(/Users/liuguanglei/Documents/soft/java/apache-maven-3.9.6/bin)下使用maven命令 mvn --version查看Maven版本信息以及依赖的Java环境信息,其中./表示当前路径
Q:这样是不是意味着不需要配置Java21的PATH环境变量和JAVA_HOME环境变量?
A:依然需要配置,因为后期我们会使用多个不同版本的JDK,例如在公司开发项目时使用Java8,而学习Java新特性时使用Java17或者Java21,那么就会有切换Java版本的需求,因此还需要配置Java21的PATH环境变量和JAVA_HOME环境变量。
JAVA_HOME指的就是Java21的Home目录(/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home)
配置JAVA_HOME环境变量的目的就是方便配置Java的PATH环境变量以及通过修改JAVA_HOME环境变量实现在终端上切换不同版本的Java,例如Java8和Java17的相互切换,Java17和Java21的相互切换。
首次启动后,取消勾选启动后显示欢迎页
勾选信任作者
允许Visual Studio Code 访问其他App的数据
允许Visual Studio Code访问文稿 文件夹中的文件
macOS Sonoma使用的Shell是zsh,因此在家目录(/Users/liuguanglei)下创建.zshrc配置文件
在文件资源管理器右键New File
设置文件名为.zshrc后回车
Visual Studio Code会自动打开.zshrc文件
在.zshrc文件中配置Oracle ARM64位架构macOS版Java21的JAVA_HOME环境变量
# 配置Oracle ARM64位架构macOS版Java21的JAVA_HOME环境变量
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home
配置完成后按command+s保存文件
依次点击Visual Studio Code菜单栏的Terminal>New Terminal
就可以启动Visual Studio Code内置的终端
在终端上输入 echo $JAVA_HOME命令回车后如果能够输出Java21的Home目录(/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home ),则表示Java21的JAVA_HOME环境变量配置成功
PATH环境变量的本质就是一系列路径,例如/bin,/usr/bin,/usr/local/bin等等,多个路径之间使用冒号(:)隔开,macOS下可以在终端上使用echo $PATH查看系统PATH环境变量
PATH环境变量的作用就是在终端上执行命令时,系统会从当前路径和PATH环境变量配置的路径下查找命令对应的可执行程序,然后执行该程序。
例如date命令可以查看系统日期,而where date 可以查看到date命令对应的可执行程序路径,正因为/bin目录在PATH环境变量中,因此在终端输入date命令实际上执行的是/bin目录下的date程序
如果输入一个不存在的命令,那么shell会提示command not found,因为在PATH环境变量对应的路径下找不到一个名为datexxx的命令(程序)
需求:实现在macOS终端(例如内置终端和第三方终端iTerm)的任意路径下输入QQ就可以启动QQ
macOS系统中所有的软件都安装在访达的应用程序
选择QQ,右键 显示包内容
此时会打开Contents目录
而在Contents/MacOS下刚好有个QQ,它是一个Unix可执行文件
只要将它所在的路径(/Applications/QQ.app/Contents/MacOS)配置在PATH环境变量中即可实现在终端的任意路径下输入QQ回车后就可以启动QQ
.zshrc配置文件位于/Users/liuguanglei目录下
配置QQ的PATH环境变量
# 配置QQ的PATH环境变量
export PATH=$PATH:/Applications/QQ.app/Contents/MacOS
配置完成后按Command+s保存
依次点击Visual Studio Code菜单栏的New Terminal>New Terminal
就可以启动Visual Studio Code内置的终端
在终端的任意路径下执行echo $PATH查看系统PATH环境变量,如果系统PATH环境变量中是否已经包含QQ的PATH环境变量配置则表示QQ的PATH环境变量配置成功
然后在终端的任意路径输入QQ回车后看是否能够启动成功
如果能够启动QQ则表示QQ的PATH环境变量配置成功
在用户的家目录下启动QQ
在根目录下启动QQ
打开后可以看到Java21的JAVA_HOME环境变量的配置以及QQ的PATH环境变量配置
配置Oracle ARM64位架构macOS版Java21的PATH环境变量
# 配置Oracle ARM64位架构macOS版Java21的PATH环境变量
export PATH=$PATH:/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home/bin
配置完成后按command+s保存
依次点击Visual Studio Code菜单栏的New Terminal>New Terminal
就可以启动Visual Studio Code内置的终端
首先在终端的任意路径下执行echo $PATH查看系统PATH环境变量,如果系统PATH环境变量中包含Java21的PATH环境变量则表示Java21的PATH环境变量配置成功
然后在终端的任意路径使用Java提供的javac和java结合-version选项查看Java编译器和解释器的版本信息应该为Java21
Q:为什么Java21要使用JAVA_HOME配置Path环境变量
A:切换JDK版本时只需要修改JAVA_HOME环境变量的值即可
.zshrc配置文件位于/Users/liuguanglei目录下
使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java21的PATH环境变量
# 使用JAVA_HOME环境变量配置Oracle ARM64位架构macOS版Java21的PATH环境变量
export PATH=$PATH:$JAVA_HOME/bin
配置完成后按command+s保存文件
依次点击Visual Studio Code菜单栏Terminal>New Terminal
就可以启动Visual Studio Code内置的终端
首先在终端的任意路径下执行echo $PATH查看系统PATH环境变量,如果PATH环境变量包含Java21的PATH环境变量配置则表示Java17的PATH环境变量配置成功
然后在终端的任意路径使用Java提供的javac和java命令结合-version选项查看Java编译器和解释器的版本信息应该是Java21
由于开发项目时使用Java17,但是学习JDK新特性时安装了Java21,因此此时机器上同时存在两个不同版本的JDK,分别是Oracle ARM64位架构macOS版本的Java17和Java21。
那么如何在这两个版本中间切换?
首先需要知道当前使用的Java版本
在终端的任意路径通过javac -version和java -version得知目前使用的是Java21
Q:为什么是Java21?
A:因为在.zshrc配置文件中JAVA_HOME环境变量的值是Java21的Home目录(/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home),而Java的PATH环境变量引用了JAVA_HOME环境变量
那么想要实现Java17和Java21相互切换,只需要修改JAVA_HOME环境变量的值即可
想要从Java21切换到Java17,只需要将JAVA_HOME环境变量的值修改成Java17的Home路径(/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home)
配置Oracle ARM64位架构macOS版Java17的PATH环境变量
# 配置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
配置完成后按command+s保存
依次点击Visual Studio Code菜单栏的New Terminal>New Terminal
就可以启动Visual Studio Code内置的终端
首先在终端的任意路径输入echo $JAVA_HOME,查看JAVA_HOME环境变量的变量值是否为Java17的Home目录
然后在终端的任意路径使用Java提供的javac和java命令结合-version选项查看Java编译器和解释器的版本信息是否为Java17,如果是Java17则表示当前Java版本成功从Java21切换到Java17
从Java17再次切换到Java21,只需要将JAVA_HOME环境变量的变量值改成Java21的Home目录(/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home )
# 配置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
配置完成后按command+s保存
依次点击Visual Studio Code菜单栏的New Terminal>New Terminal
就可以启动Visual Studio Code内置的终端
首先在终端的任意路径输入echo $JAVA_HOME,查看JAVA_HOME环境变量的变量值是否为Java21的Home目录
然后在终端的任意路径使用Java提供的javac和java命令结合-version选项查看Java编译器和解释器的版本信息是否为Java21,如果是Java21则表示当前Java版本成功从Java17切换到Java21
Q:什么时候需要卸载Java21
A:如果不再使用(例如公司未来的项目全部使用Java5开发)Java21时就可以将其卸载
Oracle ARM64位架构macOS版Java21卸载需要删除Java21安装目录
除此以外还要删除.zshrc环境变量配置文件,.zshrc环境变量配置文件配置了Java21的PATH环境变量和JAVA_HOME环境变量。
Oracle ARM64位架构macOS版Java21的安装目录是/Library/Java/JavaVirtualMachines/jdk-21.jdk
删除Java21的安装目录需要使用sudo rm -rf /Library/Java/JavaVirtualMachines/jdk-21.jdk命令来完成,首次执行sudo rm -rf前需要输入用户的开机密码
删除成功后JavaVirtualMachines目录下看不到Java21的安装目录
使用rm .zshrc命令 删除.zshrc配置文件
删除后使用Visual Studio Code打开/Users/liuguanglei目录后,看到不.zshrc配置文件
ls -al命令中也不会看到.zshrc文件
删除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卸载成功
编写**:使用Java开发工具**编写源文件,源文件以.java结尾,用于存储Java代码
编译**:使用javac**把源文件编译生成字节码文件,字节码文件以.class结尾,字节码文件名和类名相同,字节码文件的数量和源文件中class的数量相同,编译的格式是javac 源文件名.java,例如javac HelloWorld.java
运行:使用java解释运行编译生成后的字节码文件,运行的格式是java 字节码文件名(不需要.class后缀),例如java HelloWorld
Q:如何看待Java是一门半编译半解释型的语言?
A:半编译半解释指的是JVM在解释执行既有解释器解释执行,又有JIT编译器编译执行
工欲善其事,必先利其器
虽然JDK提供了开发Java程序时所用到的一些工具,例如javac,java,jdb,jconsole等等
但是JDK并没有提供编写Java代码的开发工具,因此想要在编写Java程序之前,还需要了解Java开发工具, 我这里把Java开发工具分成两类,分别是文本编辑器和IDE
常用的文本编辑器有记事本、Visual Studio Code、Sublime Text
Visual Studio Code和Sublime Text都是高级的文本编辑器,而且是跨平台的(Windows,macOS,Linux),建议初学Java的朋友可以使用它们来开发Java程序,因为相比IDE而言更加轻量级,对初学者更加容易上手**。**
常用的Java IDE(Integrated Development Environment) 有IntelliJ IDEA和Eclipse
IDEA和Eclipse都是IDE,I****DE集成项目开发中常用的功能,包括编辑器、编译工具、反编译工具、测试工具、性能分析工具、部署工具等等,因此可以大大提高开发效率。
目前大部分互联网公司基本普遍都会使用IntelliJ IDEA开发Java项目,因此我们后期会全程使用IntelliJ IDEA。
在学习任何一门编程语言时编写的第一个程序通常都称为HelloWorld
如果你能够编写并且运行HelloWorld,那么意味着已经迈入编程的大门
本次我们使用比较原始的开发方式:也就是基于文本编辑+macOS终端(iTerm)+JDK提供的开发工具(javac和java)来开发人生的第一个Java程序,这种方式虽然和使用IDE开发相比效率比较低,但是能够让初学者更加直观地理解Java程序的开发和运行流程****。
在开发第一个Java程序之前先要检查Java开发环境:即安装、配置JDK
目前本机已经安装四个不同版本的Java,分别是Java8、Java11、Java17、Java21,它们都是官方长期支持版
那么到底是使用哪个版本,是由PATH环境变量决定的
从.zshrc文件中配置得知目前使用的Java版本为Java21
也可以在终端上使用Java提供的javac、java命令,这两个命令提供了-version选项查看版本信息
javac -version查看Java编译器的版本信息
java -version查看Java解释器的版本信息
在/Users/Documents目录下,触控板右键新建文件夹
将文件夹的名称由默认的未命名文件夹改为code,用于存放Java源文件
code文件夹重命名成功
首先在code目录下右键 新建文件>Text
不过macOS Sonoma右键没有新建文件菜单,需要使用第三方软件实现,例如右键助手专业版
在安装完右键助手专业版
需要启用右键菜单
右键助手安装、配置完成后,就可以在code目录下选择右键新建文件>Text
授权/Users/liuguanglei目录
这样就会创建一个文本文件,文件名是未命名.txt
将默认的未命名.txt重命名成HelloWorld.java
访达还会提示 **你确定要将扩展名“.txt”更改为“.java”吗?,**点击使用.java
这样HelloWorld.java源文件就创建成功
选中HelloWorld.java,右键 打开方式>文本编辑.app打开
文本编辑打开HelloWorld.java源文件,打开后就可以开始编写Java代码
在HelloWorld.java源文件中编写HelloWorld
public class HelloWorld{
public static void main(String[]args){
System.out.println("Hello World");
}
}
在使用文本编辑编写Java代码时
如果觉得代码字体太小不合适,可以使用Command +和Command - 临时调整字体大小
代码需要进行适当的换行、缩进
代码中遇到了符号,比如说圆括号(()),方括号([]),大括号({})都需要成对编写,然后再往里面编写内容,而且这些符号都是英文的,因为Java是美国人发明的,不支持中文。
编写完成后按command+s保存源文件
开启macOS终端(内置终端或者iTerm),因为javac和java只能在终端上使用
切换到HelloWorld.java源文件所在的目录(/Users/liuguanglei/Documents/code)
编译源文件HelloWorld.java,如果没有语法错误编译成功之后会生成HelloWorld.class文件
在终端上输入java HelloWorld后回车解释执行HelloWorld.class字节码文件
如果没有任何运行时错误就会看到Windows终端打印输出HelloWorld并换行
public class HelloWorld{
public static void main(String[]args){
System.out.println("Hello World");
}
}
public是一个关键字,表示权限最大的访问权限修饰符,称为公共的,后期在学习面向对象的时候还会学习private,默认的,protected,这里只需要记住如果类名使用public 修饰,那么public修饰的类名必须和文件名保持一致。
class是一个关键字,用于定义类,例如class Welcome{} 表示定义一个类,类名是Welcome,{}表示类的开始范围和结束范围,Java是面向对象的编程语言,类是Java程序的基本单元。
在一个源文件中可以定义多个class,但是只能有一个类被public修饰。编译器在编译后会生成和源文件中class数量一致的字节码文件,字节码文件名和类名相同。
public class MyWorld{
public static void main(String[]args){
System.out.println("This is my world");
}
}
class Chinese{
}
class American{
}
编译和运行MyWorld.java程序后会生成3个字节码文件,分别是MyWorld.class、Chinese.class和American.class,因为MyWorld.java中定义了3个类
public static void main(String[] args){} 格式是固定的,表示main方法,main方法是Java程序的入口,Java程序是从main方法的第一行开始执行的,该方法被JVM调用,如果你的Java程序想要独立运行,那么必须要固定格式的main方法
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("到架构师");
}
}
编译和运行PrintData.java程序
需要注意的是最后一句打印输出语句末尾添加了%
这是因为如果最后输出不是换行,zsh 就会在最后帮你加一个%,然后强制换行。
这样的好处是下一个命令总是从头开始的,不容易混乱。
程序中**System.out.println()**语句打印的内容包含了中文,但是macOS系统无论是文件还是终端默认都是UTF-8编码,不管你使用的是Java8、Java17还是Java21,都不会有中文乱码的问题存在。
在搭建Windows版和macOS版Java开发环境时都需要根据自己所使用操作系统的版本来选择安装、配置对应版本的JDK
而JDK包含JRE和开发工具,JRE包含JVM和核心类库,Oracle公司需要根据不同的操作系统开发不同版本的JDK
Java跨平台指的是在Windows系统上开发的Java程序编译之后的字节码文件可以在任意安装了JDK的其他操作系统上运行。
Java跨平台的原理就是Java程序不是直接在操作系统上运行的,而是在JVM(Java Virtual Machine)上运行。JVM屏蔽底层操作系统差异性,但是JVM本身不是跨平台。
HelloWorld程序演示Java跨平台
检查Windows Java环境
检查macOS Java环境
public class HelloWorld{
public static void main(String[]args){
System.out.println("跟光磊学Java从小白到架构师");
}
}
Java21新增预览版的特性:未命名类和实例main方法
此特性的好处就是可以让初学者在不需要了解程序结构和修饰符的前提下,更快更容易地写出第一个HelloWorld程序
Java21之前的HelloWorld
public class HelloWorld{
public static void main(String[]args){
System.out.println("跟光磊学Java从小白到架构师");
}
}
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
在使用Java21新特性未命名类和实例main方法编写完源文件后,也可以直接使用java --enable-preview --souce 21 源文件.java
,例如java --enable-preview --souce 21 HelloWorld.java
来编译运行HelloWorld。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。