jdk21的下载、安装和新特性

JDK 21 下载与安装

下载

JDK 21 可以从官方网站或其他可靠的镜像源进行下载。

  • 官方网站:访问 Oracle JDK 21 下载页面 ,根据你的操作系统(如 Windows、Linux、macOS)选择合适的版本进行下载。不过,从 Oracle 下载商业用途的 JDK 可能需要付费订阅。
  • 开源版本:你也可以从 OpenJDK 官网 或者 Adoptium 下载 OpenJDK 21,这是完全免费且开源的。

安装

安装步骤因操作系统而异:

Windows

  1. 运行下载的 .exe 安装程序。
  2. 在安装向导中,按照提示进行操作,选择安装路径等设置。
  3. 安装完成后,配置环境变量。打开 “系统属性” -> “高级系统设置” -> “环境变量”,在 “系统变量” 中找到 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

  1. 运行下载的 .dmg 安装程序,按照提示完成安装。
  2. 安装完成后,JDK 通常会被安装到 /Library/Java/JavaVirtualMachines/jdk-21.jdk 目录下。
  3. 配置环境变量,编辑 ~/.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 的部分新特性,还有其他一些改进和增强功能,你可以参考官方文档了解更多详细信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

故事很腻i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值