Kotlin: Quickstart
hhstore opened this issue · 9 comments
hhstore commented
hhstore commented
Kotlin 快速上手 - 2024
Kotlin 是什么?
- Kotlin 是 JetBrains (捷克) 开发的, 用于替代
Java
的 JVM 编程语言.- Kotlin 命名, 取自于 捷克🇨🇿 某地一个小岛名.(类似
Java
)
- Kotlin 命名, 取自于 捷克🇨🇿 某地一个小岛名.(类似
- 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 脚手架/模板:
- ✅ https://kmp.jetbrains.com
- ✅ 创建 kotlin 跨平台应用项目模板.
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 + Flutter
和Kotlin + 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 commented
Kotlin 教程:
Kotlin 文档:
Kotlin 官方:
Android 官方:
- https://developer.android.com/kotlin?hl=zh-cn
- https://developer.android.com/kotlin/first?hl=zh-cn
- Google/Android 作为二爹, 也是不遗余力的推广 Kotlin, 有大量高质量文档.
Kotlin 示例学习:
Kotlin 在线练习:
Kotlin 社区教程:
Kotlin Github 资源:
topics:
- https://github.com/topics/kotlin
- https://github.com/topics/kotlin-multiplatform
- https://github.com/topics/compose
Kotlin 库搜索:
hhstore commented
Kotlin 搭建开发环境:
安装 Kotlin:
- 安装 Kotlin
- 开发工具: 安装 IntelliJ IDE or Android Studio.
- IDE 自带创建
Kotlin
以及Mobile/Desktop App
项目模板. - 本身无坑.
命令行安装:
sdk install kotlin
# or
brew update
brew install kotlin
配置 Android Studio
配置 Android/Desktop 模拟器环境:
- 在
Idea
orAndroid Studio
中, 根据提示, 安装 JDK, Android SDK 等. - 根据需要, 下载
Android 模拟器
.
hhstore commented
Kotlin 指南:
Kotlin 语法:
Kotlin 类和对象
Kotlin 协程
与 Java 互操作性
hhstore commented
Kotlin 入门教程:
- https://developer.android.com/courses/android-basics-compose/unit-1?hl=zh-cn
- Google Android 官方制作的这个教程, 很不错.
- Kotlin FAQ
hhstore commented
Jetpack Compose 框架(Android)
Kotlin Multiplatform
KunMinX commented
目前有关于 Kotlin/Native 开发桌面端的任何消息吗。
java.awt 系统桥接这块做的不好,tray 菜单和无修饰窗口在 windows 下的表现一言难尽。
Kotlin 最好是能摆脱 awt。
hhstore commented
目前有关于 Kotlin/Native 开发桌面端的任何消息吗。 java.awt 系统桥接这块做的不好,tray 菜单和无修饰窗口在 windows 下的表现一言难尽。 Kotlin 最好是能摆脱 awt。
- https://github.com/joelkanyi/FocusBloom
- 可以看看这个项目,有
Desktop 桌面版
,iOS
,Android
。 - https://github.com/ChrisKruegerDev/awesome-kotlin-multiplatform#app-projects
- 这里有整理的一些 kotlin 开发的 App 列表。
KunMinX commented
看了一下,发现列表中的项目作者也在 readme 中表示困扰,关于 awt 桥接不完善。不过感谢分享这些案例,都有各自精彩。