3、Java环境搭建:JDK安装与配置、环境变量设置、验证Java环境、Java基础语法速览

好,咱们正式开始动手了。大数据开发,Java是绕不开的根基。Hadoop、Spark、Flink这些框架,底层全是Java或JVM语言写的。所以,先把Java环境搞定,后面才玩得转。

我个人习惯,不管在哪个操作系统上,都尽量保持JDK版本一致。这样能少很多跨平台兼容的麻烦。你想想看,开发环境用JDK 11,生产环境用JDK 8,有些API行为不一样,排查起来很头疼。

3.1 JDK的下载与安装

先说下载。去哪下?别去Oracle官网乱点,现在Oracle JDK从9开始就改商业授权了,商用要付费。我建议你用OpenJDK或者Adoptium(以前叫AdoptOpenJDK)。

  • 推荐版本:JDK 8 或 JDK 11。这两个是LTS(长期支持)版本,社区最稳。
  • 下载地址:直接搜“Adoptium JDK 8”或“Adoptium JDK 11”。
  • 安装方式:Windows下是exe安装包,Linux下是tar.gz压缩包。

嗯,这里要注意:千万别装JRE。很多新手只装了JRE,结果编译时找不到javac命令。JDK里才包含编译器(javac)和运行时(java)。

避坑指南:我曾经在项目里遇到过,同事图省事直接用了系统自带的OpenJDK,结果版本太老,连Java 8的lambda表达式都不支持。后来统一换成Adoptium JDK 8u202,问题才解决。

3.2 环境变量配置

装完JDK,下一步就是配环境变量。说白了,就是告诉操作系统:“嘿,Java的命令放在这个目录下,你随便调。”

以Windows为例,我习惯这样配:

  1. 新建系统变量 JAVA_HOME,值为JDK安装路径,比如 C:\Program Files\Adoptium\jdk-8.0.202.08
  2. 编辑系统变量 Path,新增 %JAVA_HOME%\bin
  3. 新建系统变量 CLASSPATH,值为 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

Linux/Mac下,在 ~/.bashrc~/.zshrc 里加:

export JAVA_HOME=/usr/local/jdk-8.0.202.08
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

为什么要配 JAVA_HOME?因为很多大数据框架(比如Hadoop、Spark)启动脚本里,会直接读取这个变量。你不配,它们就找不到Java。

小技巧:我建议把 JAVA_HOME 配成不带版本号的路径,比如 C:\Java\jdk。以后升级JDK,只需要把新版本解压到同一个目录,改一下指向就行,不用改其他配置。

3.3 验证Java环境

配完环境变量,别急着写代码。先验证一下,确保一切正常。

打开命令行,敲两个命令:

java -version
javac -version

如果看到类似这样的输出,说明环境配好了:

java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

注意看版本号。1.8.0_202 就是 Java 8 的某个小版本。如果显示的是 openjdk version "11.0.12",那就是JDK 11。

为什么会这样?因为Java的版本命名在9之后改了。8以前叫1.8.x,9以后直接叫9.x、11.x。记住这个规律,以后看到版本号不会懵。

重要:如果 javac 命令找不到,说明 Path 变量没配好,或者配了但没生效。Windows下记得重新打开命令行窗口,Linux下执行 source ~/.bashrc

3.4 Java基础语法速览

环境搭好了,咱们快速过一遍Java基础语法。别怕,我不打算讲太深,够用就行。大数据开发里,你主要用Java写MapReduce、Spark作业,或者调API,语法层面掌握这些就够了。

3.4.1 类与主方法

Java程序入口是 main 方法。每个可执行程序必须有一个类,里面包含 public static void main(String[] args)

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

保存为 HelloWorld.java,然后编译运行:

javac HelloWorld.java
java HelloWorld

输出:Hello, 大数据!

嗯,这里要注意:类名必须和文件名一致。比如类名叫 HelloWorld,文件名就得是 HelloWorld.java。大小写也要一致。我见过有人把文件名写成 helloworld.java,编译直接报错。

3.4.2 变量与数据类型

Java是强类型语言,变量必须先声明类型,再使用。常用的数据类型有:

类型 关键字 示例 说明
整型 int int count = 100; 最常用,范围约±21亿
长整型 long long big = 100000L; 后面加L,处理大数据量时常用
浮点型 double double price = 99.99; 默认小数是double
布尔型 boolean boolean flag = true; 只有true/false
字符串 String String name = "Hadoop"; 注意是大写S,不是基本类型

我在项目中遇到过,有人用 float 存金额,结果精度丢失,算账对不上。后来统一改成 BigDecimal 才解决。所以,涉及精确计算,别用浮点型。

3.4.3 条件与循环

条件判断用 if-else,循环用 forwhile。写法跟C语言很像。

int score = 85;
if (score >= 90) {
    System.out.println("优秀");
} else if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}

// for循环
for (int i = 0; i < 5; i++) {
    System.out.println("第" + i + "次循环");
}

// while循环
int j = 0;
while (j < 5) {
    System.out.println("j = " + j);
    j++;
}

说白了,这些语法跟其他语言大同小异。你只要记住:Java的代码块用花括号 {} 包裹,每条语句末尾加分号 ;

3.4.4 数组与集合

数组是固定长度的,集合是动态的。大数据开发里,集合用得更多。

// 数组
int[] arr = new int[3];
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;

// ArrayList(最常用的集合)
import java.util.ArrayList;
ArrayList<String> list = new ArrayList<>();
list.add("Hadoop");
list.add("Spark");
list.add("Flink");
System.out.println(list.get(0));  // 输出 Hadoop

注意看,ArrayList<String> 这种写法叫泛型。它告诉编译器:这个集合里只能放String类型。好处是编译时就能检查类型错误,不用等到运行时。

小技巧:我建议你一开始就养成用泛型的习惯。写大数据作业时,经常要处理 ArrayList<Text>HashMap<Text, IntWritable> 这些类型,泛型能帮你少写很多类型转换代码。

3.4.5 方法定义

方法就是函数。Java里方法必须定义在类里面。

public class Calculator {
    // 定义一个加法方法
    public static int add(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        int result = add(3, 5);
        System.out.println("3 + 5 = " + result);
    }
}

方法签名包括:访问修饰符(public)、返回值类型(int)、方法名(add)、参数列表(int a, int b)。

嗯,这里要注意:main方法必须是 public static void,这是Java虚拟机规定的入口规范。少一个关键字都不行。

3.5 小结

这一章我们做了三件事:装了JDK、配了环境变量、验证了环境。最后快速过了一遍Java基础语法。你可能会觉得内容有点多,但别急,后面写代码时会反复用到这些知识。

我个人习惯,每搭好一个环境,都会写一个简单的HelloWorld跑一遍。这样能确认环境没问题,心里踏实。你也试试看,把上面的代码敲一遍,感受一下Java的编译和运行流程。

下一章,咱们开始搭建Hadoop环境。那才是大数据开发的真正起点。