用JavaScript编写Java虚拟机?谈谈哗众取宠的BicaVM

发表于:2011-12-01 10:02

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:cping    来源:51Testing软件测试网采编

  ◆ 今日目睹某网络新闻,开篇明义便包含如下几行文字:

  【程序员Artur Ventura,这位超级大牛,用JavaScript写了一个java虚拟机BicaVM】

  继而再读,惊见其中“超级大牛”、“神人”等溢美之词不绝于耳,崇拜、神往之心溢于言表。仿佛BicaVM就是天上有地下无的创举,仿佛Artur Ventura就是继比尔盖茨,乔布斯之后的第三位IT业领军人。然而很可惜,小弟今天准备要“侮辱”一下这位“大牛”了。只因在小弟看来,这篇文章,乃至其中介绍的BicaVM,都如某女士对某御用文人的评价一样“实无耻之尤,足令人作三日呕”。什么“自动化的沙盒”、“具有支持JNI接口,DOM模型等特点”,说起来果然天花乱坠,似乎有什么高明玄妙。

  ◆ 其实归根结底,BicaVM无非就由两种东西所构成,一种,叫炒作,而另一种,就叫做扯淡。

  众所周知,本来JS就是解释性的语言,而BicaVM是什么东西,是一个能够让JS运行字节码(直接读取class)的WEB版JVM。也就是说,他要用自身还需浏览器进行解释的JavaScript,再去“解释”已编译为Class的Java Byte Code……上苍啊!即便不讨论性能问题,这也根本是“让翻译找翻译去翻译句子给你听”式的绕口令了吧?别的不讲,单就如此脑残的行为,还有人管这叫“大牛”?别“牛”了,不被评价为“猪”,就算别人嘴下积德!

  再看看BicaVM的类库,既然实现目的是在浏览器中使用JVM,按理说应该是为前端WEB开发搞的吧?可号称已经模拟了“60% Byte Code”功能的BicaVM中,我却连半个可视化组件也看不见(当然,可以调取JS指令构建出“窗体”,但这和Java有半毛钱关系吗?直接写不更快,本来语法就近似),半个网络工具也找不到,唯一能找到的,就是一堆堆冗余却无用的类加载器与Java基础数据类型的JS实现(N多对于JS来讲重复的“轮子”……)

  比如Java中的Long,在BicaVM中需要如此实现(部分源码,太长无法显示全,位于22KB的long.js中)。

  图1:

  不知道各位都看见了什么,我所见者,就仅仅是一个蠢货为了让BicaVM中基本数据类型与标准Java保持一致,而强迫弱类型的JS去做冗长的强类型运算而已——凡有点JS开发经验者,你们能相信在客户端跑着如此海量的科学计算的后果吗?能相信这是正常人类想出来的办法吗?(BicaVM的基本数据类型全是这样“造”出来的,所以只要用,这些运算就没完了)

  可以说,BicaVM仅仅只是一个概念,一个看上去也不美的,JS仿“完整版Java”的概念(而且主要部分都没实现),可以说,其中真正能起作用的东西,连半个也不存在。(另外,就连概念也不是他先想到的,下文有论及)

  此外,不单这个项目毫无价值,下载BicaVM后我还愕然发现,该项目作者居然在BicaVM项目中要求使用Python运行服务…… 你,你玩Javaer呢?!

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号