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

news2024/11/24 18:31:02

a22a326bc3ebaa8e5282cf2efbb3d42b.png

作者 / 产品经理 Vivek Sekhar

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

https://youtu.be/RcHER-3gFXI?t=604

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

2c3b14116b6d89c07a6b26c8b7270ac4.png

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

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

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

e0f2177a34d98baf225dfac0d307e942.png

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 倍。

f4011ded9843b593647c08f0e0e69723.png

  • 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

  • 文档

https://kotlinlang.org/docs/wasm-get-started.html

e44df90ef4cd7c7dd19a065faa9406be.png

大功告成

将 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

2cce4819fbb2fcc500e98f407e6bcafd.png

展望未来: Web 和原生开发

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

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

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

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

我们期待看到您的下一个杰作!欢迎您持续关注 "Android 开发者" 微信公众号,及时了解更多开发技术和产品更新等资讯动态。

6d2b905a2e3b759468ea36a1546eba2e.gif

推荐阅读

如页面未加载,请刷新重试

1a63a68cfe9bf5a2fd35a73ad5d5aadb.gif 点击屏末 阅读原文 | 即刻了解 Kotlin 更多相关内容


70553610e86346742c1a75a50266a99b.png

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

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

相关文章

高阶智驾进入「普及」周期,这四家车企包揽年度方案创新奖

特斯拉、理想等新能源汽车头部企业推动的NOA高阶智能驾驶上车潮,正在席卷整个汽车行业。包括吉利、广汽、长安、红旗等头部自主品牌也在加速推进,同时,在NOA、电子电气架构、数据闭环平台等方面,实现科技平权。 6月8-9日&#xff…

三菱FX3U中级课程-模拟量与PID

可别小看FX3U,它的功能比西门子200smart要强大,对于使用三菱PLC的设备,很多小型设备都可以用FX3U来做。 ​​ 三菱FX3U模拟量与PID 课程章节 第一节课 必须知道的模拟量理论知识 - 大白话讲解00:50:33 第二节课 通过测量空压机的压力才学习…

不确定 A Survey of Uncertainty in Deep Neural Networks(乱记)

随着深度学习技术的不断发展,DNN模型的预测能力变得越来越强,然而在一些情况下这却并不是我们想要的,比如说给模型一个与训练集完全不相关的测试样本,我们希望模型能够承认自己的“无知”,而不是强行给出一个预测结果&…

【深度学习】1 感知机(人工神经元)

认识感知机 感知机接收多个输入信号,输出一个信号 感知机的信号只有“流/不流”(1/0)两种取值 0对应“不传递信号”,1对应“传递信号”。 输入信号被送往神经元时,会被分别乘以固定的权重。神经元会计算传送过来的信号的综合,只有…

云平台 stm32连接oneNET保姆级别教学只看这一篇就够了~

1 注册账号 oneNET点击直达 如图点击右上角开发者中心 点击多协议接入 点击添加产品 如下图设置参数 点击立即添加设备 点击添加设备 如下图设置参数 点击右边的详情查看设备ID和鉴权信息 点击产品概况获取 产品ID 平台注册告一段落 你现在拥有了一个oneNET账号 设备ID …

easycode-自定义的模板-类型对应问题

一、遇到的问题 1、mysql数据库中有些字段没有生成到 在图形工具中修改了表结构 ,增加了字段,这个时候要在idea中刷新下数据库 2、数据库中有tinyint 类型的字段,生成代码后mapper.xml中jdbcType总是BYTE,但是mybatis中并没有BYT…

echarts分割柱形图实现渐变电量效果柱状图

先看下效果图是这个样子的 ,和普通的柱状图最明显的区别就是需要做成类似于电池格电量显示效果。 目录 1、官网找例子 2、改造示例 3、全部代码 4、初始效果和完成效果对比 1、官网找例子 首先到Echarts官网找到基础的柱状图 官网初始option 我们将option复制到…

一文教你彻底学会IIC协议

一文教你如何看懂I2C协议 一.序言二.IIC读写过程2.1主机向从机写入数据2.2主机向从机读取数据2.3 I2C起始信号和停止信号 三. 数据的有效性四.时序要求4.1 起始信号4.2 终止信号4.3 应答信号4.4 非应答信号读取数据五.代码实例 结语 一.序言 背景知识:I2C总线上是通…

