KotlinConf 2024:深入了解Kotlin Multiplatform (KMP)

KotlinConf 2024:深入了解Kotlin Multiplatform (KMP)

在近期的Google I/O大会上,我们推荐了Kotlin Multiplatform (KMP)用于跨移动、网页、服务器和桌面平台共享业务逻辑,并在Google Workspace中采用了KMP。紧接着,KotlinConf 2024成为与Kotlin社区分享亮点并交流的重要时刻。

Kotlin Multiplatform (KMP) 的优势

Kotlin Multiplatform由JetBrains开发,允许开发者通过将Kotlin代码编译为平台原生的二进制文件来构建跨平台应用,同时利用现代内存管理语言的全部功能。这种方法是Google Workspace团队的长期投资,使他们能够在不同平台之间共享业务逻辑。

Android团队一直在努力支持KMP,并最近发布了支持KMP的Room的alpha版本。目前,Annotations、Collections和DataStore已经在支持KMP的稳定版中发布。我们还对Lifecycle、ViewModel和Paging库进行了通用化处理,以便与非Android平台集成。

大会主题演讲和技术会议

会议以主题演讲开始,Google的Jeffrey van Gogh概述了Google对Kotlin生态系统的贡献。Jeffrey深入探讨了Google如何利用Kotlin Multiplatform (KMP)简化其产品组合的开发。Jeffrey强调了KMP为Google项目带来的代码共享和效率提升的好处,这与我们最近对Android应用开发的建议一致。

在KotlinConf 2024上的技术会议涵盖了一系列主题:

  1. 《两种语言的故事》
    由John Pampuch带来的这场演讲,通过对比Java和Kotlin的演变,展示了它们的共生关系和相互影响。

  2. 《启用Kotlin Multiplatform成功:Android Jetpack之旅》
    由Elif Bilgin、Yigit Boyar和Daniel Santiago Rivera代表的Android Jetpack团队,分享了KMP在Jetpack中的当前状态,介绍了支持KMP的Jetpack库更新,并探讨了将一个成熟的Jetpack库迁移到KMP的过程。

  3. 《使用Kotlin加速开发》
    由Andrei Shikov分享了优化Compose for Android的宝贵经验,强调了Kotlin中的一些有趣性能细节以及Compose团队为确保最佳性能而建立的保护措施。

  4. 《Google Workspace中的Kotlin Multiplatform》
    由Jason Parachoniak讨论了Google Workspace从以Java为导向的多平台基础迁移到Kotlin Multiplatform的过程,分享了所学到的经验和这一雄心勃勃的过渡的当前状态。

  5. 《编写你自己的Kotlin Lint检查》
    由Android Studio工程总监Tor Norbye带来的这场会议,帮助开发者通过创建自己的检查来扩展Android Lint,这是一种被数百万开发者使用的静态分析工具。尽管名字如此,它不仅仅针对Android——还用于分析Google内部的服务器端Kotlin和Java代码!

Android 支持 Kotlin Multiplatform (KMP) 实现跨移动、网页、服务器和桌面平台的业务逻辑共享

传统上,开发者需要为每个平台单独编写代码,或者在复用代码时做出许多妥协。自2017年以来,Android 一直积极支持 Kotlin。今天在 Google I/O 大会上,我们宣布支持 Kotlin Multiplatform (KMP),这使得跨移动、网页、服务器和桌面平台共享代码成为可能,从而提高开发者的生产力,并与 Android 的 Kotlin 优先策略完美契合,最终提升 Android 应用的质量。

Kotlin Multiplatform (KMP) 的长期投资

Google Workspace 团队长期以来一直投资于 KMP,这使得跨平台体验的交付更加灵活和快速。Google Workspace 团队对 KMP 作为多平台架构投资方向的潜力充满信心,认为其能够满足各种工作负载的性能预期。

首个应用案例

这一旅程的初始步骤是推出 Google Docs 应用,该应用利用 KMP 实现了 Android、iOS 和网页端的共享业务逻辑,验证了其在 Google 规模上的生产就绪性。Google Workspace 团队期待继续探索 KMP 在其产品套件中的可能性,旨在提高生产力,并为所有平台的用户提供无缝体验。

