Back compatiblity lost
Is the major cause of "legacy code" stuck on an old version of a language & platform tools
Unless the change to get software working on new version are quick and easy to implement, then management, with time pressure to add new features, have devs working on other software, will often make a choice to keep software on the old version as cannot spare time / resources. As the old version becomes more and more obsolete, then chances are port to latest and greatest version gets more and more difficult, so even more likely the legacy code languishes on old version.
Obviously other issues can creep in due to lack of upgrade (e.g. security / performance bugs due to being on old version)
Most language / development tool providers are guilty of this.
Full back compatibility might cause oracle (etc.) grief, but would ensure software was updated to use new versions.
Could be in the interest of Oracle etc.
Seen cases where rewrite for new version was so non trivial that decision was made to implement a new version (using different language and toolset) from scratch