JS实现的JVM源代码分析
今早看到iteye上的消息(详见 http://www.iteye.com/news/23443),说是用JS实现了jvm,于是乎我就去看了下其实现的源代码,现在把我看到的分享给大家。
从https://github.com/nurv/BicaVM下载源代码,源代码中
lib:使用的外部的库
runtime:java核心运行时(.class)
src: js 源代码
webserver:python写的mini web server
1、src中的代码的基本信息:
preload.js : 工具函数,方便加载别的js代码
long.js js实现的long数据结构
attributes.js 对应.class文件的属性,用于处理符号表
auxiliarJNI.js java string数据转成js格式
class.js 加载解析.class文件(基于http),建立vm内部的数据结构
constantPool.js 符号表数据结构
cpu.js 模拟jvm
infos.js public? private? static?等属性信息
javaNativeInterface.js 实现了一些原来在java runtime中的函数
linearDatastream.js 类似于C++的iostream的对IO的封装
main.js 入口
nativeArray.js js实现的array
intrp.def 字节码解释器,可以认为是此jvm的汇编器
2、入口:main() (main.js中)
3、主流程:run(cpu.js) 依次加载验证 java runtime核心运行时(由java代码来提供),初始化主类,执行主函数
4、方法调用的解析过程(纯解释型的vm)invoke(infos.js)
5、操作栈的处理 interpret (cpu.js)
6、字节码的解释执行 intrp.def
概述:实现了一个demo,可以解释简单的字节码,目前做的工作还很少,离真正可用还有相当的距离。
分享到:
相关推荐
3. **字节码**:Java源代码编译后的中间表示,可以在任何支持JVM的平台上运行,实现了“一次编写,到处运行”的理念。 4. **浏览器环境**:Web开发中的运行环境,Doppio让Java程序能在浏览器中运行,打破了传统的...
**LGPLv3** 许可是JVM.JS的开源许可证,这是一种较为宽松的开源协议,它允许开发者在自己的项目中使用、修改和分发该软件,只要保持源代码的开放,并且在链接或扩展JVM.JS时遵循相同的许可证条款。这对于开发者社区...
在JVM上,MpApt可以生成Java或Kotlin源代码,用于扩展功能或实现复杂的逻辑。 ### 使用 MpApt 在项目中集成MpApt,开发者需要添加相应的依赖,并在代码中使用自定义注解。处理器会自动检测这些注解并在编译期间...
综上所述,这份关于jQuery源码分析的系列文档,系统地梳理了jQuery库的各个组成部分,并且详细探讨了内部实现机制,为开发者提供了宝贵的学习资源,使得开发者能更深入地理解和使用jQuery,提高前端开发的效率和质量...
1. 类路径更改:当源代码发生变化时,JavaRebel会检测到这些变化,并在JVM中替换旧的类文件,使得新版本的代码立即生效。这样,开发者可以在不重启服务器的情况下看到代码修改的效果。 2. 资源更新:不仅仅是Java类...
Nashorn是Oracle在JDK8中引入的一个全新的JavaScript引擎,它完全基于Java实现,并且完全运行于Java虚拟机(JVM)上。Nashorn的目标是提供一个高性能的JavaScript执行环境,它可以利用Java平台的各种资源和特性,如...
凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码) 15个目标文件 摘要:Java源码,初学实例,基于EJB的真实...
JDK包括Java编译器(javac),用于将源代码编译成字节码;Java调试器(jdb),帮助开发者查找和修复代码中的错误;以及一系列的库文件和API,如Java标准类库。JDK是跨平台的,这意味着它可以用于不同的操作系统,如...
1. **编写源代码**:使用文本编辑器或IDE(集成开发环境)编写Java源代码。 2. **编译**:使用Java编译器(如javac)将源代码编译成字节码(.class文件)。 3. **加载与执行**:通过JVM加载并执行字节码。 ##### ...
为了深入了解 RxCommon,开发者可以查看项目源码,特别是 `RxCommon-master` 压缩包中的文件,这通常包括项目的根目录、源代码文件、构建脚本、测试案例以及文档。通过阅读源码,可以学习到如何在不同平台间移植和...
- **解释型**:如Python、JavaScript,源代码逐行解释执行,跨平台性好,但效率相对较低。 - **Java**:Java是编译+解释型,源代码编译成class文件,由JVM解释执行,同时JVM中的JIT编译器会进行运行时编译,提高...
JDK还包括Java编译器(javac),用于将源代码编译成可执行的字节码。此外,还有许多其他实用工具,如Javadoc(用于生成API文档),JAR(打包和运行jar文件),JDB(Java调试器),以及各种诊断和性能分析工具。 在...
字节码是由Java编译器将源代码编译生成的,它包含了Java虚拟机指令集和其他辅助信息,如符号表。 JVM的结构主要包括以下几个关键组件: 1. 字节码指令集:这是JVM执行的基本单元,由一系列特定的二进制指令组成,...
源代码.zip是一个包含编程语言源代码...通过分析和理解源代码,我们可以学习到各种编程技巧,了解软件的工作原理,并对其进行改进和扩展。而"源代码.zip"这样的压缩包则为分享、分发和存储源代码提供了一种方便的方式。
JVM.JS编译器将Java源代码转化为JavaScript代码的过程涉及以下几个步骤: - **词法分析**:读取Java源代码并分解为可操作的符号单元,如关键字、标识符、操作符等。 - **语法分析**:根据Java语法规则将词法单元...
这个系统不仅包含了源代码,还有相关的技术论文,为学习者和开发者提供了深入理解网上拍卖系统设计原理和技术实现的宝贵资料。 在设计阶段,此系统遵循了软件工程的规范,首先进行了需求分析,明确了系统的功能需求...
在Java中,源代码被编译成字节码,然后由Java虚拟机(JVM)执行。实训过程中,你可能接触了类、对象、接口、继承、封装、多态等核心概念。例如,定义一个类(class)来表示现实世界中的实体,通过方法(method)实现...
解释型语言(如Python、JavaScript)则在运行时逐行解释并执行源代码,虽然跨平台性好,但执行速度和效率较低。 Java语言比较特殊,它既具有编译型语言的特点,又具有解释型语言的特点。Java源码通过javac编译器...
6. **源码**(02-源码):源代码是理解系统工作原理的最佳途径,通过阅读和分析,可以学习到如何使用Java处理用户输入、如何与数据库交互、如何实现事务处理、安全控制以及错误处理等技术。 7. **前端技术**:虽然...