2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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:576044

评论 1 条评论

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

高频react面试题自检

beifeng1996

React

看透react源码之感受react的进化

goClient1992

React

中高级前端开发需要掌握的vue知识点

bb_xiaxia1998

Vue

一份vue面试考点清单

bb_xiaxia1998

Vue

Map接口的子类HashMap和LinkedHashMap

共饮一杯无

Java 11月月更 Map集合

首个中文Stable Diffusion模型开源;TPU演进十年;18个PyTorch性能优化技巧 | AI系统前沿动态

OneFlow

人工智能 开源 深度学历 TPU

学习MySQL必须掌握的13个关键字,你get了吗?

小小怪下士

Java MySQL 程序员

从recat源码角度看setState流程

flyzz177

React

从源码角度看React-Hydrate原理

flyzz177

React

图学习初探Paddle Graph Learning 构建属于自己的图【系列三】

汀丶人工智能

图神经网络 11月月更 随机游走算法 异质图

Git学习笔记

lxmoe

git 学习笔记 常用命令 11月月更

深入react源码看setState究竟做了什么?

flyzz177

React

问:React的useState和setState到底是同步还是异步呢?

beifeng1996

React

说说你对Vue的keep-alive的理解

bb_xiaxia1998

Vue

什么是Maven

莪是男神

Java maven 11月月更

ShardingSphere + OpenSergo,共同提升微服务体系下数据库的性能与稳定

SphereEx

数据库 微服务 Apache ShardingSphere

一个 SaaS 软件同本地部署 On-Premises 系统集成的实际项目案例分享

汪子熙

微服务 SaaS 系统集成 On-Premises 11月月更

Spring 5(三)AOP

浅辄

Java Spring5 11月月更

为提高 SDLC 安全,GitHub 发布新功能|GitHub Universe 2022

SEAL安全

GitHub 安全

Flask框架:如何运用Ajax轮询动态绘图

华为云开发者联盟

JavaScript 前端 华为云 企业号十月 PK 榜

一天梳理完react面试题

beifeng1996

React

优化开发人员对 K8s 安全的影响

HummerCloud

Kubernetes DevSecOps 11月月更

clickhouse在风控-风险洞察领域的探索与实践

京东科技开发者

flink 数据 Clickhouse 风控 风险控制

说说Vue响应式系统中的Watcher和Dep的关系-面试进阶

bb_xiaxia1998

Vue

React-Hooks源码深度解读

goClient1992

React

Spring 5(四)JdbcTemplate

浅辄

Java Spring5 11月月更

【设计模式】原型模式:猴头,我叫你一声你敢答应吗?

游坦之

11月月更

【C语言】float 关键字

謓泽

11月月更

python的成员方法的简单介绍

乔乔

11月月更

源码学习之Spring容器创建原理

京东科技开发者

xml spring 源码 容器 测试

React源码分析(一)Fiber

goClient1992

React

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