Java is my primary language for backend services. Mature ecosystem, strong tooling, and frameworks like Spring Boot and Quarkus make it productive for building production-grade APIs and microservices.
Tooling
IDE: IntelliJ IDEA — the standard for Java development. Excellent refactoring, code analysis, and framework support (Spring, Quarkus, Jakarta EE). The free Community edition covers most needs; Ultimate adds Spring-specific tooling and database tools.
Build: Gradle or Maven — Gradle is the least bad option; keep the build file focused on compile, test, and package only. See Build Systems for the full take.
Frameworks
Spring Boot — the dominant choice for enterprise Java. Convention over configuration, huge ecosystem, production-ready out of the box.
Quarkus — optimized for containers and GraalVM native compilation. Noticeably faster startup and lower memory footprint than Spring Boot. Worth considering for microservices running in Kubernetes.
Testing with JUnit
JUnit 5 is the standard testing framework. Combine with Mockito for mocking and AssertJ for readable assertions.
@Test
void shouldReturnGreeting() {
var service = new GreetingService();
assertThat(service.greet("Manfred")).isEqualTo("Hello, Manfred");
}
Spring Boot’s @SpringBootTest and @WebMvcTest slice annotations make integration testing straightforward without spinning up a full application context.