Compare commits
4 Commits
73d93f7bc8
...
8b0aace84a
| Author | SHA1 | Date | |
|---|---|---|---|
| 8b0aace84a | |||
| 8fe9e2a4e3 | |||
| ace340bed6 | |||
| 6ff4414b27 |
@@ -0,0 +1,19 @@
|
||||
# 尝试 Kotlin Ktor
|
||||
|
||||
Ktor 是一个比较新的、作为 KMP server 最优选的服务器后端框架。
|
||||
|
||||
## 创建一个 Ktor 项目
|
||||
|
||||
这很简单,在 IDEA 中就可以创建,仅支持 Kotlin 与 gradle。
|
||||
|
||||
引擎选择主要是在 Netty 和 CIO 之间二选一。Netty 最完善,CIO 支持编译为字节码。如果在 JVM 上使用,Netty 功能最强大,CIO 响应更快。具体的代码编写没有差异。
|
||||
|
||||
## 接下来可以看
|
||||
|
||||
[目录](../README.md)
|
||||
|
||||
[下一篇:Kotlin Springboot](./Kotlin-Springboot.md)
|
||||
|
||||
[更进一步:成为 Kotlin 超人](./成为Kotlin超人.md)
|
||||
|
||||
[进入 KMP](./进入KMP.md)
|
||||
@@ -2,8 +2,20 @@
|
||||
|
||||
> 总体上来讲,Kotlin 与 Java 相比是有好有坏的,优点是写起来更简洁,缺点是写起来更简洁。
|
||||
|
||||
Springboot(Spring) 是目前 JVM 平台功能最强大、扩展性最好、健壮性最好的后端框架。
|
||||
|
||||
## 创建一个 Springboot 项目
|
||||
|
||||
这很简单,在 IDEA 中就可以创建,记得选 Kotlin 和 Gradle kts。
|
||||
|
||||
自带插件的话根据你的需要来选就好,如果你只是想利用 Springboot 来做一个命令行小程序也是可以的。
|
||||
自带插件的话根据你的需要来选就好,如果你只是想利用 Springboot 来做一个命令行小程序也是可以的。
|
||||
|
||||
## 接下来可以看
|
||||
|
||||
[目录](../README.md)
|
||||
|
||||
[下一篇:Kotlin Ktor](./Kotlin-Ktor.md)
|
||||
|
||||
[更进一步:成为 Kotlin 超人](./成为Kotlin超人.md)
|
||||
|
||||
[进入 KMP](./进入KMP.md)
|
||||
+22
-11
@@ -2,25 +2,36 @@
|
||||
|
||||
**全栈**指:同时完成后端服务器的部分和前端用户的部分。
|
||||
|
||||
因而,在学习本节之前,最好先看 [Kotlin Ktor](./Kotlin-Ktor.md) 或 [Kotlin Springboot](./Kotlin-Springboot.md) 的其中一个。如果你想使用 KMP 最全面的功能,最好是选择 Ktor。
|
||||
|
||||
## 一个完整的 KMP 项目
|
||||
|
||||
目前(20261009),完整的 KMP 项目包含以下几项:
|
||||
- Android
|
||||
- JVM
|
||||
- iOS
|
||||
- WASM
|
||||
目前(2026.10.09),完整的 KMP 项目包含以下几项:
|
||||
- app
|
||||
- androidApp
|
||||
- jvmApp
|
||||
- iosApp
|
||||
- webApp
|
||||
- shared
|
||||
- commonMain
|
||||
- core
|
||||
- commonMain
|
||||
- Server
|
||||
|
||||
除了 iOS 部分必须由 Xcode 做额外设置后编译以外,其他的应用均可在 JDK 下完成编译。
|
||||
除了 iOS 部分必须由 Xcode 做额外设置后编译以外,其他的应用均可在 JDK 下完成编译(Android 需要相应 SDK,其他需要编译为字节码的需要其他编译器)。
|
||||
|
||||
Server 本身也是运行在 JVM 上面的,它和普通的 Java / Kotlin 后端项目基本没有区别。不过,在 KMP 中,将它的部分代码写在 commonMain 中,可以在一定程度上减少代码的出错可能,还可以进行代码复用。
|
||||
Server 本身也是运行在 JVM 上面的,它和普通的 Java / Kotlin 后端项目基本没有区别,除非使用特殊的 Ktor 后端编译为字节码。不过,在 KMP 中,将它的部分代码写在 commonMain 中,可以在一定程度上减少代码的出错可能,还可以进行代码复用。
|
||||
|
||||
我们在编写全栈 KMP 时,应当优先考虑 WASM 和 Server 能否完美运行。
|
||||
我们在编写全栈 KMP 时,应当优先考虑 Web(WASM) 和 Server 端能否完美运行。
|
||||
|
||||
`core` 的依赖关系在 `shared` 之上;`server` 与整个 `app` 模块平级,在 `core` 之下;`app` 内部模块在 `shared` 之下。
|
||||
|
||||
## 整体的设计思路
|
||||
|
||||
既然 KMP 最大的特点是多平台代码共享,那么这里就要考虑到把 后端的 entity(vo, dto),网络接口(如果后端框架支持拆开写的话)等一并写在共享代码的部分,即 `core/commonMain` 内部。
|
||||
|
||||
## 接下来可以看
|
||||
|
||||
[目录](../README.md)
|
||||
|
||||
[下一篇:复杂逻辑与多平台不同逻辑](./复杂逻辑与多平台不同逻辑.md)
|
||||
|
||||
[下一篇:编写服务器应用 —— SpringBoot](./Kotlin-Springboot.md)
|
||||
[下一篇:复杂逻辑与多平台不同逻辑](./复杂逻辑与多平台不同逻辑.md)
|
||||
@@ -2,6 +2,10 @@
|
||||
|
||||
> 确保你有至少看过一遍 [深入 Kotlin](./深入Kotlin.md)
|
||||
|
||||
## suspend 与协程
|
||||
|
||||
当我们需要做一些复杂的事情的时候,例如:
|
||||
|
||||
## expect / actual
|
||||
|
||||
这东西其实叫`预期与实际机制`,但是真的不好描述,用法也比较多样。
|
||||
|
||||
+21
-2
@@ -11,10 +11,29 @@
|
||||
|
||||
## JSON 序列化
|
||||
|
||||
## Kotlin 协程
|
||||
Kotlin-serialization 是最佳选择,它需要加载一个 gradle 插件,注意要与你的 Kotlin 版本一致:
|
||||
|
||||
```kotlin
|
||||
plugins {
|
||||
kotlin("jvm") version "2.3.20"
|
||||
kotlin("plugin.serialization") version "2.3.20"
|
||||
}
|
||||
```
|
||||
|
||||
## Kotlin 协程与多线程细节
|
||||
|
||||
## 不依赖 Springboot web 的网络 api
|
||||
|
||||
## 加载动态链接库(JNA)
|
||||
|
||||
## 将 jar 文件上传至 Maven 仓库
|
||||
## 将 jar 包上传至 Maven 仓库
|
||||
|
||||
这需要一个 gradle 插件:
|
||||
|
||||
```kotlin
|
||||
plugins {
|
||||
id("com.vanniktech.maven.publish") version "0.37.0"
|
||||
}
|
||||
```
|
||||
|
||||
具体的写法可以参考 [FFmpeg-Kit_KMP](https://github.com/SOR2171/FFmpeg-Kit_KMP/blob/main/settings.gradle.kts) 的 gradle 配置。
|
||||
@@ -910,6 +910,8 @@ val `or write a sentence` = true
|
||||
|
||||
[下一篇:Kotlin Springboot](./Kotlin-Springboot.md)
|
||||
|
||||
[下一篇:Kotlin Ktor](./Kotlin-Ktor.md)
|
||||
|
||||
[更进一步:成为 Kotlin 超人](./成为Kotlin超人.md)
|
||||
|
||||
[进入 KMP](./进入KMP.md)
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
|
||||
本教程支持使用 AI 概括 / 解释。
|
||||
|
||||
考虑到 KMP 仍然处在不断测试,不断发展的阶段,希望以后的 APP 部长可以继续更新这个教程。
|
||||
|
||||
|
||||
## 目录
|
||||
|
||||
### Kotlin
|
||||
@@ -9,7 +12,8 @@
|
||||
1. [引入 Kotlin](Learning/引入Kotlin.md)
|
||||
2. [深入 Kotlin](Learning/深入Kotlin.md)
|
||||
3. [尝试 Kotlin Springboot](Learning/Kotlin-Springboot.md)
|
||||
4. [成为 Kotlin 超人](Learning/成为Kotlin超人.md)
|
||||
4. [尝试 Kotlin Ktor](Learning/Kotlin-Ktor.md)
|
||||
5. [成为 Kotlin 超人](Learning/成为Kotlin超人.md)
|
||||
|
||||
### Kotlin Multiplatform
|
||||
|
||||
|
||||
Reference in New Issue
Block a user