I've done upgrades on absolutely massive codebases for java to JDK7 and JDK8 and have never had anything but minor issues. Very rarely does something break backwards compatibility.
- https://www.infoq.com/articles/converting-struts-2-part1
- https://www.infoq.com/articles/migrating-struts-2-part2
- https://www.infoq.com/articles/migrating-struts-2-part3
Granted, the "upgrading" situation has improved since then in the Java world, but it hasn't been always super nice in the past.