hhstore/blog

Kotlin: Quickstart

Opened this issue · 9 comments

📖 Abstract:

  • ✅ Kotlin 快速上手: 开发环境搭建 & 特性 & 示例.

💯 Related:

Kotlin 快速上手 - 2024

Kotlin 是什么?

  • Kotlin 是 JetBrains (捷克) 开发的, 用于替代 Java 的 JVM 编程语言.
    • Kotlin 命名, 取自于 捷克🇨🇿 某地一个小岛名.(类似 Java)
  • Google 强推 Kotlin 作为 Android 首选语言, 已经是事实标准.

为什么要学习 Kotiln?

  • ✅ 因为 Jetpack Compose + Kotlin Multiplatform 可以开发跨平台(Android/iOS/Windows/MacOS/Linux/Web)软件(比 Flutter 更有优势)
  • ✅ 和 Java 互操作性无敌, 无痛复用 Java 生态. (当然, 讨厌 Java 是潜在首要原因)
  • ✅ 和 C/Swift/Rust/JS 互操作性良好. (Dart 劣势)
  • ✅ 能轻松调用 Desktop OS API, 性能优异.

KMP 脚手架/模板:

Jetpack Compose

  • ✅ Google 官方主推的 Android UI 开发框架.

Kotlin Multiplatform

  • logic 层跨平台框架, 支持 iOS/Android/macOS/Window/Linux/Web 等.
  • ✅ 新项目直接从 Kotlin Multiplatform 开始, 但是需要了解二者的关系.

Compose Multiplatform

  • #425
  • ✅ 继承+扩展 Jetpack Compose, UI 层 跨平台开发框架
  • ✅ JetBrains 主推, 扩大 Compose 应用场景(不局限于 Android)

有没有必要再学习一门新语言 Kotlin?

  • 于我而言, 已经熟练使用 Flutter 开发了多个 App, 直观上看 Kotlin + Compose 示例, 不算难. 基本类似.
  • 掌握一门语言的语法, 成本很低.(相比 Rust, 没啥难度)
  • 从大学掌握 Java, 工作除了改过少量 Spring 项目代码, 基本是见 Java 绕行.

背景:

  • 最近几年, 为了解决跨平台 App 开发. 先后学习了 Dart + Flutter, Rust + Tauri + Vue.js, Go + Wails + Vue.js, Python + Nicegui 等方案. 各有优缺点(没有完美的方案).
  • 前端混合方案: Rust/Go + Tauri/Wails + Vue.js
    • 需要掌握 JS/TS + 前端框架(Vue.js), 鉴于我比较不喜欢 React.js 所以自动排除了 React-Native 方案.
    • 需要掌握 Rust or Go. (Go 比较简单, Rust 掌握好, 就比较费时)
    • 基于 Webview 方案, 存在一定的兼容性问题
    • MacOS 下, 调用 OS API 的能力不足(生态不够繁荣, 时间问题)
  • 类原生方案: Dart + FlutterKotlin + Compose.
    • Flutter移动端表现良好, 在桌面端 一坨💩.
    • Compose 基本书写范式和 flutter 类似, 优点是可以复用 Java/Android 生态库, 比 Dart 强太多(质量 + 数量).

成本:

  • 我已经掌握的语言: Python/Go/Rust/Dart/JS/C/Java/Zig.
  • Kotlin 语言本身, 于我, 无非是愿不愿花点时间看看.
  • 大头是熟悉 Kotlin 生态库 + 熟练使用, 需要花费不少时间.
    • 对我来说, 只关注 App 客户端开发部分的库
    • 鉴于有 Flutter 的基础, UI & 组件库, 有一定基础, 无非是换个语言而已.(复杂度, 在学 Fluter 阶段解决了, 一回生, 二回熟)

收益:

  • 借着 Kotlin, 熟练掌握 Java/Android 生态库(巨大财富). 集齐了 Python/JS/Java 三大生态(无敌模式)
  • 借此, 掌握所有流行的跨平台方案. (各方案都实操过, 才能在具体项目, 择优选用)
  • 顺便, 华为鸿蒙 OS 新的开发语言 ArkTS + ArkUI, 基本是抄的 Kotlin Compose 框架. 也算为未来储备一些基础.

为什么不是 Swift + Swift UI?

  • 其实尝试一些 Swift UI 的示例, 本身坑不多.

不过 Swift 有几个致命问题:

  • ❌ Swift 本身, 槽点不多. (不过亲爹已离开 Apple, 正在开发 Mojo(Python++) 语言.
  • ❌ Swift UI 坑极多, 质量极差. (可以看 Twitter 无数踩坑的开发者分享)
  • ❌ Xcode 开发体验: 一坨💩. 相比 JetBrains 系列 IDE 和 Vscode, Xcode 是全方位的💩!
    • 每次更新 Xcode, 都是噩梦.(强制升级, 为了升 Xcode, 还要强制升级 macOS!)
    • Xcode 的代码补全, 比之其他, 弱爆了.(GPT 时代, 醒醒!)
    • 开发 flutter 应用, 偶尔要在 xcode 下, 更改一些项目配置, 一坨💩, 使用 xcode 编译 flutter 项目, 也是一言难尽.
  • ❌ Swift 跨平台能力弱, Apple 也没兴趣投入资源支持跨平台.(缺乏动机, 相比 Kotlin 动机十足)
  • ❌ Swift 生态库, 几乎围绕 Apple 生态, 在服务端以及其他领域, 基本不可用. (不值得投入精力, 回报太低)

Kotlin 搭建开发环境:

安装 Kotlin:

命令行安装:

sdk install kotlin

# or
brew update
brew install kotlin

配置 Android Studio

配置 Android/Desktop 模拟器环境:

  • Idea or Android Studio中, 根据提示, 安装 JDK, Android SDK 等.
  • 根据需要, 下载 Android 模拟器.

Kotlin 入门教程:

目前有关于 Kotlin/Native 开发桌面端的任何消息吗。
java.awt 系统桥接这块做的不好,tray 菜单和无修饰窗口在 windows 下的表现一言难尽。
Kotlin 最好是能摆脱 awt。

目前有关于 Kotlin/Native 开发桌面端的任何消息吗。 java.awt 系统桥接这块做的不好,tray 菜单和无修饰窗口在 windows 下的表现一言难尽。 Kotlin 最好是能摆脱 awt。

看了一下,发现列表中的项目作者也在 readme 中表示困扰,关于 awt 桥接不完善。不过感谢分享这些案例,都有各自精彩。