免费Java开发环境搭建:JDK安装与第一个程序

AI资讯5天前发布 jdkjadmin
0 00
免费Java开发环境搭建:JDK安装与第一个程序

免费Java开发环境搭建:JDK安装与第一个程序

想开始学习 Java,或需要在本机编译、运行一个 Java 项目,第一步是安装 JDK。JDK 是 Java Development Kit(Java 开发工具包),其中包含运行 Java 程序所需的组件,也包含编译器等开发工具。安装完成后,我们可以在终端里编写一个简单的程序,编译并运行它,确认环境确实可用。

本文以命令行工具为主,分别说明 Windows、macOS 和 Linux 上的安装与检查方法。整个过程不需要购买 IDE,也不需要配置复杂的构建系统。文中的示例面向入门学习;如果你在搭建企业项目、维护旧系统或配置生产环境,还应根据项目要求选择 Java 版本,并遵循团队的版本管理和安全规范。

一、先弄清楚:JDK、JVM 和 JRE 分别是什么

Java 程序通常先由编译器转换为字节码,再由 Java 虚拟机(JVM)执行。JDK 包含编译器 javac、运行工具 java 以及其他开发工具和运行组件。对刚开始学习的人来说,安装 JDK 就足够了。

JRE(Java Runtime Environment)是历史上常用的“运行时环境”概念,通常指运行 Java 程序所需的运行组件,不包含完整的开发工具。不同发行版和版本对 JRE 的提供方式并不相同;不少现代 JDK 下载页面不再单独提供通用 JRE 安装包。初学者不必寻找“JRE 下载”,直接安装合适的 JDK 即可。

安装 JDK 并不等于安装了所有 Java 开发工具。比如 IntelliJ IDEA、Eclipse 等 IDE 是单独的软件;Maven、Gradle 是构建工具;它们可以之后按需安装。最小验证只需一个文本编辑器和终端。

二、免费 JDK 怎么选

Java 有多种兼容的 JDK 发行版。它们通常基于 OpenJDK 项目,针对不同操作系统提供安装包,可能在更新周期、支持政策、附加工具和服务方面有所不同。常见选择包括 Eclipse Temurin、Amazon Corretto、Microsoft Build of OpenJDK、Oracle JDK 等。初学者可以优先选择来源清楚、仍在维护且提供自己操作系统安装包的发行版。

“免费”需要结合具体发行版、版本、用途和许可条款理解,不能把某个发行版的政策套用到所有 JDK 上。例如,Eclipse Temurin 使用 GPLv2 加 Classpath Exception 许可;Oracle JDK 的许可条款则可能随版本和用途变化。其他发行版也有各自的许可与支持政策。下载前应查看官方许可、使用条款和支持周期;公司部署、再分发或提供商业服务时尤其不能只依据“可以免费下载”判断是否符合要求。免费使用和长期商业支持也不是一回事。

选择版本时,先看项目或课程是否指定版本。没有指定时,可以选择仍处于维护周期的长期支持(LTS)版本,例如 Java 21。较新的版本可能包含更新的语言特性,但项目依赖、课程说明和部署环境未必兼容。不要仅因版本号更大,就假定它适合所有旧项目。Java 的版本号与支持政策会随时间变化,应以发行版和项目的官方说明为准。

下载时从发行版官方网站进入,按操作系统、处理器架构和安装包类型选择文件。常见架构名称包括 x64(通常指 Intel/AMD 64 位)和 AArch64/ARM64(ARM 64 位)。Apple 芯片 Mac 通常选择 ARM64 版本,Intel Mac 选择 x64;Windows 电脑也应确认处理器架构。不要从不明网盘或来历不清的软件下载站获取安装包。

三、安装之前的准备

先确认系统信息,并查看项目是否有版本要求。若电脑上已经装过 Java,可以先打开终端检查,避免重复安装后误用旧版本。

java -version
javac -version

在 Windows 上,可打开“终端”或“命令提示符”;在 macOS 上打开“终端”;在 Linux 上使用常见终端程序。若提示找不到命令,并不必然说明电脑从未安装过 JDK,也可能是 JDK 未加入当前终端的搜索路径,或终端尚未刷新环境变量。

