如何用Java25编译Java17的项目

Java25发布了,比24更好用 😄

我大部分的项目是Java17的,该如何用25支持编写和编译呢?


一、指定编译版本

用SDKman 下载一个25的JDK,IDEA会自动识别出来。直接指明就行

二、升级Lombok版本

25支持的二版本比较新,尽量用最新的,我用的是

xml 复制代码
        <lombok.version>1.18.42</lombok.version>

三、指明编译插件

只升级了Lombok版本还不够,好要明确使用

xml 复制代码
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.14.1</version>
                <configuration>
                    <source>17</source>
                    <target>17</target>
                    <annotationProcessors>
                        <annotationProcessor>lombok.launch.AnnotationProcessorHider$AnnotationProcessor</annotationProcessor>
                    </annotationProcessors>
                </configuration>
            </plugin>

这样就能编译正常了,又快又好!


Java 25(JDK 25)是下一个长期支持版本(LTS),相对于 Java 17 有不少新特性和改进。

特性 概述 / 用处 是否成熟 / 风险 备注
Flexible Constructor Bodies(JEP 513) 允许在 super(...)this(...) 调用之前执行代码,只要不读取未初始化字段。这样就可以在构造器里先做校验、预计算逻辑而不用绕开限制。 ✅ 已成为正式特性 对复杂继承关系中的构造逻辑更灵活
Compact Source Files & Instance Main Methods(JEP 512) 对于小型脚本、原型或入门程序,可以省略传统的类声明和静态 main 方法写法。可以写一个"隐式类",void main()(非 static)也可以被当作程序入口用。 ✅ 正式特性 更方便快速试验、演示、小工具写法
Module Import Declarations(JEP 511) 在源代码里可以写 import module ...; 来导入模块,使得使用模块系统时依赖关系更显式。 ✅ 正式特性 对用到 Java 平台模块系统 (JPMS) 的项目更友好
Scoped Values(JEP 506) 一种比 ThreadLocal 更现代、适应虚拟线程场景的机制,用于在一段执行上下文中共享不可变数据。 ✅ 正式特性 特别在并发 / 虚拟线程编程中更有用
性能 / 内存优化 - Compact Object Headers(JEP 519) :对象头从 12 字节压缩到 8 字节 - Ahead-of-Time Method Profiling(JEP 515) :提前收集 profiling 数据,加速 JVM 热身 - JFR 增强 :CPU 时间剖析、方法级追踪、协作采样等 - Generational Shenandoah(JEP 521) :支持世代回收 - 移除 32 位 x86 平台支持(JEP 503):精简运行时代码 大多已稳定,少数需显式开启 在大规模应用、高并发场景中可见收益
其它功能 / API - Key Derivation Function API(JEP 510) - Primitive Types in Patterns(JEP 507,预览) - 结构化并发(Structured Concurrency,JEP 505 预览) - PEM Encodings of Cryptographic Objects(JEP 470 预览) - 其它命令行、启动优化、压缩类指针调整等 部分为预览 / 孵化特性 使用时需考虑 API 稳定性与未来兼容性
相关推荐
某不知名網友几秒前
C/C++动态内存管理,智能指针及RAlI思想。
java·c语言·c++
沫离痕1 小时前
Cassandra 4.0.11 Docker 安装与配置手册
java·spring boot
plainGeekDev1 小时前
libs 目录 → Gradle 依赖管理
android·java·kotlin
CodeStride1 小时前
就像长跑配速一样,我是如何平衡代码性能与可读性的
java
弹简特2 小时前
【Java项目-企悦抽】07-用户与认证模块-实现用户注册01
java·开发语言
L歪歪君2 小时前
Apache Doris全链路性能优化实战指南:从架构设计到生产落地
java·开发语言·算法
山东点狮信息科技有限公司2 小时前
SpringBoot+VUE3,一套系统完成OA+HRM+CRM+MES+合同+项目管理 —— 深度解析点狮全业务管理平台
java·spring boot·后端
snow@li3 小时前
Java:Java 服务器(Web 容器 / Servlet 容器)完整工作清单
java·服务器·前端
青山木3 小时前
Hot 100 --- 二叉树与递归
java·数据结构·算法·leetcode·深度优先
jason成都3 小时前
GNSS-QC 数据清洗功能全面增强|滑坡监测实测验证,适配 rtklib_java 高精度解算链路
java·gnss