AWS SDK for Kotlin 和 AWS SDK for Rust 上线!

亚马逊云科技宣布其AWSSDK全面支持Kotlin和Rust,为开发者提供符合各自语言特性的SDK,包括DSL构建器、协程和多平台支持。新SDK针对Android和现代Rust特性设计,提升开发效率和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

8384726bebd678384094cd0fed9cd94a.gif

AWS SDK for Kotlin 和 AWS SDK for Rust 上线!

编译 |梦依丹  翻译工具 | ChatGPT     

出品 | CSDN(ID:CSDNnews)

11月 27 日和 28 日,亚马逊云科技官博分别推送了《Announcing general availability of the AWS SDK for Kotlin》和《Announcing general availability of the AWS SDK for Rust》两篇博文,宣布全面推出适用于 Kotlin 和 Rust 的 SDK。

作为两门年轻的编程语言,Kotlin 和 Rust 增势喜人,在最新发布的 TIOBE 11 月编程语言排行榜中,Kotlin 已跃居 15 位,Rust 成功进入 TOP 20 的位置。

2321a55a295801df7d8ee3b68acee403.png

d945958913a44e201bdd2ca4f61b2cb7.png

亚马逊云科技推出全面支持 Kotlin 的 SDK

亚马逊云科技从头开始设计了 Kotlin SDK,为开发者提供符合 Kotlin 语言习惯的体验,包括领域特定语言(DSL)构建器和使用协程进行异步亚马逊云科技服务调用的支持。今天的发布使开发人员可以针对 JVM 平台或 Android API Level 24+ 进行开发,未来还将支持其它平台,比如 Kotlin/Native。

在本文中,我们将介绍SDK提供的关键功能,包括DSL构建器、协程支持、分页、等待器、可插拔的HTTP层等等。

详情可参考支持路线图:https://github.com/awslabs/aws-sdk-kotlin/projects/2

为何选择Kotlin?

亚马逊云科技为何会选择从头设计 Kotlin SDK 呢?毕竟,Kotlin 可以轻松创建混合代码库,并允许开发者从 Kotlin 调用 Java 代码。已经使用 Kotlin 开发的现有亚马逊云科技客户已经以这种方式使用了 AWS SDK for Java。然而,他们相信客户将从一个专门为 Kotlin 打造的 SDK 中受益。

首先,Kotlin 提供的不仅仅是 Java 的互操作性,还包括空安全、协程、扩展函数和智能转换等更多功能。他们希望提供一个充分发挥该语言优势、符合 Kotlin 开发者习惯的 SDK。

其次,自 2019 年以来,Android 移动开发一直以 Kotlin 为主导。开发者应该能够获得一个现代化的 SDK,支持所有亚马逊云科技服务。这就是为什么 AWS SDK for Kotlin 将 Android API 24+ 作为一流目标支持的原因。实际上,AWS Amplify for Android v2 是基于 AWS SDK for Kotlin 构建的。

最后,Kotlin 并不仅限于 JVM 平台。Kotlin 多平台使开发者能够编写针对JVM、本地二进制文件(Linux、Windows、macOS和iOS)、JavaScript 和 WASM 的 Kotlin 代码。该 SDK 从一开始就作为一个多平台库开发,并且他们计划在将来支持其他目标平台。

惯用的 Kotlin

AWS SDK for Kotlin 提供了遵循类型安全构建器模式的 DSL,用于创建请求。

下面的示例展示了如何使用该 SDK 创建一个 Amazon DynamoDB 表:

DynamoDbClient.fromEnvironment().use { ddb ->
    ddb.createTable {
        tableName = "movies"


        attributeDefinitions = listOf(
            AttributeDefinition {
                attributeName = "year"
                attributeType = ScalarAttributeType.N
            },
            AttributeDefinition {
                attributeName = "title"
                attributeType = ScalarAttributeType.S
            }
        )
        
        keySchema = listOf(
            KeySchemaElement {
                attributeName = "year"
                keyType = KeyType.Hash
            },
            KeySchemaElement {
                attributeName = "title"
                keyType = KeyType.Range
            }
        )


        provisionedThroughput {
            readCapacityUnits = 10
            writeCapacityUnits = 10
        }
    }
}

有关 AWS SDK for Kotlin  的详细介绍,可以参考亚马逊云科技官网:https://aws.amazon.com/cn/blogs/developer/aws-sdk-for-kotlin-ga/

ef95e67239e43e59a48080e9fe78e83c.png

亚马逊云科技推出全面支持 Rust 的 SDK

除了 Kotlin,亚马逊云科技还推出了AWS SDK for Rust。

官博写道:

  • 该 SDK 提供了符合惯用方式、类型安全的 API,同时充分发挥了 Rust 语言的性能、可靠性和生产力等优势。

  • 该 SDK 支持现代化的 Rust 语言特性,如异步/等待、非阻塞 IO 和构建器。它提供对 300 多个亚马逊云科技服务的访问,每个服务都有自己的 crate。

  • 该 SDK 默认使用合理的默认设置,但也可通过扩展进行个性化定制,以适应用户的特定用例。

  • 该 SDK 还具有模块化的特性,允许用户仅为所使用的服务编译 crate。此外,该 SDK 还经过优化,具有快速高效的特性。

  • 使用 Rust SDK,用户可以快速地在 Amazon Simple Storage Service(Amazon S3)、Amazon Elastic Compute Cloud(Amazon EC2)和 Amazon DynamoDB 之间传输数据。

使用 AWS SDK for Rust 入门

开发者可以通过 crates.io 访问该 SDK。下面这个例子演示了如何使用 AWS SDK for Rust 与 DynamoDB 一起执行列出表的常见操作。此示例假设你已经安装了Rust和Cargo(如果尚未安装,可以按照这些说明安装Rust和Cargo)。

创建一个新的 Rust 项目 cargo:

cd <your-project-directory>
cargo new <name-of-your-new-rust-project>

如果你是首次使用 AWS SDK,请设置亚马逊云科技服务的凭证,官方建议使用短期凭证进行身份验证。

将 SDK crate 添加到依赖项,你已经创建了新的 Rust 项目,接下来将添加一些 SDK crate 和异步运行时。在你的新项目文件的[dependencies]下面添加以下行:Cargo.toml

[dependencies]
aws-config = { version = "1", features = ["behavior-version-latest"] }
aws-sdk-dynamodb = "1"
tokio = { version = "1", features = ["full"] }

以下是每个 crate 的功能说明:

aws-config:虽然不是必需的,但该 crate 使得创建 DynamoDB 客户端所需的配置变得容易。它将处理亚马逊云科技云服务凭证的获取,并提供有用的默认值;

aws-sdk-dynamodb:该 crate 提供了与用户希望交互的服务的客户端;

tokio:AWS SDK for Rust 实现异步 API 功能,官方推荐使用 Tokio 运行时,它在该 SDK 中得到了良好的支持。

使用 Rust SDK 列出 DynamoDB 表:

现在可以编写 主函数 main:

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let sdk_config = aws_config::load_from_env().await;
    let client = aws_sdk_dynamodb::Client::new(&sdk_config);
    let res = client
        .list_tables()
        .limit(10)
        .send()
        .await?;
    println!("Current DynamoDB tables: {:?}", res.table_names());
    Ok(())
}

运行 cargo:

cargo run

有关  AWS SDK for Rust 的详细介绍,可访问:https://aws.amazon.com/cn/blogs/developer/announcing-general-availability-of-the-aws-sdk-for-rust/

相关链接:

  • https://github.com/awslabs/aws-sdk-kotlin

  • https://aws.amazon.com/cn/sdk-for-rust/

ea7db4428263113d43245f7efaa67768.gif

推荐阅读:

▶只让 ChatGPT 永远重复输出一个词,它就能告诉你很多秘密数据?!

▶小米公司:关于雷军“冰冷的 40 亿”纯属子虚乌有;谷歌 CEO 推迟 Gemini 模型发布;腾讯视频回应会员崩了|极客头条

▶从大模型落地金融业说起,生成式AI成为行业新助力

6e17b41ef71c0f116dacabd0781d1cd8.jpeg

