Azure storage SDK for java V10 (その1) - Azureの小ネタ (改) で言及したように、V8から大幅変更されたV10がリリースされてから約一年たちましたが、V10系(現在はV11)の失敗を認めて、V12系を新規に立ち上げるようです。
V10を試してみたとき使いにくいSDKだなとは思っていたのですが、 こんな Issue まで立てられるしまつ。 This API is useless (v10) · Issue #432 · Azure/azure-storage-java
そして以下のようなリリースを見つけました。(この記事執筆時点で5 days ago なので、そこそこ早く見つけた感)
azure-storage-java/V12 Upgrade Story.md at master · Azure/azure-storage-java
そもそもV8では
そのそもV8ではBlob/Queue/Tableなどすべての機能が入っておりフィットプリントの大きさや、スレッドセーフ、オブジェクトの不変性、同期APIベースなどが問題になりV10への移行が決定したわけですが、V10では少々やり過ぎて、ホントにREST APIに薄い皮が被ったラッパーAPIと化した感じでしたし、非同期APIしかなかったし。
V10になって
先ほどの文書を多少意訳しますと以下のような感じです。
- 大規模なアプリでのネットワーク不安定 Rx-Netty実装の結果
- 同期APIの非サポート
- 扱いにくく、直感的でな設計(クラス)
- 利便性の欠如(まあ、SDKは便利なAPIをサポートしてなんぼという気もしますが、コンテナのexistsメソッドもなかったですし)
V12では
V12ではこれらを反映して、同期、非同期の両APIサポート、フレームワークライブラリ変更(RxJavaからReactor、okhttp から Reactor-Netty などなど。
その他、色々と反省の弁が書かれていますので、ぜひご一読を(Google翻訳で普通に読める感じに翻訳されますw)
ライブラリは既に公開されていますので、例によってコンテナ作ってファイルをアップロードするサンプルの破片など。名前空間は、com.azure
に変更されてます。MavenのGroupIdもcom.microsoft.azure
からcom.azure
へ。
SharedKeyCredential creds = new SharedKeyCredential(accountName, key); StorageClient client = new StorageClientBuilder() .credential(creds) .endpoint("https://" + accountName + ".blob.core.windows.net").buildClient(); ContainerClient containerClient = client.getContainerClient("hoge"); if (containerClient.exists().value() == false) { containerClient.create(); } BlockBlobClient blobClient = containerClient.getBlockBlobClient("blob.txt"); blobClient.uploadFromFile("c:/temp/a.pdf");
ちなみに、V8系, V10系はともにメンテナンスは継続されるとのこと。ではでは。
[追加]
ソースのありか。READMEにサンプルが書かれてます。
azure-sdk-for-java/sdk/storage/azure-storage-blob at master · Azure/azure-sdk-for-java · GitHub