人类很无聊,可是爱情却很伟大
IDEA2025.2在8月初就偷偷发布了,这次的更新可谓是诚意满满,新特性也玩出了新高度。
下面就来看看
第一个,订阅到期也不慌,IDEA功能继续用
就算订阅暂时中断,IDE 也不会“一刀切”,给你弹出一个去订阅的强制性窗口,Java和kotlin等常用功能仍然会让你使用。也不要再重新下载个版本来继续免费试用idea了。
同时jetbrains 也通过这种策略,来宣布之前的idea社区版不再作为一个单独的项目发布,用户只需要下载Ultimate,以后就只有一个名字叫IntelliJ IDEA。
第二个,AI助手大升级
-
✅ AI 补全支持更多语言: 增加了json、yml、md、sql 全都支持了,编辑文档也能飞快。
-
✅ 离线模式支持 Java 补全: 在无网、企业内网、甚至高原,飞机上照样能用,甚至还能切换本地模型,灵活又高效,随时随地用AI写代码。
-
✅ 性能提升: Junie 现在快了 40%,还支持远程环境,部署到云端也稳得住。
-
✅ 项目级 AI 指令: 通过
\_Project Rules\_文件自定义项目约束,比如代码风格或框架约定,AI 再也不会“跑偏”。 -
✅ AUTO 模式选择模型: IDEA 自动帮你选最佳模型,既省心又能控制成本。
同时支持自动选择模型
第三个,spring 调试器,彻底颠覆传统调试体验
idea为了Java,推出了spring debugger插件,让spring,spring boot调试体验直接起飞。
下面来看看spring debugger做了哪些功能
第一个,参看当前配置
在.properties文件中定义的属性在运行时可能会被其他.properties文件或Bean覆盖。若运行时的实际值与.properties文件中指定的值不同,对应行会显示内联提示,揭示实际配置值。直接忙我们免去了繁琐的侦探工作,让问题无处遁形。
同时,通过内联提示,我们可以点击它看到到底是哪里的代码覆盖了目前的值。
第二个,为你直接配置好数据库database连接信息
做后端的同学,一般都会用工具连接数据库,所以就免不了做一些复制数据库连接信息的事情,现在spring debugger给你自动做了。尤其如果你是做微服务开发,数据库比较多的时候,这个特性非常有用。
要实现这个特性,目前只需要做2个事
第一步:用debug方式启动项目
第二步,打开database,点击刷新按钮
第三个,随时计算表达式
在 IntelliJ IDEA 调试器中评估表达式时,您可以访问所有属性和 Bean,无论它们是否存在于当前执行上下文中。这使得您可以调用任意 Bean 的方法来检索数据并测试假设。
使用方式:按住alt ,然后点击表达式
或者手动选择一个表达式,然后按alt ctrl f8或者直接点击右边的像计算器的按钮就可以计算表达式了。
第四个,查看spring所有的bean
在Project工具窗口来查看所有的bean
绿色的表示是已经加载的bean,灰色的是没有被加载的bean,黄色的是mock的bean。
第四个,支持maven4
maven4是maven的第四个大版本,完全重写核心依赖注入系统,具有更快的编译速度,预计提升30%;同时支持yaml格式的pom
第五个,支持JSpecify,Java代码更安全
JSpecify提供以一系列注解,让Java代码更安全,最常见的就是NPE问题,现在idea支持 JSpecify,给出 友好的提示。
package org.example;
interface TokenExtractor {
/**
* Extract a token from a {@link String}.
* @param input the input to process
* @return the extracted token or {@code null} if not found
*/
@Nullable String extractToken(String input);
}
如果再其他地方调用了这个方法,那么idea就会给出这样的提示
其实,在即将到来的Spring7也全面支持了 JSpecify。
第六个,支持Java25
Java25马上会在下个月发布,idea提前支持Java25,Java25作为下一个长期支持版本,也迎来了一大波新特性,这里提几个很有用的新特性
第一个,模块化导入
模块化导入的好处是不用一个一个导入每个类。导入代码直接断崖式下降。
第二个,灵活的构造函数
在传统 Java 中,子类构造函数必须先调用父类构造函数(super(...)),无法先验证参数,可能导致无效参数进入父类构造函数。
例子
// 父类:Person
class Person {
protected int age;
// 父类构造函数:验证年龄非负
public Person(int age) {
if (age < 0) {
throw new IllegalArgumentException("年龄不能为负数");
}
this.age = age;
}
}
// 子类:Employee(必须年满18岁)
class Employee extends Person {
private String officeId;
// 改进后的子类构造函数:先验证参数,再调用父类构造函数
public Employee(int age, String officeId) {
// 1. 先验证子类特有的参数约束(18~67岁)
if (age < 18 || age > 67) {
throw new IllegalArgumentException("员工年龄必须在18~67岁之间");
}
// 2. 初始化子类字段(可选,视需求而定)
this.officeId = officeId;
// 3. 最后调用父类构造函数
super(age); // 此时传入的age已确保符合子类约束
}
}
// 使用示例
public class Main {
public static void main(String[] args) {
// 正常情况:年龄25岁,有效
Employee emp1 = new Employee(25, "OFFICE-101");
System.out.println(emp1.age); // 输出:25
// 异常情况:年龄17岁,在调用super前就抛出异常
Employee emp2 = new Employee(17, "OFFICE-102");
// 抛出:IllegalArgumentException: 员工年龄必须在18~67岁之间
}
}
第三个,紧凑源文件与实例 main 方法
Java 现已支持顶层实例 main 方法和无 class 紧凑文件。现在可以这样写:
