每个开发人员都应该知道的 7 个 Kotlin 库

最初,Kotlin 是作为 JVM(Java 虚拟机)的语言开发的,与 Java 的互操作性是其主要功能之一。这允许调用 Java 代码并使用现有的 Java 库。Java世界有大量的库,其中最常见的库在我之前的文章中已经讨论过了。

Kotlin 库提供使用语言功能的接口,如空安全性、默认和命名参数以及 DSL(域特定语言)。科特林的生态系统每年都在增长。在本文中,我们考虑了用 Kotlin 编写的最常见的库。

1. Kotlinx 协程

让我们从考虑三个官方库开始:、、 和 Ktor。它们由语言创建者开发和支持,在官方 Kotlin 文档中进行了描述,但未包含在标准库中。kotlinx.coroutineskotlinx.serialization

Kotlin 提供修饰符关键字,用于标记挂起函数,换句话说,标记协程。标准库仅提供基本协程 API。suspend

要以方便的方式编写具有异步性和并行性的代码,您需要使用 Kotlinx 协程库。它允许使用高级基元来编写并发代码、协程之间的通道、异常处理、互斥和执行组件。

2. Kotlinx序列化

Kotlin 不仅是一种JVM语言。Kotlin/JS 将代码转译为 JavaScript,可以在前端或节点上使用.js后端,Kotlin/Native 是本机二进制文件的编译器,Kotlin 多平台移动版(基于 Kotlin/Native)提供了在 Android 和 iOS 上使用单个代码的能力。前端、后端和移动应用需要使用序列化与其他组件进行交互。因此,像杰克逊或Gson这样的Java库不能用于编译或转译到非JVM平台的代码。

JetBrains是Kotlin的创造者,他开发了跨平台的Kotlinx.serialization库。它支持多种格式,例如 JSON、协议缓冲区和 CBOR。Kotlinx 序列化包括一个编译器插件、带有核心序列化 API 的运行时库以及其他运行时库。由于 Kotlinx 序列化在编译时开始工作,它有两个优点。首先,该库使用生成的代码来序列化对象而不是反射,这会对性能产生积极影响。其次,如果开发人员忘记将类标记为 ,它将在编译时捕获,而不是在运行时捕获。@Serializable

此外,与 Java 库相比,Kotlinx 序列化支持属性的默认值。

3. Ktor

通常,序列化对象通过 HTTP 协议通过网络传输。Ktor是一个轻量级的异步Web框架。在官方的柯特林文档中,Ktor 被推荐用于构建 HTTP 客户端和服务器。 杠杆 和 ,也可以在所有 Kotlin 平台上使用。但如果需要,可以将Jackson或 Gson 序列化用于 JVM 应用程序。Ktorkotlinx.coroutineskotlinx.serialization

Ktor分为几个库并支持插件,因此,如果您开发使用WebSockets的微服务或前端组件,则只能添加所需的依赖项。凭借框架的灵活性,这两种解决方案都将是轻量级的。此外,Ktor还为客户端和服务器端提供了测试引擎,减少了测试的执行时间。

4. Dokka

文档是开发应用程序的重要组成部分。就像爪哇中的爪哇一样,科特林使用与爪哇文档非常相似的KDoc文档语言。文档由Dokka工具生成。多卡同时支持柯特林中的 KDoc 和 Java 中的 JavaDoc,因此它可以为整个混合语言项目生成文档。多卡可以生成爪哇语、HTML 和标记格式的文档。

5. Mockk

Mockk最常见的模拟Java库。但是,在使用 Mockito 测试Kotlin代码时,您可能会遇到一些问题。例如,方法返回 ,因此我们不能将其用于 Kotlin 中的非空参数,因为 NPE 被抛出。此外,莫基托不支持科特林的其他语言功能。这就是为什么使用用 Kotlin 编写的库,尤其是针对 Kotlin 编写的库是最好的选择。notNullnull

Mockk 自然地提供模拟对象、枚举、扩展、顶级函数、协程、链式调用(包括分层形式)、私有方法和构造函数。与 Mockito 一样,它支持注释、部分模拟、实现多个接口的模拟以及捕获方法参数。Nothing

6. Android KTX

安卓开发者积极使用以下两个库。Android KTX(KTX 意为Kotlin扩展)是由谷歌开发的一个库,旨在简化安卓应用程序的开发。安卓 KTX 包装现有的安卓 API,不提供新功能。在更大程度上,它由具有惯用声明的扩展函数组成,这些扩展函数使用 Kotlin 功能,如具有默认值和协程的参数。Android KTX由核心模块组成,涵盖动画、内容、图形、可绘制、网络、操作系统、偏好、文本、过渡、Util、视图、小部件等特定模块。

7. Koin

Koin是像Dagger这样的依赖注入框架的轻量级替代方案。Koin本身不是依赖注入器,而是实现服务定位器(反)模式。但是有了科特林语的特征,Koin的用法与DI非常相似。岐的主要特点之一是简洁的DSL。与 Dagger 相比,Koin 易于学习和理解,无需生成代码即可在运行时解析依赖项。

结论

Kotlin 库使用现代语言的全部功能,并帮助编写惯用代码。并非所有库都支持 Kotlin/Native 或 Kotlin/JS 平台,但随着 Kotlin 的日益普及,跨平台库的数量也在不断增长。