Java Community Controversial Opinions | Generated by AI
Question: What are some unpopular or controversial opinions in the Java programming community?
Answer:
Here are some genuinely unpopular (often flame-war-inducing) opinions that regularly get Java developers heated. These are held by significant minorities (or sometimes silent majorities) but are strongly opposed by the “official” Java orthodoxy or vocal parts of the community:
-
Checked exceptions were a failed experiment and should be abandoned.
Most experienced Java devs quietly hate them and work around them (wrapping in RuntimeException, declaring genericthrows Exception, etc.). Saying this out loud still triggers many old-school folks who defend the original design. -
Lombok is an anti-pattern and has no place in serious codebases.
Despite its massive popularity, a vocal group insists that @Data, @Builder etc. create “magic” that obscures what code is actually generated, breaks IDE debugging, and makes onboarding harder. -
Spring Boot is bloated, overly magical, and most apps should just use plain Servlets or minimal frameworks (Micronaut, Quarkus, Helidon, or even Javalin).
Spring Boot dominates enterprise Java, so criticizing it as “XML hell but with annotations and starter-POMs” is heresy in many companies. -
Records (Java 14+) and especially “compact constructors” make the language look like Kotlin/scripting and erode Java’s verbosity advantage.
Some traditionalists genuinely dislike the increasingly concise syntax and want Java to stay explicitly verbose. -
Project Loom’s virtual threads are overhyped; most real-world performance problems are still in the database/IO layer, not thread counts.
A lot of people love Loom, but others argue the hype ignores that blocking I/O on virtual threads is still blocking and you’ll just create more connection-pool pressure. -
Java should never have added var (local variable type inference).
Even years after Java 10, a surprising number of devs (especially in finance/enterprise) banvarin their style guides and consider it unreadable. -
The module system (JPMS / Jigsaw) was a mistake and has brought almost no real benefit while breaking half the ecosystem.
Very common private opinion; publicly saying it still gets you shouted down by module evangelists. -
Getters and setters are mostly useless ceremony; public final fields + withers (or records) are better 95% of the time.
Goes against decades of “always encapsulate” dogma that is still taught everywhere. -
Maven is superior to Gradle in almost every way for real enterprise projects (better dependency resolution, more predictable, corporate-friendly).
Gradle won the popularity contest years ago, so defending Maven is now contrarian. -
Java is no longer a top-tier language and most new projects should pick Kotlin, Go, Rust, or even TypeScript instead.
The ultimate taboo in many Java shops, yet increasingly whispered as Java steadily loses mindshare among newer developers.
These opinions tend to be career-safe to hold privately but can start actual arguments if you voice them on Reddit, Stack Overflow, or at a Java conference.
References:
- https://www.reddit.com/r/java/comments/15×6×84/what_are_your_java_heresy_opinions/
- https://blog.softwaremill.com/java-controversies-that-never-die-2c3f5e8e9b8d
- https://twitter.com/lukaseder/status/1721518218360836520 (checked exceptions debate, ongoing since forever)