点赞
评论
收藏
分享
举报
为何 Wasm 会在 Java Applet 跌倒的地方取得成功
发表于2025-01-20 14:54

浏览 2.4k

原文作者:Liam Crilly - F5 产品管理高级总监
原文链接:为何 Wasm 会在 Java Applet 跌倒的地方取得成功
原文来源:The New Stack
转载来源:NGINX 中文官网

NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

   


   

图片来源:由 Ben Schonewille 在 Shutterstock 上发布

这次,真的不一样。社区、性能、标准及分布式计算的整体成熟度等各种因素将助推 Wasm 取得成功。


随着越来越多的公司加入 WebAssembly (Wasm) 生态系统,Wasm 将迎来飞速发展。


然而,怀疑论者总是不以为然地反驳道:“它只是 Java Applet 2.0 而已。”若只看表面,我们完全可以理解他们对 Wasm 的抗拒情绪。毕竟对于作为过来人的技术人员来说,Java 当年“一次编写,到处运行”的口号犹然在耳。


在此提醒大家,Java Applet 是用 Java 编写的小型应用,以 Java 字节码的形式交付给用户。这些小程序在独立于 Web 浏览器的 Java 虚拟机 (JVM) 中运行,为 Web 应用提供了仅靠 HTML 无法提供的交互特性。该模式与 Wasm 非常相似。


Wasm 将在 Java Applet 跌倒的地方取得成功的原因在于:WebAssembly 和 Java Applet 有着相同的目标和设计宗旨,即支持 Web 浏览器执行更多的计算密集型任务,并增强浏览器的功能,但两者的相似之处仅限于此。


当时,Applet 被认为能够增强浏览器功能并实现许多新型计算范式。然而,这项技术并没有获得广泛认可,在 HTML 标准中已弃用,如今鲜少使用。怀疑论者经常表示,Applet 的失败预示着 Wasm 的命运。


不过,我还是要冒昧地说一句,这次真的不一样。鉴于社区、性能、标准和分布式计算的整体成熟度等各种因素,Wasm 将在 Java Applet 倒下的地方崛起,风靡全球浏览器市场。

 

强大的安全防护——专为零信任环境而设计

Applet 和 Wasm 都是沙盒模型,旨在创建隔离的计算运行时环境,防范安全威胁。但 Wasm 专为零信任环境而设计,并采用主机-客户机安全模型,不允许代码在未经明确许可的情况下在运行时之外执行任何操作。


更具体地说,Wasm 和 Java Applet 的目标都是在 Web 浏览器内运行代码,但两者的不同之处在于背后的 Web 安全防护实践。Java Applet 依赖于 JVM 沙盒,可以请求提权,由于其复杂的运行时和广泛的 API 访问,这会带来重大安全漏洞。


相比之下,Wasm 在更严格的沙盒中运行,不能直接访问系统资源。它通过线性内存模型最大限度地减少了攻击面,并与主机环境之间设有边界。与 Applet 不同的是,Wasm 在模块执行前授予所有权限,本质上更加安全。Wasm 的优势在于能够在浏览器中原生运行,并可接收频繁的自动更新,从而增强安全防护。


Java 的持续安全更新意味着繁重的更新负担,运行 Applet 的浏览器往往存在未修补的漏洞。换言之,Wasm 被设计为一个 Web 为先的 Web 原生零信任平台,而 Java Applet 则独立于 Web 环境,更像是一个繁冗的附件。

 

更快速、更流畅的用户体验和性能

作为 WC3 标准,Wasm 必须得到所有浏览器的原生支持。这意味着用户无需安装(或重新安装)Wasm。安全更新在后台进行,不会对用户造成干扰。使用 Applet 时,JVM 的更新着实令人头疼,而且总的来说,浏览器集成的设计和执行也不够完善。同样重要的是,Wasm 的性能非凡。而 Applet 则性能欠佳、启动慢、刷新慢。


Wasm 的速度足够快,可支持多种“实时”用例,如自动驾驶汽车、交互式多人游戏或人工智能——所有这些用例对 Java Applet 来说都是不可能的。Wasm 前景乐观的另一个迹象是服务器端用例的快速增长。Wasm 的快速加载和出色性能意味着关键后端应用可以达到严苛的性能目标。(注:这就是我们为什么将 Wasm 构建为开源 Unit 应用服务器堆栈核心组件的原因)。

 

社区以共同利益为重

Wasm 的创建初衷是合力打造更实用、更强大的浏览器。Wasm 由社区创建,从一开始就完全开放,从未被任何一个组织拥有或控制过。而 Java(和 Applet)由 Sun Microsystems 构建,后被 Oracle 收购,Oracle 对社区保持着严密控制。


开放性和大型支持社区预示着 Wasm 广阔的发展前景;Linux 和 Kubernetes 等最成功的开源项目和标准均由中立社区控制。同样地,字节码联盟 (Bytecode Alliance) 也是一个中立社区,由各方共同治理。这既增强了 Wasm 的合法性,也为希望在关键应用和用例中采用该技术的公司树立了信心。

 