安装 JDK 一般不要求关闭杀毒软件,也不需要随意以管理员身份运行不可信安装程序。Windows 安装器若需要写入系统级目录,可能会请求管理员权限;是否授权应结合安装包来源和操作范围判断。Linux 用户如果有合适的包管理器权限,优先按发行版文档安装;不必为了练习 Java 而用高权限执行不明脚本。

四、Windows:安装与环境变量

1. 使用安装器

从选定发行版的官方网站下载与系统架构匹配的 Windows 安装包。若提供 MSI 安装器,可以按提示完成安装,并记录安装目录,例如:

C:\Program Files\Eclipse Adoptium\jdk-21.0.x.x-hotspot

上面的目录只是示例,具体路径和版本号可能不同。安装器有时提供配置 PATH 或设置 JAVA_HOME 的选项。可以使用安装器提供的选项,也可以稍后手动配置;不要照抄示例路径,必须使用本机实际安装目录。

2. 设置 JAVA_HOME 和 PATH

JAVA_HOME 通常用来告诉开发工具 JDK 安装在哪里。它不是 Java 运行程序必需的唯一配置方式,但许多构建工具和 IDE 会读取它。Windows 搜索“编辑系统环境变量”,打开“环境变量”,可以在用户变量中新增:

  • 变量名:JAVA_HOME
  • 变量值:本机 JDK 的安装目录,例如 C:\Program Files\Eclipse Adoptium\jdk-21...

变量值应指向 JDK 根目录,不要把 bin 也放进 JAVA_HOME。然后编辑 Path,新增一项:

%JAVA_HOME%\bin

如果系统中有多套 Java,PATH 中靠前的目录通常会优先被命令行找到。可以在命令提示符中检查实际位置:

where java
where javac

修改环境变量后,已经打开的终端通常不会自动读取新设置。请关闭并重新打开终端,再执行版本检查。若 where java 显示了旧 JDK 路径,检查 PATH 顺序,并确认是否还安装了其他 Java 工具。

3. Windows 验证

java -version
javac -version
echo %JAVA_HOME%

java -version 与 javac -version 应显示所安装版本。两者版本差异较大时,通常是运行器和编译器来自不同安装目录,或 PATH 指向了不同 JDK。进一步用 where java 和 where javac 定位即可。

五、macOS:安装与验证

从发行版官方网站下载适合 Mac 处理器的安装包。常见的安装包为 .pkg,也可能提供压缩归档。安装包会把 JDK 放入系统约定的目录,具体路径取决于发行版。安装完毕后,关闭并重新打开终端,执行:

java -version
javac -version
/usr/libexec/java_home -V

/usr/libexec/java_home -V 可列出系统识别到的 JDK 安装。如果系统安装了多个版本,java 和 javac 最终使用哪一个,还可能受 PATH、shell 配置以及安装方式影响。

如果某个开发工具需要 JAVA_HOME,可以在 zsh 配置中设置。先用 /usr/libexec/java_home -v 21 验证系统能否找到对应版本,再将下列内容加入 ~/.zshrc。这里的版本号应替换为实际需要的版本:

export JAVA_HOME=$(/usr/libexec/java_home -v 21)
export PATH="$JAVA_HOME/bin:$PATH"

保存后,在终端执行 source ~/.zshrc,或重新打开终端。若使用 Bash 等其他 shell,配置文件可能不是 ~/.zshrc,应写入当前 shell 实际读取的启动文件。修改环境变量只影响相应 shell 会话及其启动的程序,并不会自动替代项目要求的 JDK 版本。

六、Linux:安装方式与边界

Linux 的安装方式取决于发行版、软件仓库和所需 JDK 发行版。对于入门和日常开发,通常有两种做法:使用系统包管理器安装发行版提供的 OpenJDK,或从 JDK 发行版官方网站下载压缩包并按其文档配置。包管理器有助于管理更新,但仓库提供的版本可能不是项目需要的版本;手动安装更灵活,但需要自行管理安装目录和升级。