跨平台开发的成功案例

许多公司已经成功利用 KMP 进行跨平台应用开发,了解他们如何应用不同的代码共享策略。Kotlin Multiplatform 由 JetBrains 开发,通过将 Kotlin 编译为平台原生二进制文件,提供了一种共享代码的新方法。Kotlin 能够为本机平台提供完整、现代的内存管理语言,实现原生互操作性和渐进采用。结合其他平台上的 Kotlin Multiplatform,Kotlin 在 Android 上提供了一种提高生产力和质量的绝佳方式,同时不妥协性能和互操作性。

当前支持状态

许多广泛使用的库提供了对 Kotlin Multiplatform 的内置支持,简化了跨平台开发体验。这些库无缝协作,例如,Ktor 通过处理 REST 服务消费简化了网络任务,kotlinx.serialization 将数据转换为 JSON 等格式,而 Okio 处理基本的文件 I/O。此外,SKIE 支持在 iOS 上使用现代类型和协程,CocoaPods 集成则使得使用 iOS 特定依赖项成为可能。

我们与 JetBrains 及 Kotlin 开发者社区合作,为许多 Jetpack 库添加了 KMP 支持。在某些情况下,我们提供了 iOS 平台目标,而在其他情况下,JetBrains 和社区提供了多平台发行版。

目前,Annotations、Collections 和 DataStore 库均已在稳定版中支持 Kotlin Multiplatform。我们还在增加对 iOS 平台目标的二进制兼容性验证支持,使其达到与 Android 相同的质量标准。除了上述库之外,我们还开始为 Room、Lifecycle 和 ViewModels 添加 Kotlin Multiplatform 支持,alpha 版本现已可用。为了更好地理解哪些类和函数在哪些平台上可用,库参考文档现在标明了“common”和平台支持。

编译器和性能优化

Android 工程师与 JetBrains 合作改进 Kotlin/Native(用于 iOS 和原生桌面操作系统)的运行时性能,在编译器基准测试中显示出18%的运行时性能提升。此外,Android 团队还贡献了 Kotlin Native Compiler 的构建时间性能改进,速度提高了多达2倍。

Android Gradle 插件现在正式支持 Kotlin Multiplatform,能够通过简洁的构建定义将 Android 作为共享代码的平台目标,如下所示:

