$30 off During Our Annual Pro Sale. View Details »

AWS SDK for Java version 2.0 - Portland Oregon

sullis
August 28, 2018

AWS SDK for Java version 2.0 - Portland Oregon

Portland Java User Group
Portland Oregon
August 28, 2018

sullis

August 28, 2018
Tweet

More Decks by sullis

Other Decks in Technology

Transcript

  1. Sean Sullivan
    August 28, 2018
    Portland Java User Group
    AWS SDK for Java
    version 2.0

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. Toronto
    NYC

    View Slide

  6. saksfifthavenue.com
    saksoff5th.com
    lordandtaylor.com
    thebay.com

    View Slide

  7. saksfifthavenue.com

    View Slide

  8. walmart.com

    View Slide

  9. HBC Tech stack

    View Slide

  10. Web
    Checkout
    Android
    Checkout
    iPhone
    Checkout
    Checkout
    service

    View Slide

  11. AWS SDK for Java

    View Slide

  12. SDK v2
    announced
    June 2017
    @awsforjava

    View Slide

  13. “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

    View Slide

  14. 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

    View Slide

  15. Github projects
    aws-sdk-java aws-sdk-java-v2

    View Slide

  16. SDK v2
    Developer Preview

    View Slide

  17. Pull Request

    View Slide

  18. $ cd aws-sdk-java-v2
    $ git log | grep 'Author: Sean Sullivan' | wc -l
    39

    View Slide

  19. SDK v2
    Maven artifacts

    View Slide

  20. https://search.maven.org/

    View Slide


  21. com.amazonaws
    aws-java-sdk-dynamodb
    1.11.397

    Maven dependencies
    SDK v1

    software.amazon.awssdk
    dynamodb
    2.0.1

    SDK v2

    View Slide

  22. 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

    View Slide

  23. 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

    View Slide

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

    View Slide

  25. AWS SDK v2
    in a Scala
    application?

    View Slide

  26. val awsSdkVersion = “2.0.1"
    "org.scala-lang.modules" %% "scala-java8-compat" % “0.9.0",
    "software.amazon.awssdk" % "cloudwatch" % awsSdkVersion,
    "software.amazon.awssdk" % "dynamodb" % awsSdkVersion
    build.sbt

    View Slide

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

    View Slide

  28. FutureConverters?

    View Slide

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

    View Slide

  30. FutureConverters.scala

    View Slide

  31. gfc-aws-cloudwatch

    View Slide

  32. “A tiny Scala wrapper
    around AWS CloudWatch
    Java client”
    gfc-aws-cloudwatch

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  37. The end

    View Slide

  38. View Slide

  39. Bonus material

    View Slide

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

    View Slide

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

    View Slide