在 Debian 或 Ubuntu 等系统上,可以先查询仓库中可用的包,再安装合适版本。包名会随系统版本和仓库而变化,以下命令仅作常见示例:

sudo apt update
apt search openjdk
sudo apt install openjdk-21-jdk

如果仓库没有该版本,安装命令会失败;不要为了让示例命令成功而随意添加来源不明的软件仓库。应查阅所用 Linux 发行版的官方文档,或使用可信 JDK 发行版提供的安装说明。Fedora、Arch Linux 等系统的包管理器和包名不同,不应直接照搬 apt 命令。

安装后检查:

java -version
javac -version
which java
which javac
echo "$JAVA_HOME"

which 可用于查看 shell 当前找到的命令位置,但在某些 shell 中,命令别名或函数会影响结果;需要更完整地检查时,可使用该 shell 提供的命令定位工具。若使用包管理器安装,JAVA_HOME 未必自动设置;先确认工具确实存在,再按具体发行版的说明配置。Linux 上设置用户级环境变量时,常见位置包括 shell 的启动配置文件,但 Bash 和 Zsh 使用的文件可能不同。

七、写出并运行第一个 Java 程序

现在创建一个名为 HelloWorld.java 的文本文件。文件名大小写要与公共类名 HelloWorld 一致。将下面内容原样保存:

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

这个程序包含一个类和入口方法。main 方法是 Java 启动器常用的程序入口形式;参数 String[] args 用来接收命令行参数,本例暂时没有使用。System.out.println 会把一行文字写到标准输出,也就是通常看到的终端窗口。

打开终端,进入文件所在目录。假设文件放在 Windows 的 C:\java-demo,命令提示符中可执行:

cd C:\java-demo
javac HelloWorld.java
java HelloWorld

macOS 和 Linux 的示例目录可以是 ~/java-demo:

cd ~/java-demo
javac HelloWorld.java
java HelloWorld

编译命令 javac HelloWorld.java 成功后,通常会在当前目录生成 HelloWorld.class。这个文件保存编译后的字节码。运行时输入 java HelloWorld,不要添加 .class 后缀,也不要在这里输入源文件名。预期输出为:

Hello, Java!

上述步骤要求当前目录中存在源码文件,且命令行能够找到 javac 和 java。如果从其他目录运行,或者类带有包名,运行方式会有所不同。示例未使用第三方库,不需要 Maven 或 Gradle。

八、一个带命令行参数的可运行示例

下面的小程序接收一个名字参数;不传参数时使用默认名称。它不读取文件、不访问网络,也不会修改系统设置:

public class Greeting {
    public static void main(String[] args) {
        if (args.length == 0) {
            System.out.println("你好,Java 学习者!");
            return;
        }

        System.out.println("你好," + args[0] + "!");
    }
}

保存为 Greeting.java,在文件所在目录执行:

javac Greeting.java
java Greeting
java Greeting Ada

第二条运行命令使用默认名称;第三条把 Ada 作为第一个命令行参数。包含空格的参数通常需要用引号括起来,例如:

java Greeting "Lin Q"

命令行参数数量没有适用于所有 Java 程序的固定上限。实际可用范围受到操作系统命令行长度限制、启动方式和程序自身资源限制影响;参数数组也会占用内存。不要把很长的数据块塞进命令行参数,宜使用文件、标准输入或合适的应用接口。不同操作系统对命令行长度的限制和处理方式并不完全相同。

九、常见错误及排查顺序

1. 提示“不是内部或外部命令”或“command not found”

可能是 JDK 未安装、PATH 未配置、终端没有重开,或者 JAVA_HOME 和 PATH 指向了错误位置。先确认安装目录,再检查 java 与 javac 的查找结果。只设置 JAVA_HOME 不一定能让终端找到命令;通常还要把对应的 bin 目录加入 PATH。

2. 能运行 java,却找不到 javac

这通常说明系统只找到运行器,或 PATH 指向了不带开发工具的组件,也可能是找到的并非预期 JDK。确认安装的是 JDK,并检查 javac 的实际路径。不同发行版对运行时组件的打包方式不同,不能只靠“有 java 命令”推断编译环境完整。

3. 提示找不到主类

