Popular Java Frameworks
What Spring Boot, Quarkus, and Jakarta EE each bring to the table, and how to pick between them.
3 min read
Plain Java gives you the language; almost no real-world backend is built without a framework on top of it to handle web servers, dependency management, and common infrastructure concerns. Three names dominate the current Java ecosystem, each with a different philosophy.
Spring Boot
Spring Boot is by far the most widely used Java framework for building backend applications, and for most teams starting a new Java service today, it's the default choice. It's built on top of the broader Spring Framework, and its core idea is dependency injection: instead of your classes creating their own dependencies, Spring creates and wires them together for you, based on annotations.
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, Spring Boot!";
}
}Spring Boot's "convention over configuration" approach and enormous ecosystem of add-ons (Spring Data for databases, Spring Security for auth, Spring Cloud for microservices) mean there's rarely a common backend need it doesn't already have a well-supported answer for. The tradeoff is a heavier runtime footprint and slower startup time compared to newer alternatives — historically a non-issue for long-running servers, but more relevant now that cloud platforms often bill by compute time and expect fast cold starts.
Quarkus
Quarkus was built by Red Hat specifically to address that startup-time and memory problem, with an explicit focus on cloud-native and containerized deployments. It uses many of the same familiar patterns (dependency injection, annotations) but does far more work at build time rather than at startup — including full support for compiling to a native executable via GraalVM, which can start in milliseconds instead of seconds and use a fraction of the memory of a traditional JVM app.
@Path("/hello")
public class HelloResource {
@GET
public String hello() {
return "Hello, Quarkus!";
}
}Quarkus is the strongest choice when you're deploying many small services to Kubernetes and cold-start time or memory footprint directly affects cost, or when serverless-style Java functions are on the table.
Jakarta EE
Jakarta EE (the continuation of what was Java EE / J2EE, after Oracle transferred it to the Eclipse Foundation) is a set of standardized specifications — for REST APIs (JAX-RS), dependency injection (CDI), persistence (JPA), and more — rather than a single framework itself. Application servers like WildFly, Payara, and Open Liberty implement these specifications, and both Spring and Quarkus are influenced by (and partly compatible with) Jakarta EE standards.
Jakarta EE tends to show up in large, established enterprises — banks, insurance, government systems — that value vendor-neutral standards and long-term stability over the fastest-moving ecosystem. Code written against Jakarta EE specifications is meant to be portable between compliant application servers, in principle reducing lock-in to any one vendor.
Picking one
- Spring Boot — the safest default for most new projects: biggest community, most tutorials, most third-party integrations.
- Quarkus — reach for it when container startup time, memory footprint, or native compilation genuinely matter to your deployment target.
- Jakarta EE — you'll typically encounter it because an existing enterprise system already standardized on it, rather than choosing it fresh for a new greenfield project.
All three ultimately run on the same JVM and lean on the same core Java language you've learned throughout this course — the framework changes how you wire things together, not the fundamentals underneath.
Test what you just learned
4 quick questions. Get all of them right to unlock the next lesson.
You can take the quiz without an account — logging in just lets your result count toward your progress.