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)。
3.2 环境变量配置
装完JDK,下一步就是配环境变量。说白了,就是告诉操作系统:“嘿,Java的命令放在这个目录下,你随便调。”
以Windows为例,我习惯这样配:
- 新建系统变量
JAVA_HOME,值为JDK安装路径,比如C:\Program Files\Adoptium\jdk-8.0.202.08 - 编辑系统变量
Path,新增%JAVA_HOME%\bin - 新建系统变量
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,循环用 for 或 while。写法跟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环境。那才是大数据开发的真正起点。