1.许可证授予 ThisreportislicensedundertheCreativeCommonsAttribution-NoDerivativesLicence4.0 (International).Portsimply,subjecttothetermsandconditionsofthislicense,youarefreeto: 分享-出于商业和非商业目的,您可以复制报告或将报告的某些部分合并到一个或多个文档或出版物中。 在下列情况下: 归因-您必须给予SlashData适当的信用TMandtoTheLinuxFoundationassponsersofthisreport,andindicateifchangesweremade.Inthatcase,youmaydosoinanyreasonablemanner,butnotinanywaythatsughDataTM支持你或你的使用。 NoDerivatives-您无法重新混合或转换报表的内容。您不得分发修改后的内容。 2.责任限制 SlashDataTM,相信本出版物中包含的陈述是基于我们认为可靠的信息,但我们并不表示它是准确或完整 的,不应以此为依据。所表达的意见是截至本出版物中出现的日期的当前意见,并且信息,包括此处包含的意见,如有更改,恕不另行通知。任何第三方出于任何目的使用本出版物不应也不免除此类第三方在验证出版物内容时使用尽职调查。SlashData。TM否认所有暗示的保证,包括但不限于适销性或适用于特定用途的保证。 SlashDataTM、其关联公司和代表对任何第三方因根据本出版物作出或未作出决定或采取或未采取的行动而遭受的任何直接、偶然、特殊或后果性损害或利润损失(如果有的话)不承担任何责任。 开发商经济的分析师|前身为VisionMobileSlashData©版权所有2023|保留部分权利 NikitaSolodkov是一位多学科研究人员,对使用数据驱动的见解解决现实世界的问题特别感兴趣。他拥有物理学博士学位,在数据分析和研究设计方面拥有超过五年的经验。 BraytonNoll是一名具有气候变化和环境研究背景的行为科学家。他拥有代尔夫特理工大学计算社会科学博士学位,论文专注于人类行为动力学和气候适应。他有五年的数据分析工作经验。 5 6 7 19 23 WebAssembly是一种二进制指令格式,为各种编程语言提供了可移植的编译目标。它旨在利用各种平台的通用硬件功能,以实现以接近本机的速度执行。 本报告的目的是调查这项技术的现状。我们将探讨开发人员使用WebAssembly作为编译目标的语言 ,以及它在迁移项目时提供的性能优势。我们还将研究吸引开发人员加入WebAssembly的方面,他们面临的挑战,以及他们对未来采用这项技术的乐观程度。最后,我们将通过关注WebAssemblySystemIterface(WASI),衡量熟悉程度并揭示其使用背后的关键动机。 本报告的调查结果基于SlashData与Linux基金会和云原生计算基金会(CNCF)合作设计、制作和实施的在线调查所收集的数据。该调查针对255名使用WebAssembly的受访者,并在2023年第三季度(6月21日至8月4日)进行了为期两周的调查。 •WebAssembly的范围已经远远超出了Web,许多人将其用于各种应用程序和服务的应用程序。➜ •对于Web和非Web环境,对WebAssembly未来采用的总体看法大多是乐观的。但是,一些开发人员还不相信这项技术所提供的功能。➜ •JavaScript是用于WebAssembly应用程序的最流行的编程语言 。➜ •Rust在WebAssembly项目中很受欢迎与其他用例相比。➜ •WebAssembly提供的额外灵活性和改进的性能吸引开发人员以多种方式使用它。由于有许多重叠,开发人员编写的应用程序旨在从一开始就使用WebAssembly,并使用此技术移植或迁移现有应用程序。➜ •34%的WebAssembly用户表示他们目前正在项目中使用WebAssemblySystemInterface(WASI)。另有34%的用户表示计划在未来12个月内采用它。➜ •将现有应用程序迁移到WebAssembly时,30%的受访者体验到超过 50%的性能优势。➜ •可移植性和易于部署是最重要的吸引开发者加入WASI的方面。➜ •HTTP、IO/流和SQL是最受期待的即将到来的WASI特性。➜ %的受访者(n=255) Web应用程序 58% 数据可视化 35% 物联网 32% 人工智慧 30% 游戏 28% 后端服务(不包括无服务器) 27% 边缘计算 25% 设计或图形工具 24% 平台仿真 22% 音频/视频处理 21% 加密 19% 图像处理 18% 科学计算 18% 增强或虚拟现实 18% 无服务器 14% Other 3% 自2017年发布以来,WebAssembly的功能已经大幅增长,在稳定的软件项目中使用的可行性也是如此。虽然该技术被设计为开放web平台的一部分,但其使用不限于web环境。值得注意的是,尽管WebAssembly仍然主要用于开发Web应用程序,但随着WASI的成熟,这种情况正在随着时间的推移而改变(参见第2章)。 更具体地说,58%的受访者在他们使用WebAssembly的应用程序或服务类型的多选问题中指出了这一点。除此之外,我们还在广泛的项目中看到了这项技术的重要代表。这表明WebAssembly具有很大的潜力,对众多领域的所有开发人员都有好处,而不仅仅是那些参与前端Web开发的开发人员。 %的受访者(n=254) 更快的加载时间23% 探索新的用例和技术22% 在项目之间共享代码20% 改进了JavaScript的性能20% 高效执行计算密集型任务19% 二进制文件在任何地方运行18% ,而且因为它为软件开发带来的灵活性而得到了认可。 语言不可知 18% 移植现有应用程序 17% 不断增长的社区和生态系统 16% 访问本机库 15% 降低云计算成本 15% 公司政策 14% 与JavaScript无缝集成 14% 遵循W3C标准 9% Other 3% 沙盒安全18% WebAssembly可以用于广泛的应用程序,因为它提供了许多好处。更快的加载时间(23%)和探索新用例和技术的机会(22%)是最常被提及的方面,这些方面说服了本次调查的受访者开始使用WebAssembly。 我们还看到,在项目之间共享代码(20%),使用在任何地方运行的二进制文件(18%)以及与语言无关的技术(18%)具有相对较高的选择率。对这些好处的认可表明,WebAssembly不仅因为其与性能相关的好处 借助WebAssembly提供的灵活性,开发人员可以以多种方式利用其功能。我们的数据表明,76%的WebAssembly用户正在开发新的应用程序,并计划从一开始就使用该技术。另有64%的人正在利用WebAssembly提供的可移植性,将现有应用程序移植到新平台。我们还看到,62%的人正在将现有应用程序迁移到同一平台上的新编程语言。 我们注意到,上述方法之间存在很大的重叠,有34%表明他们参与了所有三个项目。一些开发人员可能会看到将现有应用程序迁移到新语言并同时将其移植到新平台的巨大好处。在这种情况下,WebAssembly提供了一种简单的二合一解决方案,该解决方案带来了一致性以及该技术所提供的所有其他好处。 %的受访者(n=209) 将现有应用程序迁移到同一平台上 的新语言(62%) 10% 7% 19% 34% 11% 13% 将现有应用程序移植到 新平台(64%) 6% 编写新应用程序(76%) 已迁移现有应用程序的受访者百分比(n=187) 24% 0%至10% 5 100%以上不确定/我 不知道 4% 6% 7% 20% 37% 在将现有应用程序迁移到WebAssembly项目中的新语言时,37%的受访者表示观察到性能1在21%到50%的范围内增加。另有30%的人报告说,由于切换语言,其应用程序的性能提高了50%以上。这突出表明,很大一部分开发人员已经在他们的项目中看到了WebAssembly的关键优势之一,并为该技术建立了一个充满希望的未来。但是,我们应该注意到一小部分(6 %)的开发人员报告说遇到了最小的性能优势,这表明在追求本地速度方面可能还有很多路要走。 1受访者被要求将其应用程序的速度视为主要性能指标。 2% 11%至20% 1%至100% 21%至50% 它减少了 我们询问开发人员他们在项目中使用WebAssembly作为编译目标的编程语言或平台。 受访者被要求选择他们使用最多的语言作为主要语言,以及他们在这种情况下也使用的任何其他语言。 JavaScript的选择率为45%,是WebAssembly项目中最受欢迎的编程语言 。这可能源于JavaScript在Web开发中的强大锚定基础,它是一段时间以来最流行的语言。开发人员可能希望在WebAssembly项目中重用他们已经在JavaScript中构建的代码。但是,我们应该注意,它在其他语言中的大部分领先来自“也使用”类别,只有13%表示主要用法。 %的受访者(n=255) Primary也使用 13% 32% 13% 18% 10% 20% 9% 11% 20% 18% 7% 22% 7% 16% 3% 20% 2% 19% 4% 17% 3% 14% 4% 13% 3% 11% 2% 12% 2% 11% 2% 11% JavaScript C#C++ PythonJava .NET Rust PHP TypeScript AssemblyScript C 去吧 COBOL Swift Kotlin Ruby 2% 其他 60% 50% WebAssembly应用程序的用法 %的受访者(n=255) 40% 30% C#C++ 关于将这项调查结果与我们更广泛的研究进行比较2,我们发现大多数语言的采用与它们在其他类型项目中的全球使用水平非常吻合。从这个角度来看,我们看到Python(29%)和Java(29%)在WebAssembly项目中的代表性不足。另一方面,Rust在WebAssembly项目中的受欢迎程度(23%)远远超过了其在所有类型项目中的总使用量(10%)。 20% Rust 2语言列表不包括COBOL,AssemblyScript和.NET平台,同时结合了JavaScript和TypeScript。更多信息可以在我们的“开发者国家状况”报告中找到,该报告基于我们在2023年第一季度(第24版)进行的全球调查中收集的数据。 PHP C 10% 0% 0%10%20%30%40%50%60% 更广泛的开发人员社区的使用情况(2023年第一季度)2占全球开发者人口的百分比(n=15,720) 与所有技术一样,开发人员在使用WebAssembly时可能会面临各种挑战。这份调查报告中,有83%的受访者受到其项目中列出的挑战之一的影响。 19%的受访者提到了调试和故障排除的困难,将其放在列表的顶部。这凸显了使用WebAssembly所涉及的复杂性增加,其中许多细微差别超出了代码的可读性。这方面的一个例子可以在29%的受访者中看到,他们遭受了多个运行时相关问题之一。这些通过在运行时之间体验不同的性能(15%)或缺乏一致的开发人员体验(15%)来体现。 只有6%的受访者提到使用WebAssembly并不能为其应用程序的性能带来足够的好处。如前所述,由于性能优势对受访者来说非常重要,这表明WebAssembly能够满足大多数开发人员的期望。 %的受访者(n=254) 调试和故障排除很困难 19% 运行时之间的性能不同 15% 运行时之间缺乏一致的开发人员经验 15% 缺