Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS SDK for Java version 2 - NYJavaSIG 2019-11-21
Search
sullis
November 21, 2019
Programming
0
120
AWS SDK for Java version 2 - NYJavaSIG 2019-11-21
AWS SDK for Java version 2.x
NY JavaSIG
November 21, 2019
#nyjavasig
#awscloud
#awssdk
#java
sullis
November 21, 2019
Tweet
Share
More Decks by sullis
See All by sullis
Dependency Management for Java - Seattle 2025-11-18
sullis
0
38
Dependency Management for Java - Portland - 2025-11-04
sullis
0
22
Dependency management for Java applications 2025-09-11
sullis
0
33
S3 NYC Iceberg meetup 2025-07-10
sullis
0
53
Amazon S3 Chicago 2025-06-04
sullis
0
130
Amazon S3 Boston 2025-05-07
sullis
0
100
Netty ConFoo Montreal 2025-02-27
sullis
0
150
GitHub Actions ConFoo Montreal 2025-02-26
sullis
0
100
Netty Portland Java User Group 2025-02-18
sullis
0
38
Other Decks in Programming
See All in Programming
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
180
Feature Toggle は捨てやすく使おう
gennei
0
250
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
7
3k
条件判定に名前、つけてますか? #phperkaigi #c
77web
2
690
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
330
AI 開発合宿を通して得た学び
niftycorp
PRO
0
160
今年もTECHSCOREブログを書き続けます!
hiraoku101
0
120
API Platformを活用したPHPによる本格的なWeb API開発 / api-platform-book-intro
ttskch
1
150
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
150
生成 AI 時代のスナップショットテストってやつを見せてあげますよ(α版)
ojun9
0
300
DevinとClaude Code、SREの現場で使い倒してみた件
karia
1
1.1k
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
570
Featured
See All Featured
AI: The stuff that nobody shows you
jnunemaker
PRO
3
470
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
New Earth Scene 8
popppiees
1
1.8k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
480
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
490
4 Signs Your Business is Dying
shpigford
187
22k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Chasing Engaging Ingredients in Design
codingconduct
0
150
Being A Developer After 40
akosma
91
590k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
89
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
64
52k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
240
Transcript
Sean Sullivan November 21, 2019 NY JavaSIG AWS SDK for
Java version 2.x
software engineer Portland Oregon Java Scala About me
Agenda SDK for Java 2.x SDK internals Migrating from v1
to v2 Scala and SDK v2
AWS SDK for Java
SDK v2 announced June 2017 @awsforjava
“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
“The AWS SDK for Java 2.0 asynchronous client methods return
CompletableFuture objects” source: SDK v2 Developer Guide
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
Github projects aws-sdk-java aws-sdk-java-v2
SDK v2
Pull Request
SDK v2 Maven artifacts
https://search.maven.org/
<dependency> <groupId>com.amazonaws<groupId> <artifactId>aws-java-sdk-dynamodb</artifactId> <version>1.11.679</version> </dependency> Maven dependencies SDK v1 <dependency>
<groupId>software.amazon.awssdk<groupId> <artifactId>dynamodb</artifactId> <version>2.10.20</version> </dependency> SDK v2
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
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
SDK v2 programming API • Immutable clients and models •
Enhanced pagination • Smart configuration merging • Forward-compatible enums • Streaming operations as first-class concepts
SDK internals
<slf4j.version>1.7.28</slf4j.version> <jackson.version>2.10.0</jackson.version> <netty.version>4.1.42.Final</netty.version> Transitive dependencies
“To provide SDK support for the many services that AWS
owns, the AWS SDKs make extensive use of code generation” Code generation https://aws.amazon.com/blogs/developer/aws-sdk-for-java-2-x-released/
Why code generation?
less boilerplate more consistency Why code generation?
class names parameter names method names exception names Consistency error
handling logging JSON serialization network I/O
AWS SDK for Java v2
JavaPoet AWS SDK for Java v2
Migrating code from v1 to v2
aws-secretsmanager-caching-java
https://github.com/aws/aws-secretsmanager-caching-java/
“AWS Secrets Manager Java caching client enables in-process caching of
secrets for Java applications” aws-secretsmanager-caching-java
aws-secretsmanager-caching-java is based on AWS SDK v1
https://github.com/aws/aws-secretsmanager-caching-java/issues/
how to migrate aws-secretsmanager- caching-java from SDK v1 to SDK
v2 ?
https://github.com/ aws/aws- secretsmanager- caching-java/pull/6
https://github.com/aws/aws-secretsmanager-caching-java/pull/6/files
https://github.com/aws/aws-secretsmanager-caching-java/pull/6/files
Scala and AWS SDK v2
val awsSdkVersion = “2.10.20” "org.scala-lang.modules" %% "scala-java8-compat" % “0.9.0", "software.amazon.awssdk"
% "cloudwatch" % awsSdkVersion, "software.amazon.awssdk" % "dynamodb" % awsSdkVersion build.sbt
import scala.compat.java8.FutureConverters._ import scala.collection.JavaConverters._
FutureConverters?
java.util.concurrent.CompletableFuture scala.concurrent.Future
FutureConverters.scala
migrating a Scala library from AWS SDK v1 to v2
“A tiny Scala wrapper around AWS CloudWatch Java client” gfc-aws-cloudwatch
https://github.com/gilt/gfc-aws-cloudwatch
https://github.com/ gilt/gfc-aws- cloudwatch/pull/8/ files
None
None
Conclusion SDK v1 — production ready SDK v2 — production
ready github.com/aws twitter.com/awsforjava
The end
None
Bonus material
“Hands-on in the AWS Java Ecosystem” AWS re:Invent 2018
“Developing Applications on AWS in the JVM” AWS re:Invent 2017
https://www.slideshare.net/AmazonWebServices/ dev205developing-applications-on-aws-in-the-jvm