Slide 1

Slide 1 text

Sean Sullivan January 18, 2018 AWS User Group Albany NY AWS SDK for Java version 2.0

Slide 2

Slide 2 text

Thank you CommerceHub

Slide 3

Slide 3 text

software engineer 21 years on the JVM Portland Oregon back office systems Hudson’s Bay Company About me

Slide 4

Slide 4 text

Agenda Hudson’s Bay Company SDK for Java • version 1.x • version 2.x Scala and AWS

Slide 5

Slide 5 text

https://en.wikipedia.org/wiki/Hudson%27s_Bay_Company

Slide 6

Slide 6 text

Toronto NYC Albany

Slide 7

Slide 7 text

saksfifthavenue.com saksoff5th.com lordandtaylor.com gilt.com thebay.com

Slide 8

Slide 8 text

gilt.com

Slide 9

Slide 9 text

gilt.com

Slide 10

Slide 10 text

Web Checkout Android Checkout iPhone Checkout Checkout service

Slide 11

Slide 11 text

AWS SDK for Java

Slide 12

Slide 12 text

SDK v2 announced June 2017 @awsforjava

Slide 13

Slide 13 text

“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

Slide 14

Slide 14 text

import java.util.concurrent.CompletableFuture; DynamoDBAsyncClient client = DynamoDBAsyncClient.builder() .region(Region.US_WEST_2) .build(); CompletableFuture response = client.listTables(ListTablesRequest.builder().build()); CompletableFuture> tableNames = response.thenApply(ListTablesResponse::tableNames); tableNames.whenComplete((tables, err) -> { if (tables != null) { tables.forEach(System.out::println); } else { err.printStackTrace(); } }); SDK v2

Slide 15

Slide 15 text

Github projects aws-sdk-java aws-sdk-java-v2

Slide 16

Slide 16 text

SDK v2 Developer Preview

Slide 17

Slide 17 text

Pull Request

Slide 18

Slide 18 text

SDK v2 Maven artifacts

Slide 19

Slide 19 text

https://search.maven.org/

Slide 20

Slide 20 text

com.amazonaws aws-java-sdk-dynamodb 1.11.267 Maven dependencies SDK v1 software.amazon.awssdk dynamodb 2.0.0-preview7 SDK v2

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

SDK v2 programming API • Immutable clients and models • Enhanced pagination • Smart configuration merging • Forward-compatible enums • Streaming operations as first-class concepts

Slide 24

Slide 24 text

AWS SDK v2 in a Scala application?

Slide 25

Slide 25 text

val awsSdkVersion = "2.0.0-preview-7" "org.scala-lang.modules" %% "scala-java8-compat" % "0.8.0", "software.amazon.awssdk" % "cloudwatch" % awsSdkVersion, "software.amazon.awssdk" % "dynamodb" % awsSdkVersion build.sbt

Slide 26

Slide 26 text

import scala.compat.java8.FutureConverters._ import scala.collection.JavaConverters._ Foo.scala

Slide 27

Slide 27 text

FutureConverters?

Slide 28

Slide 28 text

java.util.concurrent.CompletableFuture scala.concurrent.Future

Slide 29

Slide 29 text

FutureConverters.scala

Slide 30

Slide 30 text

Gilt’s AWS CloudWatch Scala library

Slide 31

Slide 31 text

“A tiny Scala wrapper around AWS CloudWatch Java client”

Slide 32

Slide 32 text

https://github.com/gilt/gfc-aws-cloudwatch

Slide 33

Slide 33 text

how to migrate gfc-aws-cloudwatch from SDK v1 to SDK v2 ?

Slide 34

Slide 34 text

https://github.com/ gilt/gfc-aws- cloudwatch/pull/8/ files

Slide 35

Slide 35 text

Conclusion SDK v1 — production ready SDK v2 — coming soon github.com/aws twitter.com/awsforjava

Slide 36

Slide 36 text

The end

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

Bonus material

Slide 39

Slide 39 text

“Developing Applications on AWS in the JVM” AWS re:Invent 2017

Slide 40

Slide 40 text

https://www.slideshare.net/AmazonWebServices/ dev205developing-applications-on-aws-in-the-jvm