写点什么

JetBrains 发布了 Kotlin Multiplatform 的首个稳定版本

  • 2023-11-13
    北京
  • 本文字数:1225 字

    阅读完需:约 4 分钟

大小:587.72K时长:03:20
JetBrains发布了Kotlin Multiplatform的首个稳定版本

JetBrains 提供了 Kotlin Multiplatform 的首个稳定版本,支持跨 iOS、Android、桌面、Web 和服务器进行代码共享——尽管用于共享用户界面(UI)代码的部分,Compose Multiplatform,仅适用于 Android 和桌面。

 

Kotlin 是由 JetBrains 开发的一种 JVM(Java 虚拟机)语言,并被谷歌(Google)用作 Android 开发的首选语言。既然 Java 已经是为跨平台代码而设计的了,那么 Kotlin Multiplatform 又增加了什么呢?答案是 Kotlin 不仅仅是一种 JVM 语言。Kotlin/Native使用 MinGW(适用于 Windows 的 GCC 工具链)和 Android NDK 编译成适用于 macOS、iOS、Linux、Windows 的独立可执行文件。Kotlin/JS将 Kotlin 转换为 JavaScript。Kotlin Wasm 仍处于实验阶段,可编译成 WebAssembly。

 

Kotlin Multiplatform是一种跨所有这些平台共享非 GUI 代码的技术。它解决了代码共享的两个常见问题,即对于所有目标平台的一个子集,仅需部分共享某些代码的需求,以及需要访问特定于平台的 API。

 


Kotlin Multiplatform 中的 Expect 和 Actual,解决了调用本机平台 API 的需求

 

本机 API 问题是通过预期声明和实际声明的机制来解决的。 expect 关键字将声明标记为将与用actual关键字标记的代码匹配,actual关键字可能是特定于平台的。JetBrains 建议仅对平台 API 使用 expect/actual,其他情况使用普通接口。

 


2022 年的一项调查显示,Kotlin Multiplatform 应用程序的代码共享率高达 63%

 

Kotlin Multiplatform 适用于非 GUI 代码,但有一个相关项目Compose Multiplatform,它可用于创建共享的用户界面(UI)。 Compose Multiplatform 基于谷歌的Jetpack Compose,用于构建 Android 用户界面。 Compose Multiplatform 在桌面平台、macOS、Linux 和 Windows 上也是稳定版本,但在 iOS 上是 Alpha 版本,在 Web 上是实验性的。根据 JetBrains 的说法,Kotlin Multiplatform 已经被包括 Netflix 和 VMWare 在内的公司所使用。

 

如果 Compose Multiplatform 还没有准备好,那么开发者如何支持 iOS 呢?这可以通过使用SwiftUI来实现,SwiftUI 是苹果(Apple)的官方 UI 设计语言,它是基于声明式代码的。有一些代码示例正是采用了这种方式实现的。

 

JetBrains 还表示,他们的目标是在 2024 年发布面向 iOS 的 Compose Multiplatform 测试版本,Kotlin/Wasm 也在积极开发中。

 

去年,谷歌通过引入其他一些 Jetpack 库的“实验预览”,表达了对 Kotlin Multiplatform 的一些支持,这些库不是用于生产的,而是用于“在针对 Android 和 iOS 应用程序的多平台项目中使用这些 Jetpack 库的反馈”。请注意,谷歌还提供了使用 Dart 语言和 Flutter UI 进行跨平台开发的 Flutter。

 

使用 Kotlin 而不是 Java 的另一个原因是它的语言特性,包括 lambda 表达式、扩展函数、类型推理、null 安全等等。Kotlin 没有检查异常,因为这些不会提高生产力或代码质量。

 

Kotlin Multiplatform 和 Compose Multiplatform 均可免费使用。Kotlin的代码位于 Github 上,许可证是 Apache2.0。

 

原文链接:

https://devclass.com/2023/11/01/jetbrains-offers-first-stable-release-of-kotlin-multiplatform/

2023-11-13 18:576111

评论 1 条评论

发布
用户头像
怎么都没评论啊
2023-11-16 18:46 · 上海
回复
没有更多了
发现更多内容

各项结果排名第一!百度内容技术架构团队在国际向量检索大赛BigANN中斩获佳绩

百度Geek说

百度 内容 前端 后端

延迟任务场景,该如何提高吞吐量和时效性

华为云开发者联盟

redis 延迟任务 低延迟 Redis 消费队列

远程办公团队如何沟通?

王字 Wannz

远程办公 wrh 居家办公 线下办公 soho

开源商业模式促进金融业科技生态的发展

王字 Wannz

小程序 开源 IT 金融

大模型应用新范式:统一特征表示优化(UFO)

百度开发者中心

利用鸿蒙JavaUI 框架的 WebView 加载本地冰墩墩网页

宇宙之一粟

鸿蒙开发 2月月更

小程序框架与平台编译对比

王字 Wannz

小程序 百度智能小程序 头条小程序 finclip 小程序框架

【连接平台」企业告警信息通过机器人同步至钉钉群

钉钉开发者

连接器 钉钉应用开发 钉群

架构实战营:模块七作业

Geek_93ffb0

「架构实战营」

2022年低代码的变化与趋势

BeeWorks

Java如何实现消费数据隔离?

CRMEB

阿里云EMAS 1月产品动态

移动研发平台EMAS

阿里云 程序人生 移动开发 #EMAS

有奖调查| 2022 Apache Pulsar 怎么过,你们说了算

Apache Pulsar

开源 云原生 中间件 Apache Pulsar Apache Pulsar 社区

OCR技术用于在线身份认证的运营效果分析

OCR

新版上线|能力中心打造全新视角

钉钉开发者

钉钉能力中心 钉钉开放平台能力中心 钉钉开放平台 能力中心

MySQL 是如何实现RC事务隔离级别的

华为云开发者联盟

MySQL ReadView 事务隔离 RC事务隔离 Read Committed

FinClip 与 uniapp:轻应用平台与前端开发框架

王字 Wannz

小程序 uniapp 移动开发 finclip

FinClip 与 mPaaS:轻应用平台与移动应用开发平台

王字 Wannz

小程序 移动开发 mPaaS finclip 小程序容器

FinClip 的 2021 与 2022

王字 Wannz

finclip 小程序容器 小程序开发 小程序管理平台

2021盘点 | 云主机年度榜单出炉,Top5花落谁家?

博睿数据

低代码OR零代码,企业如何选择自身所需的软件开发平台?

BeeWorks

Linux之at命令

入门小站

Linux

在线YAML转Properties工具

入门小站

工具

分布式进阶(二十三):Nginx 服务器应用详解

No Silver Bullet

nginx https 正向代理与反向代理 SSL证书 2月月更

圆桌会议:如何避免踩到移动研发中,效能提升那些坑

王字 Wannz

移动开发 迭代

IT人的笔记本——全面了解 Jupyter

dongge

jupyterlab

手把手教你使用HarmonyOS本地模拟器

HarmonyOS开发者

HarmonyOS DevEco Studio

恒源云(GPUSHARE)_替代MLM的预训练任务,真的超简单吗?

恒源云

人工智能 自然语言处理 深度学习

【网络安全】一款针对Flutter的逆向工程分析工具

H

网络安全 逆向分析

我与音视频的故事 | 社区征文

Changing Lin

音视频

“热搜”中的分布式数据库

OceanBase 数据库

oceanbase 客户案例 四川农信

JetBrains发布了Kotlin Multiplatform的首个稳定版本_跨端开发_Tim Anderson_InfoQ精选文章