AI reviewers are four times worse at Java than at Go

The same thirteen models, the same harness, the same scoring. Mean recall on Go pull requests is 59.1%. On Java it is 15.1%. Every model shows the gap.

We expected models to vary. We did not expect the language to matter more than the model.

Across the thirteen models on the leaderboard, mean recall on Go pull requests is 59.1%. On Java it is 15.1%. That is not one model struggling. It is every model in the set, scored by the same judge, on pull requests drawn from the same kind of production repository.

The spread

LanguageMean recallBest modelWorst model
Go59.1%75.0%18.8%
TypeScript39.8%56.5%13.0%
Ruby36.0%50.0%15.0%
Python27.9%47.4%5.3%
Java15.1%23.5%5.9%

The best Java score in the whole set, 23.5% (two models tie there), is worse than the worst Go score of any model that cleared 20% overall, which sits at 50.0%. A model that looks competent on your Go services can be close to useless on your Java ones.

What we can and cannot say about why

The honest answer is that this benchmark measures the gap without explaining it. Three candidate explanations we cannot separate with the current data:

The Java pull requests in the corpus come from Keycloak, which is a large, old, framework-heavy codebase. The bugs human reviewers flagged there lean on contracts declared far from the diff, like a Javadoc promise that a method never returns null. Finding those requires reading code the diff does not touch.

Java as a language pushes behaviour into inheritance and annotation, so the relevant code is often several files away. The replay harness serves files on request, and a model that does not think to ask does not get them.

And it may simply be training distribution. We have no way to measure that from the outside.

What to do with this

If you are choosing a reviewer for a polyglot codebase, a single aggregate score hides this completely. A model at 40% overall could be at 60% on the half of your code written in one language and 15% on the other half.

The per-model pages break recall down by language, and the numbers above come from the same data. Check the language you actually write.

The caveat that matters

Thirty pull requests split across five languages means roughly six per language. That is a small sample, and the confidence interval on any single language cell is wide. The Go-versus-Java gap is large enough to survive that, at 3.9 times, but do not read the difference between Ruby and TypeScript as real.

FAQ

Is AI code review as good for Java as for other languages?

No. Java is the weakest language on this benchmark by far — mean recall is 15.1% on Java versus 59.1% on Go, a 3.9x gap that holds across every model tested.

What is the best AI code review model for Java?

The best Java score in the set is 23.5% (a tie between two models) — still worse than the worst Go score among models that cleared 20% overall (50.0%). Check a model's own per-language numbers rather than trusting its overall score for Java.

Which programming language is hardest for AI code review to handle?

Java, on this benchmark. Candidate reasons include Java pushing logic into inheritance and annotations away from the diff, and the Java corpus leaning on contracts declared elsewhere in the codebase — though the data can't fully isolate the cause.