AWS Developer Tools Blog

The AWS SDK for Java 2.17 removes its external dependency on Jackson

We have released the AWS SDK for Java 2.17, which removes the SDK’s external dependency on the popular third-party JSON library, Jackson. This means that AWS SDK for Java 2.x no longer requires an external copy of Jackson-databind, Jackson-core, or Jackson-dataformat-cbor in order to function. This release does not change any of the public AWS SDK APIs.

Why was this change made?
Previously, updating the Jackson version used by the Java SDK meant that customer applications could potentially break because of backwards-incompatibilities between the old and new Jackson versions. Now, the SDK is using its own “shaded” copy of Jackson to ensure we can keep-up-to date with the latest Jackson performance, stability, and security improvements.

Will I have any issues upgrading to version 2.17 from previous 2.x versions?
Most of the SDK changes in version 2.17 are “under the hood”. In our testing, most customers did not encounter issues when they upgraded to the AWS SDK for Java 2.17 from an earlier 2.x version. The following changes may be noticed by a subset of customers:

SDK Footprint Changes
Because the SDK now includes its own “shaded” copy of Jackson, the footprint (total jar size) of the SDK will change. Customers who do not use Jackson outside of the SDK will see an approximate 1 MB jar size decrease. Customers use Jackson outside of the SDK will see an approximate 500 KB jar size increase, to account for the SDK’s internal copy of Jackson.

SDK Dependency Changes
Customer applications that use Jackson without declaring their own dependency on the library may no longer compile after upgrading to the SDK 2.17. If you find that your application no longer compiles due to missing Jackson packages or classes, you should add your own dependency on Jackson to correct the error. We also recommend configuring your project to use the maven-dependency-plugin, which will ensure you are explicitly declaring all dependencies that you are using.

If you have any questions or concerns, you can contact us on Github.