取代JavaScript不成后谋新路!谷歌主导Dart升级,为生成式AI铺路

原创 精选
开发 前端
Flutter是一个跨平台的UI开发框架,使用了Dart语言。Dart可以编译为针对Arm32、Arm64或x86_64的原生可执行文件,或者编译为JavaScript。同属于谷歌的Flutter和Dart,可以称得上是互相成就。

整理丨诺亚

出品 | 51CTO技术栈(微信号:blog51cto)

众所周知,Dart语言的流行与其关联的Flutter框架密切相关。

于2011年推出的Dart,起初致力于成为一门结构化的Web编程语言,暗藏取代JavaScript的野心。结果却险些半道折戟,直到Flutter 的火爆才让 Dart 重新进入大众的视线。

Flutter是一个跨平台的UI开发框架,使用了Dart语言。Dart可以编译为针对Arm32、Arm64或x86_64的原生可执行文件,或者编译为JavaScript。同属于谷歌的Flutter和Dart,可以称得上是互相成就。

日前,Dart又有新动作,谷歌发布了Dart 3.3版本。此版本的发布标志着Dart语言在支持Flutter WebAssembly方面迈出了重要一步。

这次更新为开发人员提供了实验性的WebAssembly支持,使得开发者能够以更高效的方式将Dart编写的代码编译到WebAssembly标准,从而在浏览器环境中运行高性能的Flutter web应用。更值得注意的是,谷歌还发布了用于在Dart和Flutter应用中构建生成式AI功能的SDK。

1、新模式:加强与JS的互操作

在Dart 3.3中,谷歌引入了一种与JavaScript库进行互操作的新模式,这对于顺利过渡到使用WebAssembly至关重要。这意味着应用程序和包作者现在可以开始调整其代码结构,以便于未来与WebAssembly兼容。尽管当前Flutter对于WebAssembly的支持还处于试验阶段,但谷歌团队正积极致力于稳定和完善这一功能。

早在2023年3月于巴塞罗那举办的Wasm I/O大会上,Google Flutter和Dart产品经理Kevin Moore就表示,根据“非常有限的基准测试”,相较于编译为JavaScript,通过WebAssembly实现的性能提升可达1.5至3倍。

与微软的C#不同,Dart编译为WebAssembly时采用的是WasmGC,这是Wasm中针对垃圾收集语言的新标准API,但目前仅在基于Chromium的浏览器和Firefox中有效,而不支持Safari。

如今,Dart 3.3版本包含了迈向WebAssembly生产级使用的重大一步,其中包含一个全新的JavaScript互操作模型。“现在,Dart开发者能够访问一种用于与JavaScript交互的类型化API。”Moore在上周发布的文章中解释道。

尤其需要指出的是,在Dart 3.3中的扩展类型引入了针对类型的零成本包装器。新模型利用了一种被称为“在现有类型上以不同的、仅静态的接口进行‘包装’的编译时抽象”。

其优点在于,它们能够在无额外开销的情况下修改现有类型的接口,而不同于需要额外运行时对象的包装类,这使得扩展类型非常适合高效的JavaScript互操作。

图片图片

可以说,扩展类型不仅提供了自定义类型的便捷性,同时消除了包装器分配的开销。因此,谷歌指出,可以直接使用原生类型,无需创建包装器及其相关的间接调用开销,从而提升了性能表现。

2、新用意:为生成式AI铺路

使用这种新的JavaScript互操作模型是支持Wasm所必需的,但需要对旧代码进行迁移。为了使Flutter应用能够利用WebAssembly在Web平台上运行,开发者需要将所有相关的应用代码及其依赖项迁移到Dart中的新JavaScript互操作机制以及package:web提供的工具和技术上。

Dart团队表示:“如果您维护了一个使用dart:html或其他任何Dart SDK web库的公共Flutter包,应尽快迁移到package:web。长期来看,package:web将替代dart:html和其他web库作为Dart的Web互操作解决方案。”

在过渡期间,开发者可能会遇到一些阻力。为此,Dart团队发布了详细的迁移指南,以协助开发者适应这些变化并顺利启动基于WebAssembly的Flutter Web项目。

虽然Wasm支持主要针对Flutter,但并非完全如此。

团队在GitHub上指出:“尽管Wasm最初是为了在Web上运行原生代码而设计的,但此后Wasm已经发展成为一种跨多个平台运行编译代码的通用技术。”未来应用场景可能包括在服务器端代码中使用Wasm编译的Dart。

随着Dart 3.3的发布,谷歌还推出了AI Dart SDK,该SDK通过package:google_generative_ai调用谷歌的Gemini AI模型,使得开发者能够利用Gemini API在Dart或Flutter应用中构建生成式AI功能。

Flutter全球产品经理Ander Dobo表示,Dart支持即将添加到谷歌的AI Studio中。AI Dart SDK的引入表明,谷歌正利用其对开源Dart和Flutter项目的支持,引导开发者使用其AI服务。

责任编辑:武晓燕 来源: 51CTO技术栈
相关推荐

2011-09-16 10:55:06

2023-07-24 12:11:37

人工智能

2023-08-02 10:17:06

谷歌AI

2023-08-30 13:09:43

AI数据

2011-03-14 14:31:06

2023-04-26 09:06:23

Opera One浏览器

2023-12-13 08:00:00

人工智能大语言模型数字化转型

2023-04-12 16:47:23

2023-07-17 16:07:51

人工智能监管部门

2023-06-18 12:18:57

2022-11-11 10:27:05

AI谷歌人工智能

2023-08-10 07:37:53

NVIDIAAIOpenUSD

2024-03-11 09:55:51

2017-08-28 15:24:36

AIWIFI网络

2023-08-21 11:10:32

生成式AI谷歌

2023-10-27 11:13:46

2013-09-09 10:35:34

JavaScriptDart谷歌

2023-05-11 11:27:49

AI 助手谷歌
点赞
收藏

51CTO技术栈公众号