JSVM2简介
JSVM (JavaScript Virtual Machine的缩写),一个JavaScript基础框架,sourceforge开源项目,由万常华(wch3116)于2003年底发起, 目前最新版本是2.05,采用的是 BSD License 授权协议。
JavaScript 一直以来扮演着Web端“脚本”的角色,开发者用它来在web上制作一些动态特效,或者在表单提交前对数据的预校验等等。随着客户端处理能力日益提升,DHTML在表示层的动态特征和丰富表现力,以及XMLHttpRequest,XmlDom等HTTP控件的出现, 另外一种应用模式开始引起人们的关注 — Ajax。关于Ajax的概念以及优缺点不再作冗余复述。
如今Ajax Framework像雨后春笋,其中有很多优秀作品,在此也不多作介绍。JSVM 的定位和他们不同:JSVM并不是一个JavaScript Library,而是一个更底层的框架,基于这个框架,可以更好的实现JavaScript的模块化设计,以提高JavaScript代码的重用性。下面简单介绍一下JSVM的使用方法。
在web页面上加载JSVM 环境
在web页面中加入代码:<script src="<jsvm2目录>/jsre.js"></script> 即可实现该页面的JSVM2环境加载。
基于JSVM 的JavaScript开发
首先必须声明的是:JSVM2 的加载并不对web页面中原来的JavaScript环境产生任何破坏影响,而只是多了一些其它功能的支持。
在JSVM2 下,JavaScript代码的基本模块单元是“对象”,“对象”的类型可以是一个Function或者是一个Object。
“对象”的命名方式:<包名> + "." + <类名>,且必须以一个单独的文件形式保存。
保存路径是:<jsvm2目录>/classes [/<包名> …] /<类名>.class.js。
例如,设计对象:example.HelloWorld 文件路径:jsvm2/classes/example/HelloWorld.class.js 代码如下:
/**
* 调用jsvm2提供的$package函数定义包名
* 作用相当于:if (!window.example) {window.example = {};}
*/
$package("example");
/**
* 对example.HelloWorld进行定义
*/
example.HelloWorld = function (name) {
this.name = name;
this.say = function () {
alert(this.name + " say: hello world!");
}
}
当需要使用 example.HelloWorld 对象时,客户代码例如:
$import("example.HelloWorld");//调用jsvm2提供的$import函数加载“类”
var obj = new example.HelloWorld("Mike");
obj.say();
一切OK,其实就这么简单,理解上面这个例子,就可以说基本上掌握JSVM2的使用了。至于接下来的JSVM2进阶指南,我本人认为并不是很重要,初学者不必着急学习,可以以后慢慢了解。
JSVM2进阶
接下来介绍一些如何使用JSVM提供的其它功能来优化您的系统。
JSVM JavaScript Archive 的使用
在使用JSVM2一段时间之后,很快会发现JSVM的工作模式是按需动态加载代码的。于是出现一个矛盾:当我们为了满足设计上的合理粒度将代码分散到多个对应的class.js文件中,造成代码的加载动作次数过于多,从而影响到一定的整体性能。
为了解决这个矛盾,JSVM2 提供了一个集中批量加载代码的解决方案。可以通过JSVM2自身提供的工具,将所需的多个class.js文件打包在一个js文件中,然后配置到classpath的环境变量中即可。 当程序执行到需要这个“类”或者“对象”的时候,JSVM会从缓存中直接获得对应的代码,从来避免了进行多次的XMLHttpRequest交互。 例子
JSVM Module 的使用与开发
JSVM2 的核心模块在 bin/kernel.js 中实现,除此之外,我们还可以使用JSVM2自带的(或者第三方提供的)其它模块。
模块文件也必须以 .js 作为扩展名,放置在 <jsvm目录>/bin 目录下。
加载模块的方式:<script src="jsvm2/jsre.js" modules="模块名称1,模块名称2"></script>
扩展模块 SmartLoader
SmartLoader 是 JSVM2 的一个扩展模块。它能帮助 JSVM 实现智能地加载当前页面所需的所有 js class 文件。 有了它的帮助,程序设计人员不必关心如何对js class文件进行打包,又如何在每一个页面中的JSVM classpath参数中具体配置哪些lib文件,便可以让页面实现最小的js class加载开销。 注意:SmartLoader 需要服务端的支持,例如:web服务环境中需要支持asp,jsp或者php,perl等等动态语言。 smartloader 的使用方法:在页面的 jsvm2 的环境配置参数 modules 中加入 smartloader 即可。 如:<script src="jsvm2/jsre.js" modules="smartloader"></script>
... ... 未完待续...
分享到:
相关推荐
JSVM2 的加载并不对web页面中原来的JavaScript环境产生任何破坏影响,而只是多了一些其它功能的支持。 在JSVM2 下,JavaScript代码的基本模块单元是“对象”,“对象”的类型可以是一个Function或者是一个Object...
2. **兼容性**:JSVM需要支持ECMAScript标准的不同版本,包括ES5、ES6(也称为ES2015)甚至更高级别的版本,以确保与现代JavaScript语法的兼容性。 3. **内存管理**:JSVM需要有效地管理内存,包括垃圾回收机制,以...
2. **语法分析**:将词法单元组合成抽象语法树(AST,Abstract Syntax Tree),这是代码结构的一种树形表示。 3. **编译阶段**:将AST转换为字节码或其他中间表示形式,便于虚拟机处理。 4. **执行引擎**:负责解释...
另外,`jsvm2`可能是指JSVM2的主文件或者是一套相关的库文件,这些文件对于运行JSVM2打包工具和执行打包后的JS文件是必要的。 总结一下,JSVM2的打包工具`jar.hta`是一个强大的工具,它使得开发者能够方便地管理并...
**2. JSVM 软件的使用与配置** 2.1 重采样器 "DownConvertStatic" DownConvertStatic是JSVM中的一个组件,用于将视频流转换为不同的分辨率或帧率,以适应不同的显示设备或网络条件。 2.1.1 共享参数 该重采样器...
2. **安装与配置**: - 用户需要按照手册中的步骤进行下载和安装JSVM 9.18,确保系统兼容性。 - 配置环节可能涉及设置环境变量、指定运行路径等,以便JSVM正确识别和执行JavaScript文件。 3. **基本使用**: - ...
2. **跨平台兼容**:作为基于Java的实现,JSVM能够在任何支持Java的平台上运行,包括Windows、Linux、Mac OS等。 3. **易于集成**:由于是用Java编写,JSVM可以方便地与其他Java应用集成,使得开发者可以轻松地将...
2. **字节码解释与执行**: JSVM将JavaScript源代码编译为字节码,然后通过虚拟机解释执行。理解字节码的生成和执行过程,有助于优化性能和调试问题。 3. **内存管理**: 深入JSVM源码可以学习到如何高效地分配和回收...
JavaScript虚拟机(JSVM)是JavaScript执行环境的一种实现,它允许JavaScript代码在非浏览器环境中运行,比如服务器端或桌面应用。在这个"JSVM测试视频02"中,我们可能涉及的是一个专门针对JSVM的测试集,用于评估其...
2. **SVC解码支持**:JSVM不仅解码基本层的H264视频流,还支持解码SVC扩展层,可以根据网络条件选择不同的解码级别。 3. **Web API集成**:为了与Web平台无缝对接,JSVM可能提供了与HTML5 `<video>` 元素的接口,...
2. **配置优化**:根据应用场景和网络条件,合理设置编码参数,如比特率、帧率、分辨率等,以达到最佳的性能和质量平衡。 3. **错误处理**:在开发过程中,应充分考虑网络波动、设备故障等异常情况,确保JSVM具有...
2. **针对性**:作为SVC的一部分,JSVM可能专注于某些特定的安全方面,比如代码审计、漏洞检测或恶意软件分析,这使得它在这些领域具有更高的效率和准确性。 3. **可定制化**:JSVM可能允许用户根据需求定制特定的...
**2. H.264/AVC SVC 基础** H.264/AVC SVC 建立在基础编码层之上,增加了多个增强层,每个增强层都可以提供额外的质量或分辨率提升。这种分层结构允许接收端根据可用带宽选择合适的层进行解码,实现自适应流媒体。 ...
2. 变换与量化:预测后的误差(Residual)通过离散余弦变换(DCT)转化为频域,降低空间相关性。随后,对变换系数进行量化,以减少数据量。 3. 熵编码:量化后的数据经过熵编码(如哈夫曼编码或熵变码)进一步压缩...
2. **空间层扩展**:空间层扩展通过编码不同分辨率的视频层来实现。这种扩展方式可以满足不同显示设备的需求,如手机、平板和大屏幕电视。 3. **质量层扩展**:质量层扩展则是在相同分辨率下,通过改变编码参数(如...
- **CVS仓库结构**:JSVM的源代码存储在一个CVS仓库中,第1.2节解释了这个仓库的组织结构,帮助用户理解和导航源代码的不同部分。 **2. 构建JSVM软件** - **Windows 32平台**:使用Microsoft Visual Studio作为...
JSVM最新版本提及的是截至2012年2月22日的更新,这意味着我们讨论的是那个时期的JSVM特性与技术。 在2012年的版本中,JSVM可能已经具备了以下关键特性: 1. **性能优化**:JSVM通常会不断进行性能改进,以提高Java...
2. **JSVM优化** - **服务器优化**:相比客户端版本,JSVM通常具有更高级的优化策略,如动态编译、多线程优化、更大的堆内存等。 - **JIT编译器**:将频繁执行的热点代码编译为本地机器码,提高执行速度。 - **...
2. **动态适应性**:H.264/SVC的可伸缩特性允许视频质量根据网络条件自动调整,提供更好的观看体验。 3. **无需额外插件**:与需要Flash或Silverlight等插件的传统方案相比,纯JavaScript的解决方案更易于部署和维护...