由于任何计算机语言都具有巨大的灵活性,软件世界变得有点疯狂。一旦你已经吸收了用这种语言编写的编译器的想法,那么它会编译还有什么可以留下来的?但是......用JavaScript编写的Java虚拟机JVM似乎是另一种疯狂的程度。

事实上,这是一个非常合理的想法,只会让Java,顶级狗和基础的JavaScript通常占据通常的位置。Java不是编译为机器代码而是编译为特殊字节代码,然后在通常在本机机器代码中实现的虚拟机上运行。然而,没有什么可以阻止一个勇敢的程序员用你能说出的任何语言来实现它。唯一真正的问题是您需要快速实现,以便字节代码以可接受的速度运行。

直到最近,由于效率问题,在JavaScript中实现JVM一直很困难,但JavaScript引擎的速度却大幅增加。因此,单独的编码器Artur Ventura使用JavaScript实现了大部分标准JVM,您可以在Github上检查代码。

这项工作的动机很好地体现在Artur的博客中。他认为,不是将JavaScript构建到Web浏览器中,而是应该有一个虚拟机,以便可以使用任何语言。除了这个优势之外,他还指出,使用JVM类型方法,您可以获得自动沙盒,只需将JVM发送到服务器即可提供与浏览器无关的持久性。

将JVM构建到浏览器中确实更有意义,但是为什么不能简单地模拟每个浏览器中内置的JavaScript中的JVM。这只是插件向JavaScript实现提供的功能稳定转换的另一个方面 - 编解码器,pdf,压缩等。

经过6个月的工作后,结果是BicaVM,据称它运行60%的字节代码。它尚未优化,但它确实在iPad / iPhone上运行,它支持DOM的JNI接口。

这会带来什么实际意义吗?

可能不是。它是一个概念证明,并且浏览器应该被视为一个虚拟机本身并不是一件容易的事。然而,想到JavaScript实际运行Java程序有点奇怪。也许它是互联网时代的汇编者。

资料来源:http//www.i-programmer.info/news/167-javascript/3360-javascript-jvm-runs-java.html

卧槽! JavaScript JVM运行Java!!的更多相关文章

  1. JVM运行时内存区域

    JVM运行java程序时会将内存划分为若干个不同的数据区域: (1)程序计数器: 1.占用内存空间不大. 2.程序计数器相当于JVM所执行的字节码(jvm指令)的“行号指示器”,通过程序计数器的“值” ...

  2. Java(JVM运行时)各种内存区域详解及扩展

    本文整理于  Java内存与垃圾回收调优 Java 堆内存 从几个sample来学习Java堆,方法区,Java栈和本地方法栈 首先来一张图让我们理清楚java运行时状态: 诚然,如上图所示:java ...

  3. 深入解析java虚拟机-jvm运行机制

    转自oschina 一:JVM基础概念 JVM(Java虚拟机)一种用于计算设备的规范,可用不同的方式(软件或硬件)加以实现.编译虚拟机的指令集与编译微处理器的指令集非常类似.Java虚拟机包括一套字 ...

  4. Java Jvm运行机制原理

    一:简介 在学习Java虚拟机之前,也就是Jvm之前,我想大家能够带着问题去学习,这样的话,大家学习起来也会比较有所获! 1.Java虚拟机(Jvm)是什么? 2.Java虚拟机是用来干什么的? 3. ...

  5. Java内存管理:Java内存区域 JVM运行时数据区

    转自:https://blog.csdn.net/tjiyu/article/details/53915869 下面我们详细了解Java内存区域:先说明JVM规范定义的JVM运行时分配的数据区有哪些, ...

  6. 深入理解Java虚拟机 -- 读书笔记(1):JVM运行时数据区域

    深入理解Java虚拟机 -- 读书笔记:JVM运行时数据区域 本文转载:http://blog.csdn.net/jubincn/article/details/8607790 本系列为<深入理 ...

  7. Jvm运行时数据区 —— Java虚拟机结构小记

    关于jvm虚拟机的文章网上都讲烂了.尤其是jvm运行时数据区的内容. 抱着眼见为实的想法,自己翻了翻JVM规范,花了点时间稍微梳理了一下. 以下是阅读Java虚拟机规范(Java SE 8版)的第二章 ...

  8. JAVA和JVM运行原理揭秘

    这里和大家简单分享一下JAVA和JVM运行的原理,Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器 ...

  9. Java中的字符串常量池和JVM运行时数据区的相关概念

    什么是字符串常量池 JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池 工作原理 当代码中出现字面量形式创建字符串对象时,JVM首先会对这个字面量 ...

随机推荐

  1. C#/Sqlite-单机Window 程序 sqlite 数据库实现

    数据库分析和选择 Excel 文件 做数据源 限制性比较强,且不适合查询,分析 等操作 Access 数据库 Access 管理数据界面和功能不强 mysql 和sql server 功能满足,但需要 ...

  2. conkey conf

    update_interval 1.0 # 更新时间间隔double_buffer yes # 双缓存,解决Conky闪烁问题use_xft yes # 自定义字体xftfont DejaVu San ...

  3. javascript 中用到的时间戳函数

    JavaScript 获取当前时间戳:第一种方法: var timestamp = Date.parse(new Date()); 例如结果:1280977330000第二种方法: var times ...

  4. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何实现开平方的Pow函数

    使用函数EXPT即可(输入的两个参数都可以是LREAL类型),注意跟计算器对比是Xy,所以4的0.123次方结果是1.18     4的0.5次方是2     更多教学视频和资料下载,欢迎关注以下信息 ...

  5. B. Vanya and Books( Codeforces Round #308 (Div. 2) 简单题)

    B. Vanya and Books time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  6. 重载delete时的那点事

    重载delete时的那点事 C++的异常处理机制就会自动用与被使用 的operator new匹配的operator delete来释放内存(补充一点:在operator new中抛出异常不会导致这样 ...

  7. ppm图像格式

    http://blog.csdn.net/r91987/article/details/5435328 PPM文件格式分三种: 1. PPM灰度文件     文件头由3行文本组成,可由fgets读出 ...

  8. webDriver API——第6部分Locate elements By

    These are the attributes which can be used to locate elements. See the Locating Elements chapter for ...

  9. ES6 iterator 迭代器

    iterator使用TypeScript 的描述: interface Iterable { [Symbol.iterator]() : Iterator, } interface Iterator ...

  10. "no talloc stackframe at ../source3/param/loadparm.c:4864, leaki

    This problem related to the samba PAM module. You have 2 solution at all. Solution 1#: Remove it( as ...