检查是否在正确目录执行、类名大小写是否一致,以及运行命令是否误加了后缀。对于本例,正确命令是 java HelloWorld,不是 java HelloWorld.class。如果源码使用了 package 声明,类文件应按包目录组织,运行时还要从正确的类路径根目录启动。

4. 提示类名与文件名不一致

Java 的公共顶层类通常要求文件名与类名完全一致,包括大小写。类名是 HelloWorld 时,文件应命名为 HelloWorld.java。在对大小写敏感的文件系统上,helloworld.java 与 HelloWorld.java 是不同文件。

5. 安装后版本仍然不对

电脑可能同时装有多个 JDK,PATH 中较早出现的目录被优先使用。Windows 用 where java、where javac 查看候选路径;macOS 和 Linux 可用相应的命令定位工具。调整路径后重开终端,再分别运行 java -version 和 javac -version。IDE 或构建工具还可能单独配置自己的 JDK,因此终端版本正确并不保证所有开发工具都使用同一个版本。

6. 显示编码或乱码问题

上面的示例包含中文输出。在现代系统中通常可以正常显示,但终端、文件编码和系统区域设置不一致时仍可能出现乱码。确认源码以 UTF-8 保存,并使用支持相应字符的终端。若编译器报告编码问题,可按实际文件编码显式指定,例如:

javac -encoding UTF-8 Greeting.java

-encoding 指定的是读取源文件时使用的字符编码,不会自动更改终端的显示编码。排查乱码时要分别检查源文件、编译参数和终端显示设置。

十、学习和开发时的版本管理建议

安装 JDK 后,最好记录实际使用的发行版、版本号和架构。团队项目应以项目文档、构建配置或持续集成环境为准,不要仅凭开发者电脑上的默认 JDK 判断兼容性。不同 Java 版本之间存在语言特性、标准库和工具行为差异;用较新 JDK 编译的程序,未必能直接运行在较旧运行环境中。

如果一个电脑需要同时维护多个项目,可以保留多个 JDK,但要明确切换方式。手动改 PATH、使用操作系统提供的版本选择工具,或使用可信的版本管理工具都是可行思路;关键是验证当前终端、IDE 和构建工具各自实际使用的版本。不要把“全局默认版本”误认为每个项目都自动符合要求。

对于第一个程序,直接运行 javac 和 java 最容易理解。开始使用第三方依赖、测试框架或大型项目后,再学习 Maven 或 Gradle。构建工具能帮助管理依赖和重复构建,但也会从网络下载组件,因此要了解依赖来源、版本和项目配置,不要为了运行来源不明的项目而盲目授权或执行脚本。

十一、基本安全注意事项

JDK 是开发工具,不是杀毒软件,也不会自动保证 Java 程序安全。Java 程序可以执行文件操作、网络通信、启动子进程等行为;具体权限受操作系统、运行方式和应用代码影响。运行来历不明的 .jar 文件或项目构建脚本,和运行其他可执行程序一样存在风险。只运行可信来源的代码,检查项目文档和依赖;不确定时避免使用管理员权限运行。

安装 JDK 时从官方或可信发行渠道获取安装包。若发行方提供校验和或签名验证说明,可以按其官方步骤核对下载文件;不能仅凭文件名或网页中的版本文字认定文件可信。及时更新 JDK 有助于获取发行版提供的修复,但应先确认项目兼容性,并按照组织的补丁管理流程处理。

开发环境搭建和生产环境部署也要区分。生产系统需要考虑受支持的 JDK 版本、补丁周期、运行账户权限、依赖审查、日志和部署方式。简单地在本机成功运行 HelloWorld,只能证明基础安装和编译链路可用,不代表应用已经满足生产安全或运维要求。

结语

完成 JDK 安装、配置并通过 java -version 与 javac -version 检查后,就可以用一个文本文件编写、编译和运行 Java 程序。遇到问题时,按“确认安装目录—检查命令路径—核对版本—检查文件名和当前目录”的顺序排查,通常比重复安装更有效。接下来可以练习变量、条件判断、循环和方法,再根据项目需要逐步引入 IDE 与构建工具。

© 版权声明

相关文章