Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS SDK for Java version 2.0 - DAWSCON 2019

sullis
January 11, 2019

AWS SDK for Java version 2.0 - DAWSCON 2019

DAWSCON 2019
Dawson College
Montreal Canada
January 11, 2019

sullis

January 11, 2019
Tweet

More Decks by sullis

Other Decks in Technology

Transcript

  1. Agenda Hudson’s Bay Company SDK for Java • version 1.x

    • version 2.x Migrating code from V1 to V2
  2. “Under the hood, we use an HTTP client built on

    top of Netty to make the non- blocking HTTP call” “first class support for non-blocking I/O in our async clients” source: AWS Developer Blog
  3. “The AWS SDK for Java 2.0 asynchronous client methods return

    CompletableFuture objects” source: SDK V2 Developer Guide
  4. import java.util.concurrent.CompletableFuture; DynamoDBAsyncClient client = DynamoDBAsyncClient.builder() .region(Region.US_WEST_2) .build(); CompletableFuture<ListTablesResponse> response

    = client.listTables(ListTablesRequest.builder().build()); CompletableFuture<List<String>> tableNames = response.thenApply(ListTablesResponse::tableNames); tableNames.whenComplete((tables, err) -> { if (tables != null) { tables.forEach(System.out::println); } else { err.printStackTrace(); } }); SDK v2
  5. <dependency> <groupId>com.amazonaws<groupId> <artifactId>aws-java-sdk-dynamodb</artifactId> <version>1.11.481</version> </dependency> Maven dependencies SDK v1 <dependency>

    <groupId>software.amazon.awssdk<groupId> <artifactId>dynamodb</artifactId> <version>2.3.0</version> </dependency> SDK v2
  6. import com.amazonaws.services.cloudwatch.AmazonCloudWatchClient; import com.amazonaws.services.cloudwatch.AmazonCloudWatchClientBuilder; import com.amazonaws.services.cloudwatch.model.MetricDatum; import com.amazonaws.services.cloudwatch.model.PutMetricDataRequest; Java packages

    SDK v1 import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClient; import software.amazon.awssdk.services.cloudwatch.model.MetricDatum; import software.amazon.awssdk.services.cloudwatch.model.PutMetricDataRequest; SDK v2
  7. distinct Maven artifact names distinct Java package names SDK v2

    and SDK v1 can co-exist in a Java application SDK v1 jar SDK v2 jar
  8. SDK v2 programming API • Immutable clients and models •

    Enhanced pagination • Smart configuration merging • Forward-compatible enums • Streaming operations as first-class concepts
  9. val awsSdkVersion = “2.3.0” "org.scala-lang.modules" %% "scala-java8-compat" % “0.9.0", "software.amazon.awssdk"

    % "cloudwatch" % awsSdkVersion, "software.amazon.awssdk" % "dynamodb" % awsSdkVersion build.sbt
  10. “AWS Secrets Manager Java caching client enables in-process caching of

    secrets for Java applications” aws-secretsmanager-caching-java
  11. Conclusion SDK v1 — production ready SDK v2 — production

    ready github.com/aws twitter.com/awsforjava