卧槽! JavaScript JVM运行Java!!
由于任何计算机语言都具有巨大的灵活性,软件世界变得有点疯狂。一旦你已经吸收了用这种语言编写的编译器的想法,那么它会编译还有什么可以留下来的?但是......用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!!的更多相关文章
- JVM运行时内存区域
JVM运行java程序时会将内存划分为若干个不同的数据区域: (1)程序计数器: 1.占用内存空间不大. 2.程序计数器相当于JVM所执行的字节码(jvm指令)的“行号指示器”,通过程序计数器的“值” ...
- Java(JVM运行时)各种内存区域详解及扩展
本文整理于 Java内存与垃圾回收调优 Java 堆内存 从几个sample来学习Java堆,方法区,Java栈和本地方法栈 首先来一张图让我们理清楚java运行时状态: 诚然,如上图所示:java ...
- 深入解析java虚拟机-jvm运行机制
转自oschina 一:JVM基础概念 JVM(Java虚拟机)一种用于计算设备的规范,可用不同的方式(软件或硬件)加以实现.编译虚拟机的指令集与编译微处理器的指令集非常类似.Java虚拟机包括一套字 ...
- Java Jvm运行机制原理
一:简介 在学习Java虚拟机之前,也就是Jvm之前,我想大家能够带着问题去学习,这样的话,大家学习起来也会比较有所获! 1.Java虚拟机(Jvm)是什么? 2.Java虚拟机是用来干什么的? 3. ...
- Java内存管理:Java内存区域 JVM运行时数据区
转自:https://blog.csdn.net/tjiyu/article/details/53915869 下面我们详细了解Java内存区域:先说明JVM规范定义的JVM运行时分配的数据区有哪些, ...
- 深入理解Java虚拟机 -- 读书笔记(1):JVM运行时数据区域
深入理解Java虚拟机 -- 读书笔记:JVM运行时数据区域 本文转载:http://blog.csdn.net/jubincn/article/details/8607790 本系列为<深入理 ...
- Jvm运行时数据区 —— Java虚拟机结构小记
关于jvm虚拟机的文章网上都讲烂了.尤其是jvm运行时数据区的内容. 抱着眼见为实的想法,自己翻了翻JVM规范,花了点时间稍微梳理了一下. 以下是阅读Java虚拟机规范(Java SE 8版)的第二章 ...
- JAVA和JVM运行原理揭秘
这里和大家简单分享一下JAVA和JVM运行的原理,Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器 ...
- Java中的字符串常量池和JVM运行时数据区的相关概念
什么是字符串常量池 JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池 工作原理 当代码中出现字面量形式创建字符串对象时,JVM首先会对这个字面量 ...
随机推荐
- mybatis paramType String Error
我这么写的 <select id="getHotPlayersByDate" parameterType="java.lang.String" resul ...
- Storm---DirectGroup(直接分组)
以单词分割计数为例实现Storm的DirectGroup分组: 1.Spout实现 Spout是Storm数据源头,使用DirectGroup方式将Spout数据发送指定的Bolt,需注意: 1).S ...
- 如何免密码直接登陆win7
打开“运行”输入NETPLWIZ,并打开搜索到的程序将“要使用本机,用户必须输入用户名和密码”的勾去掉点 确定在弹出的对话框里填上你想要 自动登陆的 用户名和密码
- vue - utils for extract-text-webpack-plugin
描述:将包或包中的文本提取到单独的文件中, 点击查看官网详情: https://www.npmjs.com/package/extract-text-webpack-plugin
- 算法笔记_080:蓝桥杯练习 队列操作(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 队列操作题.根据输入的操作命令,操作队列(1)入队.(2)出队并输出.(3)计算队中元素个数并输出. 输入格式 第一行一个数字N. 下面N行, ...
- ubuntu错误解决E: Sub-process /usr/bin/dpkg returned an error code (1)
在用apt-get安装软件时出现了类似于 install-info: No dir file specified; try –help for more information.dpkg:处理 get ...
- ECMAScript 6 | 新特性
新特性概览 参考文章: http://www.cnblogs.com/Wayou/p/es6_new_features.html ——————————————————————————————————— ...
- 关于org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor的队列
今天查看源码发现spring的线程池是支持队列的: 并且队列支持的上限相当大: 当线程池的达到最大线程时,默认会把任务放在队列(内存)中,所以我们可以放心用这个东西来写日志了
- sql server 使用for xml path 将1列多行转换为字符串连接起来
create table tb ([id] )) insert into tb ,'aa' union all ,'bb' union all ,'cc' union all ,'dd' union ...
- unity3d贴图2D
在GUI上绘制图片步骤如下: 1.定义一个2D图片纹理变量: public Texture2D pic; 2.关联变量和贴图的关系: 在布局界面选中MainCamera,找到右侧属性列表中的pic选项 ...