Spring Boot 3 Exige Java 17 LTS como Base Mínima
Spring Boot 3 abandonó Java 8 y 11. El estándar empresarial mínimo de Spring hoy es Java 17, permitiendo usar records y características modernas en todo el framework.
En una línea En pom.xml: <java.version>17</java.version> o <java.version>21</java.version>.
@SpringBootApplication
public class TaskFlowApplication {
public static void main(String[] args) {
SpringApplication.run(TaskFlowApplication.class, args);
}
@Bean
ApplicationRunner informarVersiones(Environment env) {
return args -> {
System.out.println("Java " + Runtime.version());
System.out.println("Spring Boot " + SpringBootVersion.getVersion());
System.out.println("Hilos virtuales: " + env.getProperty("spring.threads.virtual.enabled", "false"));
};
}
}
Cómo funciona por dentro
Spring Boot 3 está construido sobre Spring Framework 6, que fijó Java 17 como versión mínima. No es un capricho: el código del framework usa records, sealed, text blocks y otras APIs del JDK 17, y se compila a bytecode de versión 61. Una JVM 11 no puede ni cargar esas clases.
Esa base permitió otros cambios de fondo: el salto a Jakarta EE 9+ (paquetes jakarta.*), la compilación anticipada (AOT) para generar imágenes nativas con GraalVM, la observabilidad con Micrometer integrada y, a partir de Spring Boot 3.2 con Java 21, el soporte de Virtual Threads.
En la práctica, en un proyecto nuevo se elige Java 21 (la LTS más reciente con soporte amplio) y Spring Boot 3.x. Java 17 sigue siendo el mínimo y es lo habitual en empresas que aún no han migrado.
javax.* en lugar de jakarta.*.
Se conecta con Jakarta EESpring Framework 6Migración