What's different between the Amazon SDK for Java 1.x and 2.x - Amazon SDK for Java 2.x
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

What's different between the Amazon SDK for Java 1.x and 2.x

This section describes the main changes to be aware of when converting an application from using the Amazon SDK for Java version 1.x to version 2.x.

Package name change

A noticeable change from the SDK for Java 1.x to the SDK for Java 2.x is the package name change. Package names begin with software.amazon.awssdk in SDK 2.x, whereas the SDK 1.x uses com.amazonaws.

These same names differentiate Maven artifacts from SDK 1.x to SDK 2.x. Maven artifacts for the SDK 2.x use the software.amazon.awssdk groupId, whereas the SDK 1.x uses the com.amazonaws groupId.

There are a few times when your code requires a com.amazonaws dependency for a project that otherwise uses only SDK 2.x artifacts. One example of this is when you work with server-side Amazon Lambda. This was shown in the Set up an Apache Maven project section earlier in this guide.

Note

Several package names in the SDK 1.x contain v2. The use of v2 in this case usually means that code in the package is targeted to work with version 2 of the service.

Since the full package name begins with com.amazonaws, these are SDK 1.x components. Examples of these package names in the SDK 1.x are:

  • com.amazonaws.services.dynamodbv2

  • com.amazonaws.retry.v2

  • com.amazonaws.services.apigatewayv2

  • com.amazonaws.services.simpleemailv2

Adding version 2.x to your project

Maven is the recommended way to manage dependencies when using the Amazon SDK for Java 2.x. To add version 2.x components to your project, update your pom.xml file with a dependency on the SDK.

<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.16.1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>dynamodb</artifactId> </dependency> </dependencies>

You can also use version 1.x and 2.x side-by-side as you migrate your project to version 2.x.

Immutable POJOs

Clients and operation request and response objects are now immutable and cannot be changed after creation. To reuse a request or response variable, you must build a new object to assign to it.

Example of updating a request object in 1.x
DescribeAlarmsRequest request = new DescribeAlarmsRequest(); DescribeAlarmsResult response = cw.describeAlarms(request); request.setNextToken(response.getNextToken());
Example of updating a request object in 2.x
DescribeAlarmsRequest request = DescribeAlarmsRequest.builder().build(); DescribeAlarmsResponse response = cw.describeAlarms(request); request = DescribeAlarmsRequest.builder() .nextToken(response.nextToken()) .build();

Setter and getter methods

In the Amazon SDK for Java 2.x, setter method names don’t include the set or with prefix. For example, *.withEndpoint() is now *.endpoint().

Getter method names do not use the get prefix.

Example of using setter methods in 1.x
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard() .withRegion("us-east-1") .build();
Example of using setter methods in 2.x
DynamoDbClient client = DynamoDbClient.builder() .region(Region.US_EAST_1) .build();
Example of using getter methods in 1.x
String token = request.getNextToken();
Example of using getter methods in 2.x
String token = request.nextToken();

Model class names

Model class names that represent service responses end with Response in v2 instead of Result that v1 uses.

Example of class names that represent a response in v1
CreateApiKeyResult AllocateAddressResult
Example of class names that represent a response in v2
CreateApiKeyResponse AllocateAddressResponse

Migration status of libraries and utilities

SDK for Java libraries and utilities

The following table lists the migration status of libraries and utilities for the SDK for Java.

Version 1.12.x name Version 2.x name Since version in 2.x
DynamoDBMapper DynamoDbEnhancedClient 2.12.0
Waiters Waiters 2.15.0
CloudFrontUrlSigner, CloudFrontCookieSigner CloudFrontUtilities 2.18.33
TransferManager S3TransferManager 2.19.0
EC2 Metadata client EC2 Metadata client 2.19.29
S3 URI parser S3 URI parser 2.20.41
IAM Policy Builder IAM Policy Builder 2.20.126
Amazon SQS Client-side Buffering Automatic Request Batching not yet released
Progress Listeners Progress Listeners not yet released

Related libraries

The following table lists libraries that are released separately but work with the SDK for Java 2.x.

Name used with version 2.x of the SDK for Java Since version
Amazon S3 Encryption Client 3.0.01
Amazon Database Encryption Client for DynamoDB 3.0.02

1The encryption client for Amazon S3 is available by using the following Maven dependency.

<dependency> <groupId>software.amazon.encryption.s3</groupId> <artifactId>amazon-s3-encryption-client-java</artifactId> <version>3.x</version> </dependency>

2The Amazon Database Encryption Client for DynamoDB is available by using the following Maven dependency.

<dependency> <groupId>software.amazon.cryptography</groupId> <artifactId>aws-database-encryption-sdk-dynamodb</artifactId> <version>3.x</version> </dependency>

Migration details for libraries and utilities