顶奢好文:3W字,穿透Spring事务原理、源码,至少读10遍

说在前面 在40岁老架构师 尼恩的读者社区(50)中,最近有小伙伴拿到了一线互联网企业如阿里、美团、极兔、有赞、希音的面试资格,Spring事务源码的面试题,经常遇到: (1) spring什么情况下进行事务回滚? (2) spring 事务…

微服务springcloud 04. 远程调用,负载平衡,重试,ribbon框架

01.springcloud中关于远程调用,负载平衡。 02.远程调用 ribbon 提供了负载均衡和重试功能, 它底层是使用 RestTemplate 进行 Rest api 调用RestTemplate,RestTemplate 是SpringBoot提供的一个Rest远程调用工具。 它的常用方法: getForObject() - 执行…

「深度学习之优化算法」(六)遗传算法

1. 遗传算法简介 遗传算法(Genetic Algorithms,GA)是一种模拟自然中生物的遗传、进化以适应环境的智能算法。由于其算法流程简单,参数较少优化速度较快,效果较好,在图像处理、函数优化、信号处理、模式识别等领域有着广泛的应用。…

电气火灾探测器在智慧城市消防安全的应用 安科瑞 许敏

【摘要】智慧消防应用是重要的建设内容之一。根据固定资产投资额和消防经费测算,2017年消防市场容量合计约2761.65亿元,2020年消防市场规模可达5200亿元。通过梳理各地政府招标项目,预计全国政府智慧消防项目的投入总额可达92.8亿元。 【关键…

基于Java校园美食交流系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

crontab执行时间与系统时间不一致

crontab执行时间与系统时间不一致 一:问题查找: 问题描述:今天新发现一个问题,定时任务写了之后一直不执行,查看日志才发现,执行的时间给我定时的时间相差了12个小时。 1、查看定时任务的相关日志&#…

Nik Color Efex 滤镜详解(1/5)

双色滤镜 Bi-Color Filter 混合两种颜色然后将混合结果添加到图像,以此模拟传统的双色玻璃滤镜效果。 颜色组合 Color Set 提供棕色、冷/暖、绿色/棕色、青苔色、紫色/粉红色等多种颜色组合,每个颜色组合又有 4 种版本可供选择。 不透明度 Opacity 调整…

Stuart Russell对话姚期智:为全人类设计AI系统,可以借鉴墨子「兼爱」思想丨2023智源大会AI安全与对齐论坛...

导读 在2023智源大会「AI安全与对齐论坛」的对话环节,加州大学伯克利分校教授Stuart Russell与图灵奖得主、中国科学院院士姚期智针对「如何设计对人类有益的AI」、「如何管控AI技术」,以及「LLM内在目标与意识」等话题进行了深度探讨,其中St…

一键式 RLHF 训练 DeepSpeed Chat(二):实践篇

一键式 RLHF 训练 DeepSpeed Chat(二):实践篇 之前给大家分享了一键式 RLHF 训练 DeepSpeed Chat(一):理论篇,本文给大家分享如何使用DeepSpeed Chat进行RLHF训练。 DeepSpeed Chat 的 RLHF 训…

每日算法(第二十三期)

先来回顾一下上期的问题及答案: 2023年6月14日 「最接近的三数之和」(3Sum Closest)。以下是题目的描述: 给定一个包括 n 个整数的数组 nums 和一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接…

活动预告 | Hugging Face 音频 AI 派对直播

嘿嘿嘿,🤗 宝子们!我们正在准备一个超级激动人心的音频 AI 派对,千万别错过!为了庆祝 Hugging Face 新开设的免费开源 Audio Transformers 课程的启动,我们组织了一场不容错过的网络直播活动! &…

Docker 容器入侵排查

随着越来越多的应用程序运行在容器里,各种容器安全事件也随之发生,例如攻击者可以通过容器应用获取容器控制权,利用失陷容器进行内网横向,并进一步逃逸到宿主机甚至攻击K8s集群。 容器的运行环境是相对独立而纯粹,当容…