AWS Developer Tools Blog

The AWS SDK for Java 1.x will no longer support Java 7

The AWS SDK for Java currently maintains two major versions: 1.12.x and 2.x. Customers who use Java 8 or a newer version of Java may use either 2.x or 1.12.x of the SDK, and customers who use Java 7 may use 1.12.767 or earlier of the SDK.

In July 2022, Oracle ended the service life of Java 7. Additionally, Jackson, a key library that is used by the AWS SDK, no longer supports Java 7. Therefore, as of August 13, 2024, new versions of AWS SDK for Java 1.12.x will be released without support for Java version 7, and will instead require Java version 8 or newer. Beginning with version 1.12.768, customers that use Java 7 will receive “Java version mismatch” errors at runtime.

I’m currently using Java 7 and the AWS SDK for Java 1.12.x. What should I do?

We recommend moving to Java 8 or newer runtime and upgrading to the AWS SDK for Java 2.x. As of July 31, 2024, the AWS SDK for Java 1.x has entered maintenance mode. Moving forward, new versions of the AWS SDK for Java 1.x will only be released to address critical bug fixes and security issues. The AWS SDK for Java 1.x will not receive API updates for new or existing services, nor be updated to support new regions.

If you continue to use the AWS SDK for Java 1.x beyond version 1.12.767, you must upgrade to Java 8 in order to receive updates that address critical bug fixes and security issues. Here are some popular Java JDK choices:

  1. Amazon Corretto 8 or 11
  2. Red Hat OpenJDK 8 or 11
  3. Oracle JDK 8 or 11
  4. AdoptOpenJDK 8 or 11

If you are not ready to update to a newer Java version, then you can pin your AWS SDK for Java 1.x version to one that supports Java 7, which will continue to work. However, you will no longer receive new bug fixes or security fixes.

To pin a specific version, you will need to specify the version in your pom.xml or build.gradle file.

Why will Java 7 no longer be supported?

As previously noted, Oracle ended the service life of Java 7 in July 2022.

The AWS SDK for Java uses a small number of industry-standard dependencies. These dependencies provide the SDK with a larger feature set than would be possible if the functionality provided by these dependencies were to be developed in-house. Because Java 7 is now generally considered “unsupported”, many third party libraries have stopped supporting Java 7 as a runtime.

For example, Jackson, a popular library for JSON serialization, is used by the AWS SDK for Java as well as many other libraries in the Java ecosystem. In November 2022, portions of the Jackson library that are used by the AWS SDK stopped supporting Java 7. At that time, too many AWS customers would have been broken by removal of support for Java 7, and Jackson was too ingrained in the SDK’s public APIs to be removed without breaking a different set of customers. The AWS SDK for Java team froze the version of Jackson that they used and made sure that the Jackson features used by the SDK were not affected by known security issues.

We have heard from customers that the old version of Jackson in their dependency graph is an issue. To improve customer experience, we will be raising the minimum Java version to Java 8 for the AWS SDK for Java 1.x and upgrading it to use a newer version of Jackson.

Feedback

As always, the AWS SDK for Java team welcomes bug reports, feature requests, and pull requests on the aws-sdk-java-v2 GitHub repository. Please share your feedback by creating a GitHub issue.