一起看 I/O | 将 Kotlin 引入 Web

一起看 I/O | 将 Kotlin 引入 Web

作者 / 产品经理 Vivek Sekhar

我们将在本文为您介绍 JetBrains 和 Google 的早期实验性工作。您可以观看今年 Google I/O 大会中的 WebAssembly 相关演讲,了解更多详情:

应用开发者想要尽可能地在更多平台上最大限度地吸引用户。当下,该目标意味着开发者需要针对 Android、iOS 和 Web 平台分别构建应用,并构建相应的后端服务器和基础设施来提供支持。

为了减少工作量,一些开发者会使用多平台语言和框架来开发应用的业务逻辑和界面。之前,将这些多平台应用引入 Web 意味着开发者需要将共享的应用代码 "编译" 成可在浏览器中运行且速度较慢的 JavaScript 版本。相反,他们通常会使用 JavaScript 重写应用,或者直接引导 Web 用户下载原生移动应用。

得益于名为 WebAssembly GC 的新技术,Web 社区正在开发更出色的替代方案: 直接支持现代语言的 Web。这项新的 Web 功能允许使用受支持的语言编写的跨平台代码在所有主流浏览器中以接近原生的性能运行。

我们很高兴在 Web 上推出对 Kotlin 新功能的实验性支持,这将让 Android 和 Web 开发者有机会以更快的性能分享新代码。

Web 上的 Kotlin 多平台开发

Kotlin 是一种高效且功能强大的语言,在排名前 1,000 的 Android 应用中使用率达到 95%。开发者表示自己在将编程语言切换至 Kotlin 之后,不仅提高了工作效率,也降低了错误的发生次数

JetBrains 开发的 Kotlin Multiplatform MobileCompose Multiplatform 框架有助于开发者在他们的 Android 和 iOS 应用之间共享代码。这些框架目前提供对 Kotlin 代码编译成 WebAssembly 的实验性支持。早期实验表明,在 Web 上使用 WebAssembly 运行 Kotlin 的速度比使用 JavaScript 快 2 倍。

如需了解更多内容,您可以参阅 JetBrains 所发布的 K2 编译器 1.8.20 版的版本说明,同时您也可以在 文档 中了解如何在自己的应用中试用 Kotlin/Wasm。

大功告成

将 Kotlin 等现代移动语言引入 Web 需要解决具有挑战性的技术难题,如多语言垃圾回收和 JavaScript 互操作性。您可以在今年 Google I/O 大会的 全新 WebAssembly 语言演讲视频 中了解详情:

在此特别感谢浏览器供应商、相关学者和 W3C WebAssembly 社区小组 中不同 Web 服务提供商的开放式协作。没有大家的共同努力,这项工作不可能顺利完成。在接下来的几周,我们将在 V8 博客 中分享有关这项创新工作的技术详情。

展望未来: Web 和原生开发

几十年来,开发者一直希望将 Web 打造为一种 "通用运行时",但与此同时,开发者明白 Web 与原生平台之间还具有一定的功能或性能差距。长期以来,开发者不得不在 Web 和原生移动应用之间进行切换。

但是,我们希望您可以将 Web 和原生体验相结合。这不仅能帮您减少工作量,还可以帮助您利用 Web 的独特优势。

在开放的 Web 生态系统中,您的应用距离吸引新用户仅 "一键之遥"。没有应用商店的阻碍,也没有收益分成影响您的盈利能力,用户可以像分享网页一样轻松发现并分享您的应用。

WebAssembly 具有跨平台开发的能力、原生移动应用的性能和 Web 的开放性,这就是为什么我们喜爱 WebAssembly。

我们期待看到您的下一个杰作!

版权声明

禁止一切形式的转载-禁止商用-禁止衍生 申请授权

脉脉不得语
脉脉不得语
Zhengzhou Website
Android Developer | https://androiddevtools.cn and https://androidweekly.io Funder | GDG Zhengzhou Funder & Ex Organizer | http://Toast.show(∞) Podcast Host

你已经成功订阅到 Android 开发技术周报
太棒了!接下来,完成检验以获得全部访问权限 Android 开发技术周报
欢迎回来!你已经成功登录了。
Unable to sign you in. Please try again.
成功!您的帐户已完全激活,您现在可以访问所有内容。
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.
🍗