5 ms·
Java has legendary backwards compatibility and has had that since the first public release. That’s not going anywhere.
by koolba 8y ago
Java has legendary backwards compatibility and has had that since the first public release. That’s not going anywhere.
- unscaled 8y agoThis changed somewhat starting with Java 9. Quite a few libraries broke down due to deprecated classes finally being removed and the version format change. Java also has a considerable class of libraries and tools that tends to break on every major release: mocking frameworks, dependency injection libraries, annotation processors and everything heavily relying on bytecode generation. I'd say most Java projects contain at least one of these, so migrating to a newer Java is not just a matter of installing a new JDK and changing your JAVA_HOME.
- MBCook 8y agoJava nine is sort of a special situation because they finally turned off something that people were never supposed to do in the first place and they been warning people about for a very long time. My entire career has been as a Java developer, I’ve never had an issue updating Java to a newer version causing breakage. Upgrading third-party tools, like maven or various other things, can certainly do that. But I haven’t had it happen with Java.
- rhencke 8y agoI do wonder if that will be slowly changing under new ownership. Java 9 and 10 had some pretty risky changes, compared to the prior releases. Take a look at the migration guide. https://docs.oracle.com/javase/10/migrate/toc.htm#JSMIG-GUID-7744EF96-5899-4FB2-B34E-86D49B2E89B6 https://docs.oracle.com/javase/10/migrate/toc.htm#JSMIG-GUID... Usually you don't see sentences like 'For every tool and third-party library that you use, you may need to have an updated version that supports at least JDK 9.', nor 'Check the websites for your third-party libraries and your tool vendors for a version of each library or tool that’s designed to work on JDK 9 or 10.' as things to watch for in a Java release.
- MBCook 8y ago“Compared to previous releases“ is the issue there. They removed classes that they had been telling people not to use for... well... since they were put in. It had to happen someday. The fact that they let it go on for, what, most of two decades? That’s commitment to backwards compatibility. With the new module system they can make sure that this doesn’t happen again.
- EdwardDiego 8y agoMy main issue with the Java 9 upgrade was the separation of the javax.* apis into a separate module, but it was easily fixed with a Maven artifact.