> For the complete documentation index, see [llms.txt](https://yangsx95.gitbook.io/notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yangsx95.gitbook.io/notes/programming-language/kotlin.md).

# Kotlin

* [Githuh](https://github.com/JetBrains/kotlin)
* [官方网站](https://kotlinlang.org/)
* [官方网站中文](https://kotlinlang.org/)

## Kotlin的历史

Kotlin是一种由JetBrains开发的静态类型编程语言，可以编译成Java字节码或本机代码。Kotlin的历史可以追溯到2010年，当时JetBrains开始寻求一种更好的替代Java语言的方法，以便在他们的开发工具中使用。他们的目标是创建一种新的语言，可以在Java虚拟机（JVM）上运行，与Java无缝集成，并提供更简洁、安全、可读性更好的语法。JetBrains的开发团队最终在2011年创建了Kotlin语言。

Kotlin于2011年首次公开发布，并于2012年加入了开源社区，以便更广泛地推广。JetBrains在2016年正式推出了Kotlin 1.0版本，宣布其成为Android开发的官方支持语言。从那时起，Kotlin一直在迅速发展，成为了一种备受欢迎的编程语言，许多企业和开发者都选择使用它来构建应用程序。

## 应用场景与运行平台

Kotlin是一种跨平台的编程语言，可以在多个平台上运行

1. Java虚拟机（JVM）：Kotlin代码可以编译成Java字节码，从而可以在JVM上运行，这意味着它可以与Java代码无缝地集成，并在Android开发中广泛应用。
2. Android平台：Kotlin是Android开发的官方支持语言之一，可以使用Kotlin编写Android应用程序。
3. 浏览器：KotlinJS允许将Kotlin代码编译成JavaScript，并在Web浏览器中运行。
4. 本地代码：Kotlin/Native可以将Kotlin代码编译成本机代码，可以在Linux、macOS和Windows等平台上运行，还可以与C和Objective-C代码集成。
5. 数据科学平台：Kotlin可以在Jupyter Notebook等数据科学平台中使用，如Kotlin kernel for Jupyter Notebook。

此外，Kotlin还提供了与OpenGL ES和Vulkan等图形API集成的方式，并支持多平台开发，如Android、iOS和Web。

![picture 1](https://2351062869-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7b2CdwBN9liniVJpfEAc%2Fuploads%2Fgit-blob-7f1ded47f12bfde80ec5da24a86a3bb12fadab19%2FIMG_20230308-112753883.png?alt=media)

![picture 2](https://2351062869-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7b2CdwBN9liniVJpfEAc%2Fuploads%2Fgit-blob-07bea3bf53617cb6dd1ed455fa4c49e508973eec%2FIMG_20230308-113434088.png?alt=media)

## 搭建Kotlin开发环境

1. Kotlin内置在IDEA以及AndroidStudio中，使用这些开发工具即可直接编译运行Kotlin
2. 使用独立的Kotlin环境，访问 <https://github.com/JetBrains/kotlin/releases> 下载目标平台，并配置环境变量即可

## Hello World

创建文件`hello.kt`，写入以下代码文件：

```kotlin
fun main() {
    println("Hello, world!")
}
```

编译代码为可执行jar，并在jvm中运行：

```console
# 编译Kotlin代码为jar，参数-include-runtime编译时会将Kotlin运行时库一起编译出来
kotlinc Hello.kt -include-runtime -d hello.jar

java -jar hello.jar
```

编译为本地二进制码，并运行：

```console
konanc -o hello hello.kt
./hello
```
