当其他平台还在等待官方发布的热度消散时,我们已经启动了我们的课程。我们不等所有人讨论新的Java——我们立即创建课程 💪
2014年启动CodeGym时,我们的目标很简单——给人们实用的编程技能,而不是关于"学习基础有多重要"的华丽演讲。10多年来,超过200万人学习了我们的课程。现在我们创建了世界上第一个Java 25课程,我想告诉您其中有什么有趣的内容。
简化源文件 — 初学者的Java
Java 25最显著的变化是为新手简化了语法。现在您可以编写程序而无需显式声明类:
// 以前需要这样
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:
void main() {
// 普通实例方法
processData();
}
void processData() {
IO.println("正在处理数据...");
}
如果类没有合适的static main方法,Java启动器会寻找实例main方法并自动创建类实例。
java.lang.IO — 简单的输入输出
新的java.lang.IO类简化了控制台工作。不再需要记住System.out.println:
void main() {
String name = IO.readln("请输入您的姓名:");
IO.println("你好," + name + "!");
}
该类位于java.lang包中,因此无需导入即可使用。有用于输出、输入和带提示读取字符串的方法。
灵活构造函数体 — 灵活的构造函数
在Java 25中,您可以在调用super()或this()之前执行操作:
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引入了用一行代码导入模块所有包的能力:
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:
class Configuration {
static final StableValue<String> DATABASE_URL =
StableValue.of(() -> loadFromConfig("db.url"));
void connectToDatabase() {
String url = DATABASE_URL.get(); // 延迟初始化
// 数据库连接
}
}
稳定值有助于优化应用程序启动时间,并为延迟初始化提供线程安全性。
模式中的原始类型 — 扩展的模式匹配
Java 25将模式匹配扩展到所有原始类型:
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位:
// 每个对象现在占用更少内存
List<String> list = new ArrayList<>(); // 更少的开销
Map<String, User> users = new HashMap<>(); // 每个条目都节省内存
这在有大量对象的应用程序中特别明显——微服务和具有大堆的应用程序。
作用域值 — 安全的上下文
作用域值的最终版本允许在方法和线程之间传递不可变数据:
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方法计时和跟踪 — 跟踪特定方法的执行时间而无需更改代码:
java -XX:StartFlightRecording:jdk.MethodTiming#methods=com.myapp.Service.* MyApp
Linux上的CPU时间分析 — 使用Linux内核功能进行精确的CPU时间分析。
密钥派生函数API
用于处理密钥派生函数(KDF)的新API:
// 使用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集成 |
GO TO FULL VERSION