结论:Wasm 增长日益迅猛

WASI 0.2.0 及对 Wasm 的其他改进为其广泛采用和快速发展扫清了又一障碍。诚然,我们依然任重道远。Java Aapplet 曾在工具开发方面具有短期优势。


控制公司可以构建并垂直整合其中大部分工具,从而简化开发人员工具链,构建依赖于 Applet 的应用。但随着时间的推移,这种优势会逐渐减弱甚至逆转。广泛的社区将创造更多的工具并培养更多的人才,从而推动生态系统发展。Wasm 在运行时支持的语言多于 Applet,这为更出色的开发人员体验奠定了核心基础。


对于 Web 的未来,Java Applet 和 Wasm 都曾有着宏伟的愿景。平心而论,Applet 也曾取得一定程度的成功。如果 Java 能够与时俱进,跟上云、无服务器、容器以及现代分布式应用和计算的所有其他新模式的发展,也许情况会有所不同。


不过,Applet 和 Wasm 之间的根本区别并不仅限于时机。Applet 只是众多 Java 用例中的一个,而 Wasm 则是专门构建的 Web 运行时,其零信任安全模型和高性能配置文件由社区而非某个控制实体设计。这种基因里的差异决定了 Wasm 将能够在 Applet 跌倒的地方取得成功。

   


   

NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

更多 NGINX 相关的技术干货、互动问答、系列课程、活动资源: 开源社区官网 | 微信公众号 | B 站

已修改于2025-05-20 17:24
本作品系原创
创作不易,留下一份鼓励
NGINX官方账号

暂无个人介绍

关注



写下您的评论
发表评论
全部评论(0)

按点赞数排序

按时间排序

关于作者
NGINX官方账号
这家伙很懒还未留下介绍~
327
文章
21
问答
201
粉丝
相关文章
介绍nginx网页配置工具QQ技术交流群1:1106758598QQ技术交流群2:560797506邮箱: cym1102@qq.com官网地址: http://www.nginxwebui.cn码云: https://gitee.com/cym1102/nginxWebUIgithub: https://github.com/cym1102/nginxWebUI功能特点nginxWebUI也可管理多个nginx服务器集群,随时一键切换到对应服务器上进行nginx配置,也可以一键将某台服务器配置同步到其他服务器,方便集群管理.部署此项目后,配置nginx再也不用上网各种搜索配置代码,再也不用手动申请和配置ssl证书,只需要在本项目中进行增删改查就可方便的配置和启动nginx。技术说明本项目是基于springBoot的web系统,数据库使用sqlite,因此服务器上不需要安装任何数据库项目启动时会释放一个.sqlite.db到系统用户文件夹中,注意进行备份本系统通过Let'sencrypt申请证书,使用acme.sh脚本
点赞 6
浏览 20.9k
  前三周学习了陶辉老师的“NGINX基础培训系列课程”,感觉受益良多,在这里想把一些知识点记录一下,和大家分享一下知识点,也方便日后的随手查看,温故知新。  首先,我们了解到了Nginx的版本,Nginx发布版本分为主线版本和稳定版本,区分两个版本也非常简单,主线版本版本号为单数,比如1.19,稳定版本为双数,比如1.18,今天我要说的是稳定版本,这个版本会尽量少的减少Nginx的bug问题,适用于生产环境,这里我不建议使用Nginx和其他软件一样在生产环境中落后一个或多个大版本使用,之前生产环境做过漏扫,发现我们编译自带的Nginx版本为:nginx/1.13.3(查询命令为nginx-V),结果出现了多个漏洞,四个高危和一个中危漏洞:        通过升级Nginx到稳定版最新版本后修复!  其次,是Nginx发行版本的选择,目前比较流行的有:nginx、nginxplus、Tengine、openresty、ope
点赞 1
浏览 14.5k
感谢您参加“NGINX从入门到精通进阶系列培训”!以下为培训的问答、课件和录像,希望您能通过此培训学有所得,祝学习进步!>问与答:- 基础篇+高级篇 - 应用篇+实战篇(New)>课件(PPT):基础篇:-NGINX概要、安装、配置:https://interact.f5.com/rs/653-SMC-783/images/CNFEB22-NginxCoreCourse-Setup.pdf-NGINX日志、运维:https://interact.f5.com/rs/653-SMC-783/images/cnfeb22-nginxcorecourse-maintenance.pdf高级篇:-NGINX变量、API:https://interact.f5.com/rs/653-SMC-783/images/CNFEB22-NginxCoreCourse-API.pdf-NGINXSSL、NJS:https://interact.f5.com/rs/653-SMC-783/images/CNFEB22-NginxCoreCourse-SSL.pdf
点赞 10
浏览 16.6k