Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kotlin: Quickstart #418

Open
hhstore opened this issue Mar 19, 2024 · 6 comments
Open

Kotlin: Quickstart #418

hhstore opened this issue Mar 19, 2024 · 6 comments

Comments

@hhstore
Copy link
Owner

hhstore commented Mar 19, 2024

📖 Abstract:

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

💯 Related:

@hhstore
Copy link
Owner Author

hhstore commented Mar 19, 2024

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

  • Kotlin: 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 生态, 在服务端以及其他领域, 基本不可用. (不值得投入精力, 回报太低)

@hhstore
Copy link
Owner Author

hhstore commented Mar 19, 2024

@hhstore
Copy link
Owner Author

hhstore commented Mar 19, 2024

Kotlin 搭建开发环境:

安装 Kotlin:

命令行安装:

sdk install kotlin

# or
brew update
brew install kotlin

配置 Android Studio

配置 Android/Desktop 模拟器环境:

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

@hhstore
Copy link
Owner Author

hhstore commented Mar 19, 2024

@hhstore
Copy link
Owner Author

hhstore commented Mar 19, 2024

Kotlin 入门教程:

@hhstore
Copy link
Owner Author

hhstore commented Mar 19, 2024

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant