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

作者 / 产品经理 Vivek Sekhar
我们将在本文为您介绍 JetBrains 和 Google 的早期实验性工作。您可以观看今年 Google I/O 大会中的 WebAssembly 相关演讲,了解更多详情:
https://youtu.be/RcHER-3gFXI?t=604
应用开发者想要尽可能地在更多平台上最大限度地吸引用户。当下,该目标意味着开发者需要针对 Android、iOS 和 Web 平台分别构建应用,并构建相应的后端服务器和基础设施来提供支持。

为了减少工作量,一些开发者会使用多平台语言和框架来开发应用的业务逻辑和界面。之前,将这些多平台应用引入 Web 意味着开发者需要将共享的应用代码 "编译" 成可在浏览器中运行且速度较慢的 JavaScript 版本。相反,他们通常会使用 JavaScript 重写应用,或者直接引导 Web 用户下载原生移动应用。
得益于名为 WebAssembly GC 的新技术,Web 社区正在开发更出色的替代方案: 直接支持现代语言的 Web。这项新的 Web 功能允许使用受支持的语言编写的跨平台代码在所有主流浏览器中以接近原生的性能运行。
我们很高兴在 Web 上推出对 Kotlin 新功能的实验性支持,这将让 Android 和 Web 开发者有机会以更快的性能分享新代码。

Web 上的 Kotlin 多平台开发
Kotlin 是一种高效且功能强大的语言,在排名前 1,000 的 Android 应用中使用率达到 95%。开发者表示自己在将编程语言切换至 Kotlin 之后,不仅提高了工作效率,也降低了错误的发生次数。
Kotlin
https://kotlinlang.org/不仅提高了工作效率,也降低了错误的发生次数
https://www.jetbrains.com/lp/devecosystem-2021/kotlin/#Kotlin_what-do-you-use-kotlin-for-project-type
JetBrains 开发的 Kotlin Multiplatform Mobile 和 Compose Multiplatform 框架有助于开发者在他们的 Android 和 iOS 应用之间共享代码。这些框架目前提供对 Kotlin 代码编译成 WebAssembly 的实验性支持。早期实验表明,在 Web 上使用 WebAssembly 运行 Kotlin 的速度比使用 JavaScript 快 2 倍。

Kotlin Multiplatform Mobile
https://kotlinlang.org/lp/mobile/Compose Multiplatform
https://www.jetbrains.com/lp/compose-multiplatform/
如需了解更多内容,您可以参阅 JetBrains 所发布的 K2 编译器 1.8.20 版的版本说明,同时您也可以在文档中了解如何在自己的应用中试用 Kotlin/Wasm。
K2 编译器 1.8.20 版的版本说明
https://kotlinlang.org/docs/whatsnew1820.html#new-kotlin-wasm-target文档

大功告成
将 Kotlin 等现代移动语言引入 Web 需要解决具有挑战性的技术难题,如多语言垃圾回收和 JavaScript 互操作性。您可以在今年 Google I/O 大会的全新 WebAssembly 语言演讲视频中了解详情:
https://youtu.be/RcHER-3gFXI?t=604
在此特别感谢浏览器供应商、相关学者和 W3C WebAssembly 社区小组中不同 Web 服务提供商的开放式协作。没有大家的共同努力,这项工作不可能顺利完成。在接下来的几周,我们将在 V8 博客中分享有关这项创新工作的技术详情。
W3C WebAssembly 社区小组
https://www.w3.org/community/webassembly/V8 博客
https://v8.dev/blog

展望未来: Web 和原生开发
几十年来,开发者一直希望将 Web 打造为一种 "通用运行时",但与此同时,开发者明白 Web 与原生平台之间还具有一定的功能或性能差距。长期以来,开发者不得不在 Web 和原生移动应用之间进行切换。
但是,我们希望您可以将 Web 和原生体验相结合。这不仅能帮您减少工作量,还可以帮助您利用 Web 的独特优势。
在开放的 Web 生态系统中,您的应用距离吸引新用户仅 "一键之遥"。没有应用商店的阻碍,也没有收益分成影响您的盈利能力,用户可以像分享网页一样轻松发现并分享您的应用。
WebAssembly 具有跨平台开发的能力、原生移动应用的性能和 Web 的开放性,这就是为什么我们喜爱 WebAssembly。
我们期待看到您的下一个杰作!欢迎您持续关注 "Android 开发者" 微信公众号,及时了解更多开发技术和产品更新等资讯动态。

推荐阅读
如页面未加载,请刷新重试
点击屏末 | 阅读原文 | 即刻了解 Kotlin 更多相关内容

