由于任何计算机语言都具有巨大的灵活性,软件世界变得有点疯狂。一旦你已经吸收了用这种语言编写的编译器的想法,那么它会编译还有什么可以留下来的?但是......用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. Java 根据IP获取地址

    用淘宝接口:(源码:java 根据IP地址获取地理位置) pom.xml: <!-- https://mvnrepository.com/artifact/net.sourceforge.jre ...

  2. 记一次vue2路由参数传递this指针问题

    需要船体一个data()内的对象到另一个页面. <player-card v-for="(note, key) in sortedtNodes" :imgurl=" ...

  3. windows 下apache 以fastcgi形式执行php

    以xampp为例解说,过程例如以下: 1:下载相应的mod_fastcgi .下载參考站点:http://www.apachelounge.com/download/VC11/ 2:拷贝mod_fas ...

  4. [AngularJS] $interval

    $interval provides an excellent service for timed operations in your AngularJS apps. It has the adva ...

  5. Android,TextView的所有属性和方法

    XML 属性 属性名称 相关方法 描述 android:autoLink setAutoLinkMask(int) 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接. ...

  6. Discuz常见小问题2-如何修改管理员密码,修改admin账户密码

    进入后台,点击用户,用户管理,搜索admin这个用户找到,然后点击详情   输入新密码即可(无需验证老的密码)          

  7. "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 ...

  8. 增强for循环、Map接口遍历、可变參数方法

    增强for循环 1.for循环能做得事情.增强for循环大部分都能做(假设要想获得下标的时候就必须使用简单for循环了) 2.增强for有时候可以方便的处理集合遍历的问题,可是集合的标准遍历是使用迭代 ...

  9. Drupal的错误和异常处理

    Drupal在配置阶段的最开始就设置了自己的错误处理器和异常处理器: function _drupal_bootstrap_configuration() { set_error_handler('_ ...

  10. Drupal启动阶段之二:页面缓存

    页面缓存是什么意思?有些页面浏览量非常大,而且与状态无关,这类页面就可以使用页面缓存技术.在页面第一次请求完毕以后,将响应结果保存起来.下一次再请求同一页面时,就不需要从头到尾再执行一遍,只需要将第一 ...