V Javě se velmi dbá na zpětnou kompatibilitu, takže nekompatibilita knihovny s novější verzí Javy není příliš častá, a většinou ji autoři rychle vyřeší. Ale nikde nemůžete čekat stoprocentní kompatibilitu, vždy se najde nějaký případ, kdy kód (třeba i nechtěně) závisí na konkrétní implementaci, která se mezi verzemi změní, i když kontrakt zůstane zachován. A pak se samozřejmě mezi verzemi mění i kontrakt.
V případě Javy ale můžete podobný problém řešit na úrovni knihoven. Třeba i takové Servlet API - chtěl byste použít verzi 3.0 a vše konfigurovat anotacemi, ale některé frameworky na to ještě nejsou připravené a vyžadují konfiguraci ve web.xml.
Problém u Pythonu 3 je spíš v tom, že je to nárazová velká změna. Pro spoustu projektů by to znamenalo příliš mnoho úprav, takže zůstávají u verze 2, čímž se zase snižuje všeobecná motivace přejít na trojku.
Java je spätne kompatibilná tuším od verzie 1.2, preto jej každé nové rozšírenie spôsobuje plno problémov.
WTF?
Předpokládám, že to bylo myšleno tak, že přidání každé nové vlastnosti do Javy (generiky, anotace, lambda výrazy) je složité.