

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS SDK for Java 1.x と 2.x の違い
<a name="migration-whats-different"></a>

このセクションでは、アプリケーションをバージョン 1.x から AWS SDK for Java バージョン 2.x に変換するときに注意すべき主な変更点について説明します。

## パッケージ名の変更
<a name="mig-diff-package-name-change"></a>

SDK for Java 1.x から SDK for Java 2.x への主な変更点は、パッケージ名の変更です。SDK 2.x ではパッケージ名が `software.amazon.awssdk` で始まりますが、SDK 1.x では `com.amazonaws` で始まります。

これらの同じ名前は、SDK 1.x から SDK 2.x までの Maven アーティファクトを区別します。SDK 2.x の Maven アーティファクトは `software.amazon.awssdk` groupId を使用しますが、SDK 1.x では `com.amazonaws` groupId を使用します。

SDK 2.x のアーティファクトのみを使用するプロジェクトの `com.amazonaws` 依存関係がコードに必要になる場合があります。その一例が、サーバーサイド AWS Lambdaで使用する場合です。これは、このガイドの前半の「[Apache Maven プロジェクトのセットアップ](setup-project-maven.md#modules-dependencies)」セクションで説明しました。

**注記**  
SDK 1.x のいくつかのパッケージ名には、`v2` を含みます。この場合の `v2` の使用は、通常、パッケージ内のコードがバージョン 2 のサービスで動作するように設定されていることを意味します。  
フルパッケージ名は `com.amazonaws` で始まるため、これらは SDK 1.x コンポーネントです。SDK 1.x のパッケージ名の例は次のとおりです。  
`com.amazonaws.services.dynamodbv2`
`com.amazonaws.retry.v2`
`com.amazonaws.services.apigatewayv2`
`com.amazonaws.services.simpleemailv2`

## プロジェクトへのバージョン 2.x の追加
<a name="adding-v2"></a>

Maven は、 AWS SDK for Java 2.x を使用するときに依存関係を管理するための推奨方法です。バージョン 2x のコンポーネントをプロジェクトに追加するには、SDK の依存関係で `pom.xml` ファイルを更新します。

**Example**  

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

<dependencies>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>dynamodb</artifactId>
    </dependency>
</dependencies>
```

プロジェクトをバージョン 2.x に移行するときに、[バージョン 1.x と 2.x を併用](migration-side-by-side.md)することもできます。

## イミュータブルな POJO
<a name="immutable-classes"></a>

クライアントとオペレーションリクエスト、および応答オブジェクトがイミュータブルになり、作成後に変更できなくなりました。リクエストあるいはレスポンス変数を再利用するには、新しいオブジェクトを構築してそれを割り当てる必要があります。

**Example 1.x でリクエストオブジェクトを更新する場合**  

```
DescribeAlarmsRequest request = new DescribeAlarmsRequest();
DescribeAlarmsResult response = cw.describeAlarms(request);

request.setNextToken(response.getNextToken());
```

**Example 2.x でリクエストオブジェクトを更新する場合**  

```
DescribeAlarmsRequest request = DescribeAlarmsRequest.builder().build();
DescribeAlarmsResponse response = cw.describeAlarms(request);

request = DescribeAlarmsRequest.builder()
        .nextToken(response.nextToken())
        .build();
```

## セッターメソッドとゲッターメソッド
<a name="setter-getter-methods"></a>

 AWS SDK for Java 2.x では、セッターメソッド名に `set`または `with` プレフィックスは含まれません。たとえば、`*.withEndpoint()` は現在 `*.endpoint()` です。

ゲッターメソッド名は `get` プレフィックスを使用しません。

**Example 1.x でセッターメソッドを使用する場合**  

```
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard()
        		.withRegion("us-east-1")
        		.build();
```

**Example 2.x でセッターメソッドを使用する場合**  

```
DynamoDbClient client = DynamoDbClient.builder()
        		.region(Region.US_EAST_1)
        		.build();
```

**Example 1.x でゲッターメソッドを使用する場合**  

```
String token = request.getNextToken();
```

**Example 2.x でゲッターメソッドを使用する場合**  

```
String token = request.nextToken();
```

## モデルクラス名
<a name="model-classname-changes"></a>

サービスレスポンスを表すモデルクラス名は、v2 では v1 で使用される `Response` ではなく、`Result` で終わります。

**Example v1 でのレスポンスを表すクラス名**  

```
CreateApiKeyResult
AllocateAddressResult
```

**Example v2 でのレスポンスを表すクラス名**  

```
CreateApiKeyResponse
AllocateAddressResponse
```

## ライブラリとユーティリティの移行状況
<a name="migration-libraries-utilities"></a>

### SDK for Java ライブラリとユーティリティ
<a name="migration-java-sdk-libs-utils"></a>

次の表は、SDK for Java のライブラリとユーティリティの移行ステータスを示しています。


| バージョン 1.12.x の名前 | バージョン 2.x の名前 | バージョン 2.x 以降 | 
| --- | --- | --- | 
| DynamoDBMapper | [DynamoDbEnhancedClient](dynamodb-enhanced-client.md) | 2.12.0 | 
| ウェイター | [ウェーター](waiters.md) | 2.15.0 | 
| CloudFrontUrlSigner、CloudFrontCookieSigner | [CloudFrontUtilities](https://aws.amazon.com/blogs/developer/amazon-cloudfront-signed-urls-and-cookies-are-now-supported-in-aws-sdk-for-java-2-x/) | 2.18.33 | 
| TransferManager | [S3TransferManager](transfer-manager.md) | 2.19.0 | 
| EC2 メタデータクライアント |  [EC2 メタデータクライアント](examples-ec2-IMDS.md)  | 2.19.29 | 
| S3 URI パーサー |  [S3 URI パーサー](https://aws.amazon.com/blogs/devops/s3-uri-parsing-is-now-available-in-aws-sdk-for-java-2-x/)  | 2.20.41 | 
| IAM Policy Builder | [IAM Policy Builder](feature-iam-policy-builder.md) | 2.20.126 | 
| S3 イベント通知 | [S3 イベント通知](examples-s3-event-notifications.md#s3-event-notification-read) | 2.25.11  | 
| Amazon SQS のクライアント側のバッファリング | [Amazon SQS の自動リクエストバッチ処理 API](sqs-auto-batch.md) | 2.28.0 | 
| 進行状況のリスナー | 進行状況のリスナー | [未リリース](https://github.com/aws/aws-sdk-java-v2/issues/25) | 

### 関連ライブラリ
<a name="migration-other-sdks"></a>

次の表は、個別にリリースされているものの、SDK for Java 2.x で動作するライブラリの一覧です。


| SDK for Java のバージョン 2.x で使用されている名前 | バージョン以降 | 
| --- | --- | 
|  [Amazon S3 暗号化クライアント](https://docs.aws.amazon.com/amazon-s3-encryption-client/latest/developerguide/what-is-s3-encryption-client.html)  |  3.0.01  | 
| [AWS Database Encryption SDK for DynamoDB](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/ddb-java.html) | 3.0.02 | 

#### 1Amazon S3 暗号化クライアント
<a name="migration-s3-encryption-sdk"></a>

Amazon S3 の暗号化クライアントは、次の Maven 依存関係を使用して利用できます。

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

#### 2AWS DynamoDB 用データベース暗号化 SDK
<a name="migration-ddb-encryption-sdk"></a>

 AWS Database Encryption SDK for DynamoDB は、次の Maven 依存関係を使用して V2 で使用できます。

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

Java SDK の v1 で動作する DynamoDB の暗号化ライブラリに関する情報は、「[AWS Database Encryption SDK デベロッパーガイド](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/java.html)」 (「*Amazon DynamoDB Encryption Client for Java*」) および [GitHub](https://github.com/aws/aws-dynamodb-encryption-java) を参照してください

Java SDK の V2 と互換性のある DynamoDB 暗号化ライブラリの詳細については、「[AWS Database Encryption SDK デベロッパーガイド](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/ddb-java.html)」と [GitHub ソース](https://github.com/aws/aws-database-encryption-sdk-dynamodb)を参照してください。

暗号化ライブラリに関する移行情報は、「[AWS Database Encryption SDK デベロッパーガイド](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/ddb-java-migrate.html)」を参照してください。

### ライブラリとユーティリティの移行の詳細
<a name="migrate-libs-utils-details"></a>
+ [Transfer Manager](migration-s3-transfer-manager.md)
+ [EC2 メタデータユーティリティ](migration-imds.md)
+ [CloudFront の事前署名](migration-cloudfront-presigning.md)
+ [S3 URI 解析](migration-s3-uri-parser.md)
+ [DynamoDB マッピング/ドキュメント API](migration-ddb-mapper.md) 
+ [IAM Policy Builder](migration-iam-policy-builder.md)
+ [S3 イベント通知](migration-s3-event-notification.md)
+ SDK メトリクスの公開 ([1.x ドキュメント](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/generating-sdk-metrics.html)、[2.x ドキュメント](metrics.md))