Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


程序:kotlin:kotlin

Kotlin

公司非常推荐这门语言(后端开发),是「better Java」?

Kotlin是开源的 https://github.com/JetBrains/kotlin


一些基础概念

  1. Kotlin 可以直接调用 Java 代码,反之亦然。
  2. Kotlin 最初的设计目标就是作为 JVM 上的现代语言。
  3. 在实际应用(尤其是 Android 开发和后端服务)里,它常常是 Java 的替代或补充。
  4. Google 在 2017 年宣布 Kotlin 成为 Android 官方开发语言。
  5. Kotlin 编译成 JVM 字节码,与 Java 100% 互操作
  6. Kotlin 是“静态类型 + 强类型”的语言
  7. Kotlin 一般运行在 JVM 上,但还是需要一个自己的编译器(使用SDKMAN安装),把代码编译为 JAR
  8. 所以 JDK 有一个版本号,Kotlin(的编译器)有一个版本号,需要保证两者兼容
  9. Kotlin 源码 → Kotlin 编译器 → 字节码(.class/.jar) → JVM(在JDK里) 运行
  10. 也可以将代码编译为【不带 JVM 的原生可执行文件】,但是稍微复杂一点(用native-image?)
java -version
kotlin -version
kotlinc -version

手动编译执行

# kt 和 kts:kt是代码文件后缀名,kts是脚本文件后缀名
# kt 从 main() 开始
# kts 按从上到下的语句顺序直接执行,不需要 main
 
# 手动编译单文件
# -include-runtime 把 Kotlin 运行时一起打进 jar,部署更省心
kotlinc Main.kt -include-runtime -d app.jar
java -jar app.jar      # 需要 JDK/JRE
 
# 执行脚本
kotlin hello.kts

构建工具

Gradle

Gradle(使用SDKMAN安装):下载依赖 → 编译 → 测试 → 打包/运行
Gradle Wrapper:一套随项目一起提交的小脚本 + 配置,作用是让任何人不用先安装 Gradle,也能用指定版本的 Gradle 来构建这个项目。(是一个命名为 gradlew 的脚本,gradlew build / run)

# 方式1
# 不是创建 hi 的文件夹,而是在当前目录直接创建工程结构
# 所以还是需要自己提前创建好工程目录
gradle init --type kotlin-application --dsl kotlin --project-name hi
 
# 方式2
# 创建一个 JVM 命令行应用
mkdir hello-kotlin && cd hello-kotlin
gradle init \
  --type kotlin-application \
  --dsl kotlin \
  --project-name hello-kotlin \
  --package com.example.app
 
 
# ./gradlew 会被生成(项目的根目录)
chmod u+x ./gradlew
 
./gradlew run    # 执行
./gradlew test   # 测试
./gradlew build  # 构建
 
./gradlew tasks              # 列出可用任务
./gradlew dependencies       # 查看依赖树
./gradlew clean              # 清理构建
 
# 生成可执行 JAR(普通 JAR)
./gradlew jar
 
# 生成“胖 JAR”(包含依赖,便于部署)
./gradlew shadowJar

Maven

包包管理、代码分发

Kotlin/Java 世界没有 npm/pip 那样的独立“包管理器”。依赖通常由 构建工具(Gradle 或 Maven)充当包管理与解析器,从远程仓库拉取 JAR/AAR 等制品。
仓库(Registry):Maven Central(默认最大公仓,事实标准);Google Maven(Android 相关:AAR、Jetpack、Play 服务等)。
制品(Artifact)形式(包管理器下载的就是这些内容?):JAR,标准 Java/Kotlin 库;AAR,Android 库(含资源/manifest);Kotlin Multiplatform (KMP)

命名格式:group:artifact:version
例:org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0

大多数情况下,Kotlin的代码分发和Java是同一套渠道。Kotlin(面向 JVM/Android)的库和应用与 Java 一样,主要以 JAR/AAR 形式,通过 Maven 仓库(如 Maven Central、Google Maven)分发,由 Gradle/Maven 解析和下载。
Kotlin Multiplatform (KMP)是 Kotlin 特有的,也发布到 Maven 仓库,但同一坐标下带多平台变体(jvm, android, ios, js, native 等)和 Kotlin/Gradle 元数据;消费者按目标自动选对的变体。

编译流程

TODO

/var/www/DokuWikiStick/dokuwiki/data/pages/程序/kotlin/kotlin.txt · Last modified: 2025/10/11 11:56 by zhonghui