With the release of Java 8 back in March 2014, many users have already upgraded. They can take advantage of new features such as:
There are many write-ups and tutorials that cover what’s new in Java 8. The Oracle Java 8 launch videos gathered knowledge together from many people directly involved in creating Java SE 8.
Rather than covering specific features, I would like to gather details that many software teams should understand as they work on projects.
Oracle Java SE major releases are updated for the public with bug fixes, security fixes, and minor updates for a period of at least 3 years before the release reaches end-of-public-updates (EoPU). Oracle Java SE commercial product releases are supported for an even longer period of time from initial release date, enabling IT managers and ISVs to plan their upgrades according to their individual business practices.
The release notes of major releases contain a compatibility guide about migration. Please consult the guide in addition to testing your program.
Upgrades can be controlled and done in pieces, rather than upgrading all environments at once. Start with developer systems, then test environments, then production systems.
Java versions are expected to be binary backwards-compatible. For example, JDK 8 can run code compiled by JDK 7 or JDK 6. It is common to see applications leverage this backwards compatibility by using components built by different Java version. A Compatibility Guide (explained later) exists for each major release to provide special mention when something is not backwards compatible.
Oracle provides thoroughly tested binaries across a number of platforms along with additional tools for management and monitoring.
The Oracle Java SE Support Roadmap identifies periods during which Oracle offers free (gratis) updates for a Java version.
| Oracle Java SE Version | General Availability | End of public updates notification | End of public updates |
|---|---|---|---|
| This copy only lists dates before its publication. See support roadmap for all current information. | |||
| 8 | March 2014 | (see roadmap) | (see roadmap) |
| 7 | July 2011 | March 2014 | (see roadmap) |
| 6 | Dec 2006 | Feb 2011 | Feb 2013 (maintenance releases through Java SE Advanced) |
| 5 | May 2004 | Apr 2008 | Oct 2009 |
| Users can purchase Oracle’s commercial Java SE offerings, which provide support and updates beyond the end of public updates. | |||
There are some general rules to deal with these timeframes:
Many application owners and developers begin their upgrade planning shortly after general availability of a major Java SE release. General availability is a time when changes and benchmarks stabilize a little, offering a more concrete understanding of, after upgrading, what will happen in production environments.
The first general availability release contains a special piece in its release notes: the Compatibility Guide. This compatibility guide provides information about what one might encounter when upgrading an application from a previous version, such as from JDK 6 to JDK 7 or from JDK 7 to JDK 8. Those skipping a version from JDK 6 straight to JDK 8 may want to consult the guide for JDK 7 in-between.
If reading the release notes causes an analysis paralysis, consider using your application in a test environment. Then go back to check the notes and you may have a better understanding of what to look for while reading.
In addition to the release notes, there are a large number of "What’s New" write-ups that showcase changes from a user perspective.
For Java SE 8, here are a few good articles that both describe and teach new features:
Two other presentations explicitly cover upgrading across major Java versions:
At present, both Java SE 7 and Java SE 8 are publicly updated per the Oracle Java SE Support Roadmap. The period of overlap allows thorough testing of both versions, with updates addressing issues that were identified. The current plan to debut Java 8 as the default on Java.com before the end of 2014 comes as a result of good testing: the Fedora project is switching their default, new versions of Scala will only run on Java 8, etc.
I encourage you to consider upgrading systems to use Java SE 8 and take advantage of speed, shorter code, and the other benefits that it provides.