V
Vel·ToolKit
简洁 · 高效 · 即开即用
ZH
第 1 章 / 共 20 章

入门:JDK 与 Hello World

Java 语言简介、JDK 安装与第一个程序

Java 是什么

Java 是 1995 年发布的面向对象编程语言。最大的特点是"一次编译、到处运行":源代码先编译成字节码(.class),由 JVM(Java 虚拟机)在不同操作系统上解释执行——同一份字节码能在 Windows、Linux、macOS 跑。

Java 强类型、静态类型、自动垃圾回收、运行时反射强大,是企业级后端服务(Spring 系)、Android 应用、大数据(Hadoop / Spark / Flink)的主流语言。

JDK vs JRE vs JVM

  • JVM:Java 虚拟机,运行字节码的核心,跨平台的关键
  • JRE:JVM + 标准库,只能运行 Java 程序,不能编译
  • JDK:JRE + 编译器(javac)+ 工具链(jar/javadoc/jdb 等),开发必备

安装 JDK 17

推荐发行版:Oracle JDK、Eclipse Temurin(社区主流,免费商用)、Amazon Corretto、阿里 Dragonwell。安装后配置 JAVA_HOME 和 PATH,验证:

$ java -version
openjdk version "17.0.10" 2024-01-16
OpenJDK Runtime Environment Temurin-17.0.10+7 (build 17.0.10+7)
OpenJDK 64-Bit Server VM Temurin-17.0.10+7 (build 17.0.10+7, mixed mode)

$ javac -version
javac 17.0.10

Hello World

新建文件 Hello.java,注意:public 类的类名必须和文件名完全一致(大小写敏感)。

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

编译与运行

传统两步:javac 编译生成 .class 字节码,java 加载运行。注意 java 命令后面跟的是"类名"而不是".class 文件名"。

$ javac Hello.java       # 生成 Hello.class
$ java Hello             # 运行(注意没有 .class 后缀)
Hello, World!

单文件源代码直接运行(Java 11+)

Java 11 起支持直接 java Hello.java,无需先 javac。适合写小脚本:

$ java Hello.java
Hello, World!

main 方法签名

JVM 启动时调用类的 public static void main(String[] args) 方法。签名固定:public、static、返回 void、形参为字符串数组。args 是命令行参数。

// Greet.java
public class Greet {
    public static void main(String[] args) {
        if (args.length == 0) {
            System.out.println("Hello, World!");
        } else {
            System.out.println("Hello, " + args[0] + "!");
        }
    }
}
$ javac Greet.java
$ java Greet Alice
Hello, Alice!

用 Maven 起一个项目

实际开发用 Maven 或 Gradle 管理依赖与构建。Maven 起新项目骨架:

$ mvn archetype:generate \
  -DgroupId=com.example \
  -DartifactId=myapp \
  -DarchetypeArtifactId=maven-archetype-quickstart \
  -DarchetypeVersion=1.4 \
  -DinteractiveMode=false
$ cd myapp
$ mvn compile
$ mvn exec:java -Dexec.mainClass=com.example.App

生成的标准目录结构:

myapp/
├── pom.xml                       # 项目描述 + 依赖
└── src/
    ├── main/
    │   └── java/
    │       └── com/example/App.java
    └── test/
        └── java/
            └── com/example/AppTest.java