首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么JVM不能代替WebAssembly?

为什么JVM不能代替WebAssembly?
EN

Stack Overflow用户
提问于 2019-09-27 09:39:35
回答 3查看 9K关注 0票数 45

据我所知,JavaScript不能提前编译,因为它是动态的,所以解释和编译都是在运行时进行的,这影响了JavaScript的性能。所以WebAssembly出现在图片中。语言可以提前编译成中间格式(WASM)。这提供了良好的性能,因为运行时开销较少。

我的问题是为什么JVM不能代替WebAssembly VM。Java编译成中间格式(字节码)。这个字节码可以给浏览器,JVM可以执行它。JVM还支持JIT,这有助于实现近乎本地的性能。

那么,对新WebAssembly的需求是什么呢?为什么JVM不能集成到浏览器中,并利用现有最流行的Java语言来实现高性能。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-09-27 12:28:25

JVM不被认为是代替WebAssembly的合适运行时的原因有很多.

  • WebAssembly的设计考虑了基于HTTP和浏览器的交付.因此,它支持流编译-即您可以在下载时开始编译代码。
  • WebAssembly被设计成具有快速的编译时间(导致快速加载web页面),这是通过与Java / JVM语言相比具有非常简单的验证规则来支持的。
  • WebAssembly的设计采用了“主机”环境的概念,即浏览器。
  • WebAssembly被设计成安全和简单,最大限度地减少了整个攻击表面。
  • WebAssembly被设计为支持许多语言(C、C++、Rust、.),而JVM最初是为一种语言( Java )而设计的。

作为一个普遍的观察,WebAssembly被设计为支持网络上的多种语言。JVM旨在支持桌面上的Java。从更普遍的意义上说,这两者都不能比另一个更好。

最后,JVM与浏览器(Java )集成在一起,但最终没有成功!

票数 61
EN

Stack Overflow用户

发布于 2019-09-27 10:06:26

引用高层次目标 of WebAssembly的话:

标准的最低可行产品(MVP),其功能与asm.js大致相同,主要目标是C/C++;

因此,他们最初的目标是在web浏览器中运行C/C++程序,而不是运行Java代码。

票数 6
EN

Stack Overflow用户

发布于 2022-03-06 02:56:58

JVM可以运行:

  • JavaScript
  • Python (Jython)
  • 红宝石(JRuby)
  • Groovy
  • Scala
  • C++ (使用JNI)

不幸的是,对java的支持被从浏览器中删除,因为Sun (java的前维护者)无法提供足够的支持。

就像闪电侠输了一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58131892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档