<think>嗯,用户问的是如何确定编程语言架构的工具。首先,我需要弄清楚用户的具体需求是什么。他们可能在开始一个新项目,或者在优化现有项目时遇到了选择困难。用户可能不太清楚有哪些工具或方法可以帮助他们做出这些决策。 接下来,我得分解问题。确定编程语言架构其实是两个不同的任务,但又有联系。编程语言的选择会影响架构设计,反之亦然。所以,可能需要分别讨论这两个方面,然后看看有没有工具能同时处理两者。 关于编程语言的选择,常见的考虑因素包括项目需求、团队熟悉度、性能要求、生态系统支持等。比如,如果是Web开发,可能会考虑JavaScript、Python、Ruby;如果是系统级开发,可能选C++、Rust。工具方面,用户可能需要一些评估工具或者框架来辅助决策。比如,StackShare这样的平台可以查看其他公司使用的技术栈,或者像GitHub的流行度统计。 然后是架构设计。架构工具可能包括建模工具,比如UML工具,或者架构描述语言(ADL)。还有像Microsoft的Azure Architecture Center提供的参考架构,或者AWS的Well-Architected Framework。另外,一些工具如Lucidchart、Draw.io可以用来绘制架构图,而更专业的工具比如Enterprise Architect、Visual Paradigm支持更复杂的建模。 用户可能还关心如何将两者结合起来,比如某些工具是否能在选择语言后推荐合适的架构模式。或者是否有工具能分析现有代码库,建议架构改进。例如,NDepend可以分析.NET代码的结构,帮助识别架构问题。类似地,SonarQube可以检查代码质量,间接影响架构决策。 另外,用户可能对自动化工具感兴趣,比如通过问卷或AI推荐系统。例如,某些平台通过输入项目需求,自动生成技术栈建议。或者像Google的决策树方法,根据特定条件逐步缩小选择范围。 可能存在的误区是,用户以为有一个万能的工具可以直接给出答案,但实际上这些决策往往需要结合经验具体场景。因此,工具更多是辅助,提供数据参考,最终决策还需人工判断。 需要验证用户是否了解基本的选择因素,或者是否需要先介绍这些因素再推荐工具。比如,先解释选择编程语言时需要考虑性能、开发速度、社区支持等因素,再介绍工具如何帮助评估这些因素。 总结下来,回答的结构应该是先分步骤讲解如何确定编程语言架构,然后分别介绍对应的工具,最后可能结合案例说明工具的使用。确保用户理解工具的作用是辅助而非替代决策,强调结合实际需求团队情况进行选择。</think>确定编程语言的工具方法: 1. **需求匹配工具** - **StackShare**:可搜索类似项目的技术栈案例(如"社交平台后端"会显示常用语言框架) - **GitHub Topics**:通过热门仓库标签(如`machine-learning`)观察主流语言选择 2. **特性对比工具** - **Rosetta Code**:对比不同语言实现相同功能的代码差异(如`rosettacode.org/wiki/Sorting_algorithms`) - **TIOBE Index**:查看语言流行度趋势(长期维护性参考) 3. **决策框架** - **Google决策树**:通过关键问题逐步筛选: ``` 是否需要高性能? → 是 → 选C++/Rust 是否需要快速迭代? → 是 → 选Python/JavaScript ``` - **项目类型匹配表**: ``` | 移动应用 | Kotlin(Swift)/Flutter(Dart) | | 数据科学 | Python/R | | 区块链 | Solidity/Rust | ``` 确定系统架构的工具方法: 1. **可视化建模工具** - **PlantUML**:通过代码生成架构图(示例): ```plantuml @startuml [前端] -> [API网关] : HTTP请求 [API网关] --> [认证服务] : JWT验证 [API网关] --> [订单服务] : 负载均衡 @enduml ``` - **C4 Model**:分层架构描述工具(Context/Container/Component/Code) 2. **云架构设计工具** - **AWS Architecture Icons**:官方图标库(含Visio/Axure版本) - **Cloudcraft**:自动生成云架构成本估算图 3. **代码反向工程工具** - **Code2Flow**:将源代码自动转换为调用流程图 - **Dependency-Cruiser**:分析JavaScript/TypeScript模块依赖 **典型工作流示例**: 1. 在**GitHub Trending**发现某AI项目多用Python 2. 用**CodeScene**分析其代码健康度 3. 通过**Diagrams.net**绘制初步架构草图 4. 使用**Serverless Framework**验证无服务器架构可行性 5. 通过**k6**进行负载测试验证架构合理性 **关键原则**: - 优先选择团队熟悉的语言(减少学习成本) - 架构需满足`CAP定理`中的业务侧重(如电商优先一致性,社交网络优先可用性) - 使用`架构决策记录(ADR)`文档化关键选择(模板示例): ``` ## 选择Python而非Java的原因 - 需求:快速实现ML原型 - 权衡:牺牲了类型安全但获得更短开发周期 - 影响:需加强单元测试覆盖率 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CSDN资讯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值