2025年9月16日,Java 25正式发布——这是Java 21之后的第一个长期支持版本。在15年的Java工作经验中,我培训了数十名程序员,现在与我的团队一起为数百万学生创建课程。我研究了Java 25的新特性——有很多有趣的功能将简化开发者的生活。

当其他平台还在等待官方发布的热度消散时,我们已经启动了我们的课程。我们不等所有人讨论新的Java——我们立即创建课程 💪

2014年启动CodeGym时,我们的目标很简单——给人们实用的编程技能,而不是关于"学习基础有多重要"的华丽演讲。10多年来,超过200万人学习了我们的课程。现在我们创建了世界上第一个Java 25课程,我想告诉您其中有什么有趣的内容。

简化源文件 — 初学者的Java

Java 25最显著的变化是为新手简化了语法。现在您可以编写程序而无需显式声明类:

Java

// 以前需要这样
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

// 现在这样就够了
void main() {
    IO.println("Hello, World!");
}

如果.java文件在显式类声明之外有方法或字段,编译器会自动创建隐式顶级类。对于学习编程的人来说,这显著降低了入门门槛。

实例Main方法 — 无需static和String[]

Java 25允许使用实例方法作为程序入口点。不再需要向初学者解释什么是static:

Java

void main() {
    // 普通实例方法
    processData();
}

void processData() {
    IO.println("正在处理数据...");
}

如果类没有合适的static main方法,Java启动器会寻找实例main方法并自动创建类实例。

java.lang.IO — 简单的输入输出

新的java.lang.IO类简化了控制台工作。不再需要记住System.out.println:

Java

void main() {
    String name = IO.readln("请输入您的姓名:");
    IO.println("你好," + name + "!");
}

该类位于java.lang包中,因此无需导入即可使用。有用于输出、输入和带提示读取字符串的方法。

灵活构造函数体 — 灵活的构造函数

在Java 25中,您可以在调用super()或this()之前执行操作:

Java

public class User {
    private final String email;
    private final String domain;
    
    public User(String email) {
        // super()调用前的操作
        this.domain = extractDomain(email);
        validateDomain(domain);
        
        super(); // 调用Object构造函数
        
        this.email = email;
    }
    
    private String extractDomain(String email) {
        return email.substring(email.indexOf('@') + 1);
    }
}

这允许在对象创建之前初始化字段和执行验证,使构造函数更加自然。

模块导入声明 — 简化的导入

JEP 511引入了用一行代码导入模块所有包的能力:

Java

import module java.base;

// 现在可以使用java.base的所有类而无需显式导入
void main() {
    var list = new ArrayList<String>();
    var file = new File("data.txt");
    var decimal = new BigDecimal("123.45");
}

这在处理需要许多类的大型模块时特别有用。

稳定值 — 优化的常量

用于处理可以稍后初始化的不可变值的新API:

Java

class Configuration {
    static final StableValue<String> DATABASE_URL = 
        StableValue.of(() -> loadFromConfig("db.url"));
        
    void connectToDatabase() {
        String url = DATABASE_URL.get(); // 延迟初始化
        // 数据库连接
    }
}

稳定值有助于优化应用程序启动时间,并为延迟初始化提供线程安全性。

模式中的原始类型 — 扩展的模式匹配

Java 25将模式匹配扩展到所有原始类型:

Java

static String classify(Number n) {
    return switch (n) {
        case int i -> "整数:" + i;
        case long l -> "长整数:" + l;
        case double d -> "双精度:" + d;
        case float f -> "浮点数:" + f;
        default -> "未知数字类型";
    };
}

现在您可以在switch表达式和instanceof中对int、long、double、float和其他原始类型使用模式匹配。

紧凑对象头 — 内存节省

在Java 25中,64位架构上的对象头大小从96-128位减少到64位:

Java

// 每个对象现在占用更少内存
List<String> list = new ArrayList<>(); // 更少的开销
Map<String, User> users = new HashMap<>(); // 每个条目都节省内存

这在有大量对象的应用程序中特别明显——微服务和具有大堆的应用程序。

作用域值 — 安全的上下文

作用域值的最终版本允许在方法和线程之间传递不可变数据:

Java

private static final ScopedValue<User> CURRENT_USER = ScopedValue.newInstance();

public void handleRequest(User user) {
    ScopedValue.where(CURRENT_USER, user)
        .run(() -> {
            processOrder();  // 内部通过CURRENT_USER.get()访问user
            sendNotification();
            logActivity();
        });
}

与ThreadLocal不同,作用域值更易于使用,开销更少,与虚拟线程配合得更好。

JFR改进 — 更好的性能分析