plugins {id("org.jetbrains.kotlin.multiplatform")id("com.android.library")
}kotlin {androidTarget {compilations.all {kotlinOptions {jvmTarget = "11"}}}  listOf(iosX64(),iosArm64(),iosSimulatorArm64()).forEach { iosTarget ->iosTarget.binaries.framework {baseName = "Shared"isStatic = true}}    sourceSets {commonMain.dependencies {// 在这里添加你的多平台依赖项}}
}

Android Gradle 插件 DSL 中的 KMP 支持

由于 Android Studio 基于 JetBrains 的 IntelliJ 平台,因此它继承了对 Kotlin Multiplatform 代码编辑和许多其他开发功能的支持。其他 Android 开发工具,如 Android Lint 和 Kotlin Symbol Processing (KSP),也开始增加更多的 Kotlin Multiplatform 支持。

Google Chrome 现在正式支持 WasmGC,这被 Kotlin Multiplatform 的 WebAssembly 平台目标使用,以高效且性能良好的方式实现与浏览器的代码共享。

了解更多KMP

此外,你可以查看更新的文档和一个新的移动示例项目。这些资源应该能够帮助你开始学习KMP,如果你有任何反馈或遇到任何问题,请通过此链接分享。

https://developer.android.com/kotlin/multiplatform

https://github.com/android/kotlin-multiplatform-samples

https://developer.android.com/jetpack/androidx/releases/room#version_27_2

展望未来

我们对Kotlin的未来充满期待,计划在更多的AndroidX库中添加对KMP的支持。我们期待看到你们如何采用并使用KMP构建下一代应用。

KotlinConf 2024不仅是展示最新技术和工具的平台,更是开发者之间交流和学习的盛会。通过KMP,开发者们可以更高效地在多个平台上共享业务逻辑,提升开发速度和质量。Google在Kotlin生态系统中的持续投入,展示了我们对这一技术的长期承诺和信心。

https://android-developers.googleblog.com/2024/05/android-support-for-kotlin-multiplatform-to-share-business-logic-across-mobile-web-server-desktop.html

在未来的开发过程中,我们将继续致力于优化KMP的使用体验,提供更多的资源和支持,帮助开发者们更好地利用这一强大的工具。期待在不久的将来,看到更多优秀的应用诞生,推动整个Kotlin社区的进步和发展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/845567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【设计模式深度剖析】【7】【结构型】【享元模式】| 以高脚杯重复使用、GUI中的按钮为例说明,并对比Java类库设计加深理解

👈️上一篇:外观模式 | 下一篇:结构型设计模式对比👉️ 设计模式-专栏👈️ 目录 享元模式定义英文原话直译如何理解?字面理解例子:高脚杯的重复使用例子:GUI中的按钮传统方式使用享元模式 4个角色1. …

锻压设备智能制造工厂物联数字孪生平台,推进制造业数字化转型

锻压设备智能制造工厂物联数字孪生平台,推进制造业数字化转型。随着全球制造业的飞速发展,数字化转型已经成为企业提升竞争力、实现可持续发展的关键。在锻压设备智能制造领域,工业物联数字孪生平台以其强大的数据集成、分析和管理能力&#…

国际物流管理系统的选择:花钱不怕,就怕花冤枉钱

现在市场上的国际物流管理系统还是非常多的,想在这么多类型的系统中选择一套适合自己的系统确实不是个简单的事情。 尤其是现在很多物流商其实都是比较小的国际物流商,很多大型的,过于复杂的系统并不适合这个群体。那这个群体应该怎么选择国…

mfc140u.dll丢失的解决方法有哪些?怎么全面修复mfc140u.dll文件

mfc140u.dll丢失其实相对来说不太常见到,因为这个文件一般是不丢失的,不过既然有人遇到这种问题,那么小编一定满足各位,给大家详细的唠叨一下mfc140u.dll丢失的各种解决方法,教大家以最快最有效率的方法去解决mfc140u.…

AI播客下载:a16z (主题为AI、web3、生物技术等风险投资)

a16z播客是一个综合性的科技和创新领域的媒体平台,通过多种节目形式和丰富的内容,为广大听众提供了一个了解最新科技趋势和创新思维的窗口。a16z播客是由安德里森霍罗威茨(Andreessen Horowitz,简称a16z)推出的一个科技…

汽车MCU虚拟化--对中断虚拟化的思考(1)

目录 1.中断虚拟化的困惑 2.从R52入手 3.小结 1.中断虚拟化的困惑 在车控类控制器里,中断对于我们来说是非常宝贵的资源,可大幅提高系统实时性。 这些中断基本都属于实际物理硬中断(软中断另说),例如对一个按键按下的中断响应&#xff0…

基于单片机的恒流开关电源 BUCK电路设计

1 前言 1.1课题研究意义 开关电源顾名思义,开关电源便是使用半导体开关器件(如晶体管、场效应管、可控硅闸流管等),经过控制电路,使半导体开关器件不停地“导通”和“关闭”,让半导体开关器件对输入的电压…

AI炒股-批量爬取网易财经的要闻板块

工作任务和目标&#xff1a;批量爬取网易财经的要闻板块 在class"tab_body current"的div标签中&#xff1b; 标题和链接在&#xff1a;<a href"https://www.163.com/dy/article/J2UIO5DD051188EA.html">华为急需找到“松弛感”</a> 第一步&…

短剧源码:打造个性化的在线短剧观看平台

随着短视频和短剧内容的兴起&#xff0c;越来越多的用户开始追求快节奏、高效率的娱乐方式。短剧源码的开发&#xff0c;为满足这一需求提供了技术基础。本文将详细介绍短剧源码的构成&#xff0c;以及如何通过这一源码打造个性化的在线短剧观看平台。 一、首页设计 首页是用…

【C++题解】1448. 随机体能测试

问题&#xff1a;1448. 随机体能测试 类型&#xff1a;循环应用&#xff0c;嵌套循环 题目描述&#xff1a; 学校想随机抽取一部分同学参加体能测试&#xff0c;看看同学们的体能怎么样。 张老师想了一个办法&#xff0c;找出学号中含有 1 的同学&#xff0c;让他们参加体能测…

并发和异步编程:详细概述

01 Concurrency and Asynchronous Programming: a Detailed Overview 并发和异步编程:详细概述 Asynchronous programming is one of those topics many programmers find confusing. You come to the point when you think you’ve got it, only to later realize that the …

162.二叉树:填充每个节点的下一个右侧节点指针(力扣)

代码解决 /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node* next;Node() : val(0), left(NULL), right(NULL), next(NULL) {}Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {}Node(int _val, Node* _left, Node* _…

ipv6基础

地址 前缀子网主机位 PI法则3.14 前缀&#xff1a;3个16位 子网&#xff1a;1个16位 接口ID&#xff1a;4个16位 地址分类 未指定地址 ::/128 &#xff0c;类似于0.0.0.0 本地回环地址 ::1/128 &#xff0c;用于本地测试&#xff0c;类似于127.0.0.1 本地链路地址&#x…

利用GNSS IMU集成提高车道级定位精度

准确的定位对于很多不同的事情都是至关重要的。导航系统可以引导我们去某个地方&#xff0c;自动驾驶汽车可以利用这些数据在道路上安全行驶。尽管全球导航卫星系统(GNSS)在定位方面非常出色&#xff0c;但它们可能并不总是提供最准确的车道水平事实。解决这个问题的一个有希望…

如何矢将量数据转换为栅格数据

在我们分析GIS数据时&#xff0c;有时候也可能需要将矢量数据转换为栅格数据来使用&#xff0c;例如&#xff1a;使用AI图像识别技术进行GIS数据分析或导航的时候&#xff01;矢量数据就可能不满足需求了&#xff01; GIS数据转换器-矢量V5.0具有矢量数据转换为栅格数据的功能…

Python魔法之旅-魔法方法(07)

目录 一、概述 1、定义 2、作用 二、应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类型检…

linux部署运维1——centos7.9离线安装部署涛思taos2.6时序数据库TDengine

在实际项目开发过程中&#xff0c;并非一直都使用关系型数据库&#xff0c;对于工业互联网类型的项目来说&#xff0c;时序型数据库也是很重要的一种&#xff0c;因此掌握时序数据库的安装配置也是必要的技能&#xff0c;不过对于有关系型数据库使用的开发工作者来说&#xff0…

如何获取SSL证书,消除网站不安全警告

获取SSL证书通常涉及以下几个步骤&#xff1a; 选择证书颁发机构&#xff08;CA&#xff09;&#xff1a; 你需要从受信任的SSL证书颁发机构中选择一个&#xff0c;比如DigiCert、GlobalSign、JoySSL等。部分云服务商如阿里云、腾讯云也提供免费或付费的SSL证书服务。 生成证…

大数据之HIVE,一次HIVESQL执行的过程(四)

在hive中执行如下sql INSERT OVERWRITE TABLE XXX SELECT * from XXX 数据最终是怎么存储到hdfs上的过程 执行的过程当中,打印出如下的日志过程,本质上是一个在MapReduce中进行Shuffle的过程 所以下面就Shuffle的过程进行分析 Shuffle 描述的是数据从 Map 端到 Reduce 端的…

曾巩,散文的艺术与哲思

曾巩&#xff0c;字子固&#xff0c;世称南丰先生&#xff0c;南丰&#xff08;今江西&#xff09;人&#xff0c;生于北宋真宗天禧三年&#xff08;公元1019年&#xff09;&#xff0c;卒于北宋元丰六年&#xff08;公元1083年&#xff09;&#xff0c;享年64岁。他是中国北宋…