On Thu, Oct 31, 2019 at 9:30 AM Mark Murphy <jmarkmurphy@xxxxxxxxx> wrote:
It was my impression that original Java won't run on modern JVM's because
somewhere around Java 4 or was it Java 2, there were significant breaking
changes such that you had to have a different JVM to run the new java vs.
the old java.
Not in the time frame you're thinking of. Java updates (until
relatively recently, more on that in a moment) have always been
designed to retain compatibility with old code. At Java 1.2 (which
would later be rebranded as the first of the "Java 2" versions) they
introduced an optional JIT compiler called HotSpot, but it could run
old code just fine, and it became the standard JVM at Java 1.3 (the
second "Java 2" version). The only way your old code could be broken
is if you used a name (for your own variables) that later became a
language keyword (such as strictfp, assert, or enum).
Interestingly, Java 9 (released in 2017) was a major overhaul, with a
lot of internal restructuring, and though what most people would
consider the "core language spec" was compatible with older versions,
there were some APIs that were no longer supported, and so Java 8 code
and earlier *could* break under Java 9. It's expected that a lot of
folks will stick with Java 8 as long as they very possibly can.
If you know the story of Python at all, the Java 8 to 9 update was
like an extremely mild and miniature Python 2 to 3. The developers of
Java have stated that they don't plan or foresee any more "major" new
versions. Java 9 ushered in their 6-month release cycle.
For geeks who want to read further:
https://stackoverflow.com/questions/16506411/was-there-ever-a-breaking-change-in-the-java-language-specification
https://www.theregister.co.uk/2019/03/07/java_developers_version_8/
John Y.
As an Amazon Associate we earn from qualifying purchases.