Java 25通过三个新功能改进了Java飞行记录器:

JFR协作采样 — 更安全的堆栈跟踪收集,无偏差且支持并发堆栈遍历。

JFR方法计时和跟踪 — 跟踪特定方法的执行时间而无需更改代码:

Bash

java -XX:StartFlightRecording:jdk.MethodTiming#methods=com.myapp.Service.* MyApp

Linux上的CPU时间分析 — 使用Linux内核功能进行精确的CPU时间分析。

密钥派生函数API

用于处理密钥派生函数(KDF)的新API:

Java

// 使用KDF生成派生密钥的示例
KeyDerivationFunction kdf = KeyDerivationFunction.getInstance("PBKDF2WithHmacSHA256");
SecretKey derivedKey = kdf.deriveKey(password, salt, iterations, keyLength);

这对于加密应用程序和实现安全密码存储至关重要。

为什么要学习Java 25

Java发展迅速——新的LTS版本每3年发布一次。那些首先掌握新特性的人在就业市场上获得优势。

Java 25是LTS版本,Oracle提供5年支持。公司将迁移到此版本并寻找了解新语言功能的开发人员。

第一个Java 25课程

当Oracle宣布Java 25发布日期时,我们决定不等待。CodeGym一直走在前面——我们是第一个创建游戏化编程教育的,第一个创建带有自动检查的交互式任务的。

现在我们是第一个为您提供实践学习Java 25机会的。该课程包括Java 25新功能和以前版本的重要特性——Java 8的lambda和Stream API,Java 9的模块,Java 10的var,Java 13的文本块,Java 14的记录,Java 17的模式匹配,Java 21的虚拟线程。

课程内容:

  • 325+讲座解释每个Java 25新功能
  • 880+任务从简单到企业级
  • AI导师分析代码并给出建议
  • IntelliJ IDEA集成 — 使用专业工具学习
  • 大型项目 — 使用新技术创建真实应用程序

实践 — 学习的基础

多年的教学让我明白一个简单的道理:没有实践的理论是浪费时间。您可以阅读关于简化源文件的所有文档,但直到您用新语法编写几个程序,您才会感受到便利。

在课程中,每个Java 25新功能都会立即通过实践加强。学习灵活构造函数体——编写安全的对象初始化系统。掌握作用域值——创建具有上下文传递的多线程应用程序。理解模块导入声明——简化大型项目的结构。

课程中的AI导师

我们课程最有趣的特性是分析学生代码的AI。这不是来自ChatGPT的通用建议,而是一个专门的系统:

  • 了解每个课程任务的上下文
  • 分析编程风格
  • 给出个性化建议

游戏化学习

如果学习方法错误,编程可能会很枯燥。这就是为什么CodeGym教育像游戏一样构建:等级、成就、排名。

在Java 25课程中:

  • 解决不同难度任务的成就
  • 学生总排行榜
  • 类似游戏的等级

从零到就业准备

课程的设计使得即使是初学者在完成65个等级后也会具备在知名公司工作所需的知识。完整的课程大纲包括学习现代Java 25,但也涵盖:

  • 现代语法和新运算符
  • 具有新语言功能的OOP
  • 集合和Stream API
  • 通过现代API进行文件操作
  • 多线程和线程管理

IntelliJ IDEA插件

CodeGym的特色之一是IntelliJ IDEA插件。学生直接在专业开发环境中解决任务,具有语法高亮、自动完成和调试器。

即时解决方案检查

在CodeGym中,您可以解决任务并在几秒钟内了解结果。系统自动检查代码,运行测试并提供反馈。

对于Java 25,检查系统理解:

  • 新的简化源文件语法
  • 实例Main方法
  • 灵活构造函数体
  • 模块导入声明

为什么选择CodeGym学习Java 25

在10多年的工作中,我们了解了如何有效地教授编程。科技公司的招聘人员了解CodeGym,经常在面试中问:"您在CodeGym上是什么等级?"不是因为我们付钱给他们,而是因为他们知道——如果有人达到了40级,他们就能编程,而不只是记忆语法。

Java 25课程是我们方法论的演进。同样的实践重点,但使用最现代的技术。

现在开始学习

Java 25已经发布,您现在就可以学习它——当竞争对手还在阅读发布说明时。我们的课程包含带有实际示例的所有创新。

65级实践任务、AI导师、与专业工具的集成——一切都是为了让您快速有效地掌握现代Java。

成为准备好迎接2025年的Java开发者。

准备学习Java 25了吗?在CodeGym开始——唯一一个拥有最新Java版本完整实践课程的平台。

65个等级 | 880+任务 | AI导师 | IDEA集成

开始学习Java 25 →