Some language-level improvements are significant enough to get people excited (e.g. virtual threads).
And standard library improvements are pretty low-risk as well.
Some language-level improvements are significant enough to get people excited (e.g. virtual threads).
And standard library improvements are pretty low-risk as well.
1) The "new" module system. (Which is, IMO, way to hard to disable for legacy code)
2) Removing some old crypto support from the default provider. And removing even mire support when a "secure valudation" flag was set. Probably for the best, but still broke stuff.
Other than that, the only Java code that really feels legacy is:
A) Pre generic collections.
B) an overuse of design patterns (normally not a language issue, although there are still a few bad APIs in the standard library)
C) Long form classes where a lambda would suffice.
Given how much the language has changed, that's a pretty impressive list. And a day with a linter can modernize most of a codebase without much effort.