Kotlin 开源:面向专业人士的 GitHub 十大仓库

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Kotlin — 不仅仅是去掉 getter 的 Java



当 JetBrains 在 2016 年发布 Kotlin 时,许多人将其视为又一个“Java 杀手”。八年过去了——如今它已成为 Android 开发的主要语言,在后端(感谢 Ktor 和 Spring Boot)甚至数据科学领域都扮演着活跃的角色。但 Kotlin 的主要力量在于其社区。用这种语言编写的开源项目不仅仅是库的集合,更是现代架构的真实教材。



在本文中,我们收集了最佳的 Kotlin 开源 GitHub 仓库,每个开发者都值得研究。您将看到真实的代码,了解流行库的内部结构,并可能为自己的项目找到灵感。开始吧!



为什么要学习 Kotlin 开源项目?



在深入列表之前,让我们回答一个问题:为什么要看别人的代码?首先,这是理解地道的 Kotlin的最佳方式——不仅仅是语法,而是语言哲学。其次,开源仓库通常包含复杂架构解决方案的示例:用于异步的 Coroutines、用于响应式流的 Flow、用于状态建模的 Sealed classes。



我们精选了不同级别的项目——从小型工具到完整的框架。每个项目都可以fork、研究并用作您自己任务的模板。



最佳 Kotlin 开源仓库



1. Ktor — 异步 HTTP 框架

仓库: github.com/ktorio/ktor

如果您用 Kotlin 编写后端,Ktor 是必备之选。与 Spring 不同,它轻量、模块化,并充分利用协程。看看服务器看起来多么简单:



import io.ktor.server.engine.*import io.ktor.server.netty.*import io.ktor.server.routing.*import io.ktor.server.response.*

fun main() { embeddedServer(Netty, port = 8080) { routing { get("/") { call.respondText("Hello, Open Source!") } } }.start(wait = true)}


这段代码是一个最小的运行服务器。在仓库中,您会找到包含 WebSockets、通过 kotlinx.serialization 进行序列化以及与数据库集成的示例。研究模块结构——它展示了如何正确组织Kotlin 项目。



2. Kotlin Coroutines — 异步基础

仓库: github.com/Kotlin/kotlinx.coroutines

JetBrains 的官方仓库。在这里您将看到 launch、async、Flow 和通道的内部结构。注意测试——这是测试异步代码的绝佳示例:



import kotlinx.coroutines.*import kotlinx.coroutines.test.*import org.junit.Test

class CoroutineTest { @Test fun testAsyncOperation() = runTest { val result = async { delay(1000) "Success" } assertEquals("Success", result.await()) }}


研究这段代码后,您将了解 runTest 的工作原理以及为什么不必害怕测试协程。这是任何现代 Kotlin 应用程序的基础。



3. Koin — 无魔法的依赖注入

仓库: github.com/InsertKoinIO/koin

Koin 是一个轻量级的 DI 框架,不使用反射。一切都基于 Kotlin 的 DSL 结构。模块示例:



val myModule = module {    single { Database() }    factory { Repository(get()) }}

class MyApp : Application() { override fun onCreate() { super.onCreate() startKoin { modules(myModule) } }}


这个仓库展示了如何在不使用 Dagger 或 Spring 复杂性的情况下构建干净的 Kotlin 架构。研究测试——它们展示了如何轻松地模拟依赖关系。



4. Jetpack Compose — 现代 Android UI

仓库: github.com/android/compose-samples

Google 的官方示例集合。这里收集了从简单按钮到复杂动画的所有内容。特别注意 State 和 ViewModel 的使用——这是构建响应式 Android 应用程序的基础。



@Composablefun Greeting(name: String) {    var count by remember { mutableStateOf(0) }        Column {        Text("Hello, $name!")        Button(onClick = { count++ }) {            Text("Clicked $count times")        }    }}


这个简单的示例展示了 Compose 的核心概念:状态、组合和声明式 UI。研究大型示例——它们展示了如何构建多模块 Kotlin 项目。



5. Kotlin Multiplatform — 跨平台代码

仓库: github.com/JetBrains/compose-multiplatform