相关文章:
一起看 I/O | 将 Kotlin 引入 Web
作者 / 产品经理 Vivek Sekhar 我们将在本文为您介绍 JetBrains 和 Google 的早期实验性工作。您可以观看今年 Google I/O 大会中的 WebAssembly 相关演讲,了解更多详情: https://youtu.be/RcHER-3gFXI?t604 应用开发者想要尽可能地在更多平台上最大限度地吸引用户…...
极致呈现系列之:Echarts地图的浩瀚视野(一)
目录 Echarts中的地图组件地图组件初体验下载地图数据准备Echarts的基本结构导入地图数据并注册展示地图数据结合visualMap展示地图数据 Echarts中的地图组件 Echarts中的地图组件是一种用于展示地理数据的可视化组件。它可以显示全国、各省市和各城市的地图,并支持…...
第四章 模型篇:模型训练与示例
文章目录 SummaryAutogradFunctions ()GradientBackward() OptimizationOptimization loopOptimizerLearning Rate SchedulesTime-dependent schedulesPerformance-dependent schedulesTraining with MomentumAdaptive learning rates optim.lr_scheluder Summary 在pytorch_t…...
利用人工智能模型学习Python爬虫
爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 网络爬虫(又称为网页蜘蛛,网络机器人)是其中一种类型。 爬虫可以自动化浏览网络中的信息,当然浏览信息的时候需要按照我们制定的规则进行,这些规则我们称之为网络…...
.Net泛型详解
引言 在我们使用.Net进行编程的过程中经常遇到这样的场景:对于几乎相同的处理,由于入参的不同,我们需要写N多个重载,而执行过程几乎是相同的。更或者,对于几乎完成相同功能的类,由于其内部元素类型的不同&…...
C++ 教程(10)——存储类
存储类定义 C 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C 程序中可用的存储类: autoregisterstaticexternmutablethread_local (C11) 从 C 17 开始,auto 关键字不再是 C 存储…...
vue3+vite+element-plus创建项目,修改主题色
element-plus按需引入,修改项目的主题色 根据官方文档安装依赖 npm install -D unplugin-vue-components unplugin-auto-import vite.config.js配置 // vite.config.ts import { defineConfig } from vite import AutoImport from unplugin-auto-import/vite …...
mysql select是如何一步步执行的呢?
mysql select执行流程如图所示 server侧 在8.0之前server存在查询语句对应数据的缓存,不过在实际使用中比较鸡肋,对于更新比较频繁、稍微改点查询语句都会导致缓存无法用到 解析 解析sql语句为mysql能够直接执行的形式。通过词法分析识别表名、字段名等…...
找到距离最近的点,性能最好的方法
要找到距离最近的点并且性能最好,一种常用的方法是使用空间数据结构来加速搜索过程。以下是两个常见的数据结构和它们的应用: KD树(KD-Tree):KD树是一种二叉树数据结构,用于对k维空间中的点进行分割和组织…...
vue基础--重点
!1、vue的特性 !2、v-model 双向数据绑定指令 (data数据源变化,页面变化; 页面变化,data数据源也变化) 1、v-model 会感知到 框中数据变化 2、v-model 只有在表单元素中使用,才能…...
HarmonyOS元服务端云一体化开发快速入门(上)
一、前提条件 您已使用已实名认证的华为开发者帐号登录DevEco Studio。 请确保您的华为开发者帐号余额充足,账户欠费将导致云存储服务开通失败。 二、选择云开发模板 1.选择以下任一种方式,打开工程创建向导界面。 如果当前未打开任何工程,…...
leetcode 279.完全平方数
题目描述 给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 …...
Spring boot ApplicationContext
https://www.geeksforgeeks.org/spring-applicationcontext/ AnnotationConfigApplicationContext container 对象直接标注annotation: Configuration, Component ApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class, AppConf…...
【Python实战】Python采集王者皮肤图片
前言 我们上一篇介绍了,如何采集王者最低战力,本文就来给大家介绍如何采集王者皮肤,买不起皮肤,当个桌面壁纸挺好的。下面,我和大家介绍如何获取数据。 环境使用 python 3.9pycharm 模块使用 requests 模块介绍 re…...
很详细的Django开发入门详解(图文并茂)
1.Django概述 Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。 Django 框架的核心组件有: 用于创建模型的对象关系映射;为最终用户设计较好的管理界面;…...
Ansible 部署
ansible 自动化运维工具,可以实现批量管理多台(成百上千)主机,应用级别的跨主机编排工具 特性: 无agent的存在,不要在被控制节点上安装客户端应用 通过ssh协议与被控制节点通信 基于模块工作的,…...
【操作系统】计算机操作系统知识点总结
文章目录 前言一、操作系统的概念与发展二、操作系统的结构与功能1、操作系统的结构2、操作系统的功能 三、进程管理1、进程2、进程的创建3、进程管理的实现4、进程控制块 四、内存管理1、内存2、内存管理3、内存管理的实现 五、文件系统1、文件系统2、文件系统的主要任务3、文…...
springmvc整合thymeleaf
概述 Thymeleaf提供了一组Spring集成,使您可以将其用作Spring MVC应用程序中JSP的全功能替代品。 这些集成将使您能够: Controller像使用JSP一样,将Spring MVC 对象中的映射方法转发到Thymeleaf管理的模板。在模板中使用Spring表达式语言&…...
Redis 内存管理机制
Redis作为一个内存数据库,内存资源非常珍贵。因此,Redis引入了3种内存管理机制来释放不必要的内存,包括定期删除、惰性删除和内存淘汰机制。 定期删除 定期删除是Redis内存管理机制的一种,它用于删除过期的键值对。Redis每隔 10…...
Apache Zeppelin系列教程第九篇——Zeppelin NoteBook数据缓存
背景 在使用Zeppelin JDBC Intercepter 对于Hive 数据进行查询过程中,如果遇到非常复杂的sql,查询效率是非常慢 比如: select dt,count(*) from table group by dt做过数据开发的同学都知道,在hive sql查询过程中,hive…...
2025届必备的六大AI科研方案推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 从文本特征着手,才能降低人工智能生成内容被检出的概率。首先,要融入…...
Degrees of Lewdity中文本地化完全指南:解决游戏语言障碍的3个实用技巧
Degrees of Lewdity中文本地化完全指南:解决游戏语言障碍的3个实用技巧 你是否因Degrees of Lewdity英文界面而无法深入体验游戏?是否曾因汉化步骤繁琐而放弃尝试?本指南将通过模块化解决方案,帮助你快速完成游戏汉化,…...
别再死记硬背公式了!用“预测-更新”的贝叶斯视角,5分钟看懂卡尔曼滤波核心
卡尔曼滤波:用贝叶斯思维解决自动驾驶中的不确定性追踪问题 想象一下你正驾驶一辆特斯拉行驶在高速公路上,车载雷达显示前方100米处有一辆卡车。但下一秒雷达数据突然跳变到105米,而摄像头却显示距离是98米。作为人类司机,你会本能…...
WeChatFerry:基于RPC与DLL注入的微信PC端自动化框架深度解析
1. 项目概述与核心价值 最近在折腾微信自动化相关的东西,发现了一个挺有意思的项目——WeChatFerry。这名字起得挺形象,“Ferry”是渡轮的意思,感觉就像是在你的程序和微信客户端之间搭了一座桥,让数据可以安全、稳定地“摆渡”过…...
Nexus Machine架构:边缘计算中稀疏矩阵处理的革新
1. 项目概述:Nexus Machine架构的创新价值在边缘计算和AI推理领域,稀疏矩阵计算(如SpMSpM、SpMV)和图形处理(如BFS、PageRank)等不规则工作负载正面临严峻的性能瓶颈。传统CGRA(Coarse-Grained …...
Flow区块链开发:用AI规则库提升Cadence智能合约与FCL前端开发效率
1. 项目概述与核心价值 如果你正在Flow区块链上用Cadence语言开发智能合约,并且恰好也在用Cursor这样的AI辅助编程工具,那你可能和我一样,经历过一个有点“分裂”的阶段。一方面,Cadence作为一门资源导向型语言,其独特…...
清华PPT模板终极指南:从零开始打造专业学术演示
清华PPT模板终极指南:从零开始打造专业学术演示 【免费下载链接】THU-PPT-Theme 清华主题PPT模板 项目地址: https://gitcode.com/gh_mirrors/th/THU-PPT-Theme THU-PPT-Theme是一个专门为清华大学师生和学术工作者设计的PPT模板集合,提供了多种符…...
Loop:基于Swift开发的macOS窗口管理框架解决方案
Loop:基于Swift开发的macOS窗口管理框架解决方案 【免费下载链接】Loop Window management made elegant. 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 在macOS桌面环境中,多窗口管理一直是效率工作流的关键瓶颈。传统的手动拖拽操作…...
PowerBI主题模板终极指南:35款可视化模板快速美化报表
PowerBI主题模板终极指南:35款可视化模板快速美化报表 【免费下载链接】PowerBI-ThemeTemplates Snippets for assembling Power BI Themes 项目地址: https://gitcode.com/gh_mirrors/po/PowerBI-ThemeTemplates 还在为PowerBI报表的单调外观而烦恼吗&#…...
嵌入式开发中的编程规范实践与行业标准解析
1. 编程规范的本质与价值在嵌入式汽车电子领域干了十五年,我见过太多因为代码不规范导致的惨痛教训。有一次,某车企的ECU控制模块在零下30度环境突然死机,排查三周后发现是未初始化的指针在低温环境下产生了非预期行为——这种问题本可以通过…...
