JDK 21 下载与安装
下载
JDK 21 可以从官方网站或其他可靠的镜像源进行下载。
- 官方网站:访问 Oracle JDK 21 下载页面 ,根据你的操作系统(如 Windows、Linux、macOS)选择合适的版本进行下载。不过,从 Oracle 下载商业用途的 JDK 可能需要付费订阅。
- 开源版本:你也可以从 OpenJDK 官网 或者 Adoptium 下载 OpenJDK 21,这是完全免费且开源的。
安装
安装步骤因操作系统而异:
Windows
- 运行下载的 .exe 安装程序。
- 在安装向导中,按照提示进行操作,选择安装路径等设置。
- 安装完成后,配置环境变量。打开 “系统属性” -> “高级系统设置” -> “环境变量”,在 “系统变量” 中找到 Path 变量,编辑并添加 JDK 的 bin 目录路径(例如 C:\Program Files\Java\jdk-21\bin)。
Linux
以 Ubuntu 为例:
- 解压下载的压缩包,例如:
tar -zxvf jdk-21_linux-x64_bin.tar.gz
- 移动解压后的文件夹到合适的位置,例如 /usr/local:
sudo mv jdk-21 /usr/local
- 配置环境变量,编辑 /etc/profile 文件:
sudo nano /etc/profile
在文件末尾添加以下内容:
export JAVA_HOME=/usr/local/jdk-21
export PATH=$JAVA_HOME/bin:$PATH
- 使配置生效:
source /etc/profile
macOS
- 运行下载的 .dmg 安装程序,按照提示完成安装。
- 安装完成后,JDK 通常会被安装到 /Library/Java/JavaVirtualMachines/jdk-21.jdk 目录下。
- 配置环境变量,编辑 ~/.bash_profile 或 ~/.zshrc 文件,添加以下内容:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
- 使配置生效:
source ~/.bash_profile
或则
source ~/.zshrc
验证安装
安装完成后,打开终端或命令提示符,输入以下命令验证 JDK 是否安装成功:
java -version
javac -version
如果能正确显示 JDK 21 的版本信息,则说明安装成功。
JDK 21 新特性
1. 虚拟线程(Virtual Threads)
虚拟线程是轻量级线程,可显著提高并发应用程序的性能和资源利用率。它允许开发者以更简单的方式编写高并发代码,而无需担心传统线程带来的资源开销。
示例代码:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class VirtualThreadsExample {
public static void main(String[] args) {
try (ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor()) {
for (int i = 0; i < 1000; i++) {
executor.submit(() -> {
System.out.println("Running task on virtual thread: " + Thread.currentThread());
});
}
}
}
}
2. 结构化并发(Structured Concurrency)
结构化并发提供了一种更简单、更安全的方式来管理多个并发任务。它将并发任务组织成一个树形结构,确保所有子任务在其父任务完成之前完成,避免了传统并发编程中的一些常见问题,如任务泄漏和异常处理困难。
示例代码:
import java.util.concurrent.ExecutionException;
import java.util.concurrent.StructuredTaskScope;
public class StructuredConcurrencyExample {
public static void main(String[] args) throws ExecutionException, InterruptedException {
try (var scope = new StructuredTaskScope.ShutdownOnFailure()) {
var task1 = scope.fork(() -> {
Thread.sleep(1000);
return "Result from task 1";
});
var task2 = scope.fork(() -> {
Thread.sleep(2000);
return "Result from task 2";
});
scope.join();
scope.throwIfFailed();
System.out.println(task1.get());
System.out.println(task2.get());
}
}
}
3. 记录模式(Record Patterns)
记录模式允许开发者更方便地解构记录(Record)类型的对象,简化了数据提取和处理的过程。
示例代码:
record Point(int x, int y) {}
public class RecordPatternsExample {
public static void main(String[] args) {
Point point = new Point(10, 20);
if (point instanceof Point(int x, int y)) {
System.out.println("x: " + x + ", y: " + y);
}
}
}
4. 字符串模板(String Templates)
字符串模板提供了一种更简洁、更安全的方式来构建字符串,避免了传统字符串拼接的繁琐和易出错问题。
示例代码:
public class StringTemplatesExample {
public static void main(String[] args) {
String name = "John";
int age = 30;
String message = STR."My name is \{name} and I am \{age} years old.";
System.out.println(message);
}
}
这些只是 JDK 21 的部分新特性,还有其他一些改进和增强功能,你可以参考官方文档了解更多详细信息。