Kotlin Multiplatform 允许您为 Android、iOS、Web 和桌面编写通用代码。这个仓库包含使用 Compose Multiplatform 的示例。注意 expect 和 actual 声明——这是平台特定实现的关键机制。



// Common codeexpect fun getPlatformName(): String

@Composablefun App() { Text("Running on ${getPlatformName()}")}


研究这个仓库将帮助您理解跨平台 Kotlin 开发的架构,并看到如何为不同平台重用 80% 的代码。



6. SQLDelight — 类型安全的数据库

仓库: github.com/cashapp/sqldelight

SQLDelight 从 SQL 查询生成 Kotlin 代码。这确保了类型安全并消除了运行时错误。示例:



-- src/main/sqldelight/com/example/Person.sq

CREATE TABLE Person ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER);

getAll:SELECT * FROM Person;

insert:INSERT INTO Person(id, name, age) VALUES (?, ?, ?);


在 Kotlin 中,您将获得类型安全的函数。这个仓库展示了如何构建健壮的数据层,并包含与 Ktor 和 Android 集成的示例。



7. Detekt — 静态代码分析

仓库: github.com/detekt/detekt

Detekt 是 Kotlin 的静态分析工具。它帮助找到代码异味、复杂函数和潜在错误。研究其规则集——这是理解Kotlin 最佳实践的绝佳方式。



// 配置示例detekt {    config = files("detekt.yml")    buildUponDefaultConfig = true    allRules = false}


这个仓库本身是用 Kotlin 编写的,因此您可以研究其架构并学习如何创建自己的分析规则。



8. MockK — Kotlin 的 Mock 库

仓库: github.com/mockk/mockk

MockK 是专门为 Kotlin 设计的 Mock 库。它支持协程、扩展函数和密封类。示例:



val mock = mockk()every { mock.call() } returns "mocked"

coEvery { mock.suspendCall() } coReturns "suspended"

verify { mock.call() }coVerify { mock.suspendCall() }


研究这个仓库将帮助您编写可靠的 Kotlin 测试并理解 Mock 的工作原理。



9. Kotlinx.serialization — 数据序列化

仓库: github.com/Kotlin/kotlinx.serialization

JetBrains 的官方序列化库。它支持 JSON、ProtoBuf、CBOR 等格式。示例:



@Serializabledata class User(val name: String, val age: Int)

fun main() { val json = Json { prettyPrint = true } val user = User("Alice", 30) println(json.encodeToString(user))}


这个仓库展示了如何构建类型安全的序列化并避免使用 Gson 或 Jackson 时的运行时错误。



10. Anko — Kotlin 的 Android 扩展(已弃用但具有教育意义)

仓库: github.com/Kotlin/anko

尽管 Anko 已被弃用,但其代码是 Kotlin DSL 的绝佳示例。研究它如何构建布局和数据库查询——这是理解Kotlin 语言特性的宝贵经验。



verticalLayout {    val name = editText()    button("Say Hello") {        onClick { toast("Hello, ${name.text}!") }    }}


这个仓库展示了如何利用 Kotlin 的 lambda 和扩展函数创建 DSL。这些知识在开发任何现代 Kotlin 库时都会有用。



如何利用这些仓库?



我们列出了 10 个仓库,但仅仅阅读是不够的。以下是一个行动计划:



  1. fork 一个仓库并尝试修改代码
  2. 研究测试——它们通常包含最佳实践
  3. 查看 Issues——您可能会找到可以贡献的简单任务
  4. 阅读 Pull Requests——了解代码审查过程
  5. 创建自己的项目,使用这些仓库作为模板


请记住:开源不仅仅是代码,而是一个社区。提出问题、分享经验并帮助他人。这就是成为真正专业人士的方式。



结论



Kotlin 生态系统正在快速发展,而开源项目是保持领先的最佳方式。我们讨论的仓库涵盖了 Kotlin 开发的关键领域:后端(Ktor)、异步(Coroutines)、依赖注入(Koin)、UI(Compose)、跨平台开发(Multiplatform)和测试(MockK)。



从您最感兴趣的项目开始。研究代码,尝试修改,并不要害怕提问。毕竟,最好的学习方式就是实践。祝您在 Kotlin 世界中好运!

博客

书籍推荐