Spring boot 3 - Jakarta and Javax
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
Spring Boot 3 is an important update in the Spring ecosystem, especially due to its shift from using `javax` packages to `jakarta` packages for improved compatibility and newer Java standards. This change is significant for developers transitioning their applications to use newer versions of Java and Spring Boot. This article delves deep into these changes, providing insights into the transition from Javax to Jakarta EE, detailed explanations of Spring Boot 3 with examples, and a mix of technical details to aid in understanding.
Transition from Javax to Jakarta
Background
The Java Enterprise Edition (Java EE) was originally developed by Sun Microsystems, which became part of Oracle Corporation. Over time, the ownership and stewardship of Java EE migrated to the Eclipse Foundation, where it was renamed Jakarta EE. This transition necessitated a namespace change from `javax.` to `jakarta.`.
Technical Changes
The most notable change in this transition is the change in package prefixes, which impacts various Java EE specifications such as Servlet, JPA, and more. When upgrading to Spring Boot 3, you will often need to alter imports from the `javax` packages to `jakarta` equivalents.
For example, an import change from:
- Backward Compatibility: Classes relying on the `javax` namespace are not compatible with Spring Boot 3 without modification. Developers must refactor their codebase.
- Third-party Libraries: Any third-party library relying on `javax` packages must be updated to support `jakarta` packages.
- Testing: Extensive testing is essential after migration to ensure that the update doesn’t break existing functionalities.
- Native Compilation: Integrates with GraalVM for native images, improving startup time and memory consumption.
- Improved Observability: Enhanced through integration with Micrometer, providing metrics for better application monitoring.
- Updated Core Dependencies: Supports the latest Java versions, including support for Java 17 features.
- Migration Strategy: Plan the migration from `javax` to `jakarta` carefully, especially if the application is substantial.
- Performance Testing: Use tools like JMeter to ensure performance is consistent post-migration.
- Update Tooling: Ensure that build tools (Maven/Gradle) and IDEs are compatible with new Spring Boot 3 features.
Related reading
- Spring Boot Actuator / Swagger
- Spring Boot Actuator without Spring Boot
- Spring Boot application as a Service
- Spring boot config server
- Spring Boot 3 springdoc-openapi-ui doesn't work
- Spring Boot 3.x upgrade. Could not resolve org.springframework.bootspring-boot-gradle-plugin3.0.1
- Spring Boot containers can not connect to the Kafka container
- Spring Boot custom Kubernetes readiness probe

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.