使用 Kotlin 进行服务器端开发
最终更新: 2024/03/21
Kotlin 非常适合于开发服务器端应用程序, 使用 Kotlin 可以编写出简洁高效的代码, 同时又可以完全兼容既有的 Java 技术栈(Java-based technology stacks), 而且其学习曲线比较平滑:
- 表达能力: Kotlin 拥有许多创造性的语言特性, 比如它支持 类型安全的构建器(type-safe builder) 以及 委托属性(delegated property), 可以帮助你构造出强大而且易用的抽象层.
- 伸缩性: Kotlin 对 协程(coroutine) 的支持可以帮助你构建出性能强大的服务器端应用程序, 能够为巨量用户提供服务, 但只要求很低的硬件配置.
- 互操作性: Kotlin 完全兼容于所有基于 Java 的框架(framework), 因此你既可以享受一个更加现代的语言带来的利益, 同时又可以继续使用你熟悉的技术栈.
- 可移植性: 对于大规模的 Java 代码库, Kotlin 语言支持平滑地, 逐步的迁移. 你可以只使用 Kotlin 来编写新代码, 同时对系统中既有的部分继续沿用旧的 Java 代码.
- 开发工具: 除了 IDE 的支持之外, 在 IntelliJ IDEA Ultimate 的插件中, Kotlin 还提供了针对特定框架(比如, Spring)的开发工具支持.
- 学习曲线: 对于 Java 开发者, Kotlin 是非常易于学习的. Kotlin 插件中包含了 Java 代码到 Kotlin 代码的自动转换器, 可以帮助你完成最初的工作. Kotlin Koan 中有一系列的交互式练习题, 可以指导你学习 Kotlin 语言的关键特性.
Kotlin 服务器端开发的一些相关框架
下面是 Kotlin 服务器端框架的一些例子:
-
Spring 从 5.0 版本开始, 使用 Kotlin 的语言特性实现了 更加简洁的 API. 在线工程生成器 可以帮助你使用 Kotlin 语言快速生成新的工程.
-
Ktor 是 JetBrains 公司开发的框架, 用 Kotlin 来开发 Web 应用程序, 使用协程(coroutine)实现了高度伸缩性, 并提供了易用而且符合习惯的 API.
-
Quarkus 对使用 Kotlin 提供了一级支持. 这个框架是开源的, 由 Red Hat 维护. Quarkus 是为 Kubernetes 全新构建的, 并利用数百种精选的库, 提供了一个整合的全栈框架.
-
Vert.x, 一个创建基于 JVM 的交互式 Web 应用程序的框架, 对 Kotlin 提供了 专门支持, 包含 完整的文档.
-
kotlinx.html 是一种 DSL, 可用于在 Web 应用程序中构建 HTML. 可用来替代传统的模板系统, 比如 JSP 和FreeMarker.
-
Micronaut 是一个现代化的, 基于 JVM 的全栈框架, 用于创建模块化的, 便于测试的微服务(microservice)或无服务(serverless)应用程序. 它带有很多内建的, 便利的功能.
-
http4k 是一个尺寸很小的工具包, 用于 Kotlin HTTP 应用程序, 使用纯 Kotlin 编写. 这个库基于 Twitter 的 "通过函数实现你的服务器" 论文, 它将 HTTP 服务器端和客户端模型都表达为简单的 Kotlin 函数, 再将这些简单函数组合在一起.
-
Javalin 是一个用于 Kotlin 和 Java的, 非常轻量的 web 框架, 支持 WebSockets, HTTP2 以及异步请求.
-
关于数据的持久化存储, 可以选择直接的 JDBC 访问, 或者使用 JPA, 或者通过 Java 驱动程序使用 NoSQL 数据库. 对于 JPA, kotlin-jpa 编译器插件 可以使 Kotlin 编译的 class文件符合 JPA 框架的要求.
你可以在 https://kotlin.link/ 找到更多框架.
发布 Kotlin 服务器端应用程序
Kotlin 应用程序可以发布到任何支持 Java Web 应用程序的主机上, 包括 Amazon Web Services, Google Cloud Platform, 以及其他等等.
要在 Heroku 上发布 Kotlin 应用程序, 你可以参照 Heroku 官方教程.
AWS Labs 提供了一个 示例工程 , 演示如何使用 Kotlin 来编写 AWS Lambda 函数.
Google 云平台也提供了一系列教程, 演示如何将 Kotlin 应用程序发布到 Google 云平台上, 包括 在 Google App Engine 上运行 Kotlin Ktor 应用程序 和 在 Google App Engine 上运行 Kotlin Spring 应用程序. 此外还有一篇 向导式代码文档 介绍如何发布 Kotlin Spring 应用程序.
使用 Kotlin 进行服务端开发的产品
Corda 是一个开源的分布式帐务平台, 受各大主要银行支持, 完全使用 Kotlin 语言开发.
JetBrains Account, 这个系统负责 JetBrains 公司所有的许可证销售和验证过程, 系统 100% 使用 Kotlin 编写, 自 2015 年起运行在生产环境中, 未发生任何严重问题.
下一步
- 关于对 Kotlin 语言的更加深入介绍, 请本站阅读所有 Kotlin 文档, 以及 Kotlin Koan.
- 观看网络研讨会 "使用 Kotlin 和 Micronaut 开发微服务(microservice)", 并阅读更详细的 向导, 这篇向导会介绍如何在 Micronaut framework 中使用 Kotlin 扩展函数.
- http4k 提供了 命令行工具(CLI) 来生成完整的项目, 还提供了一个 starter 代码仓库, 可以通过一个简单的 bash 命令来生成整个持续部署流程(CD pipeline) (使用 GitHub, Travis, 以及 Heroku).
- 想要从 Java 迁移到 Kotlin 吗? 请阅读 在 Java 和 Kotlin 使用字符串的常见情况.