JSVM (JavaScript Virtual Machine的缩写),一个JavaScript基础框架,sourceforge开源项目,由万常华(wch3116)于2003年底发起, 采用的是 BSD License 授权协议。
JSVM并不是一个JavaScript Library,而是一个更底层的框架,基于这个框架,可以更好的实现JavaScript的模块化设计,以提高JavaScript代码的重用性。
1.加载JSVM 环境
在web页面中加入代码:<script src="<jsvm2目录>/jsre.js"></script> 即可。
例如:
<script src="script/jsvm2/jsre.js" modules="smartloader" smartloaderurl="index.jsp"></script>
2.基于JSVM 的JavaScript开发
JSVM2 的加载并不对web页面中原来的JavaScript环境产生任何破坏影响,而只是多了一些其它功能的支持。
在JSVM2 下,JavaScript代码的基本模块单元是“对象”,“对象”的类型可以是一个Function或者是一个Object。
“对象”的命名方式:<包名> + "." + <类名>,且必须以一个单独的文件形式保存。
保存路径是:<jsvm2目录>/classes [/<包名> …] /<类名>.class.js。
例如:
定义公用代码:
/**
* 调用jsvm2提供的$package函数定义包名
* 作用相当于:if (!window.com.logcd) {window.com.logcd = {};}
*/
$package("com.logcd");
com.logcd.StringBuffer = StringBuffer;
function StringBuffer(){
this._strings_=new Array;
}
/*
* 把该参数附加到字符串数组中
*/
StringBuffer.prototype.append = function (str){
this._strings_.push(str);
}
/**
* 返回真正连接成的字符串
*/
StringBuffer.prototype.toString = function(){
return this._strings_.join("");
}
/**
* 清空
*/
StringBuffer.prototype.removeAll = function(){
this._strings_.splice(0,this._strings_.length);//this._strings_.length=0
}
页面上调用:
function execute() {
$import("com.logcd.StringBuffer");
var buffer = new StringBuffer();
buffer.append("learn ");
buffer.append("use ");
buffer.append("JSVM2!");
alert(buffer.toString());
}
3.JSVM JavaScript Archive
在使用JSVM2一段时间之后,很快会发现JSVM的工作模式是按需动态加载代码的。于是出现一个矛盾:当我们为了满足设计上的合理粒度将代码分散到多个对应的class.js文件中,造成代码的加载动作次数过于多,从而影响到一定的整体性能。
为了解决这个矛盾,JSVM2 提供了一个集中批量加载代码的解决方案。可以通过JSVM2自身提供的工具,将所需的多个class.js文件打包在一个js文件中,然后配置到classpath的环境变量中即可。 当程序执行到需要这个“类”或者“对象”的时候,JSVM会从缓存中直接获得对应的代码,从来避免了进行多次的XMLHttpRequest交互。
说明:该工具需要 FileSystemObject 组件的支持!所以使用该工具的环境必须是 IE. 并且如果访问的不是本地文件而是通过HTTP访问的页面,必须对该url进行信任站点授权操作。
4.JSVM Module
JSVM2 的核心模块在 bin/kernel.js 中实现,除此之外,我们还可以使用JSVM2自带的(或者第三方提供的)其它模块。
模块文件也必须以 .js 作为扩展名,放置在 <jsvm目录>/bin 目录下。
加载模块的方式:<script src="jsvm2/jsre.js" modules="模块名称1,模块名称2"></script>
5.扩展模块 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>
分享到:
相关推荐
**JSVM 使用手册详解** JSVM(Joint Scalable Video Model)是用于Scalable Video Coding (SVC)项目的一种软件工具。SVC是ISO/IEC Moving Pictures Experts Group (MPEG)和ITU-T Video Coding Experts Group (VCEG)...
JSVM2 的加载并不对web页面中原来的JavaScript环境产生任何破坏影响,而只是多了一些其它功能的支持。 在JSVM2 下,JavaScript代码的基本模块单元是“对象”,“对象”的类型可以是一个Function或者是一个Object...
1. **高性能执行引擎**:为了确保代码高效运行,JSVM通常会使用即时编译(JIT,Just-In-Time Compilation)技术将JavaScript源代码编译为本机代码,从而提高执行速度。 2. **兼容性**:JSVM需要支持ECMAScript标准...
2. **语法分析**:将词法单元组合成抽象语法树(AST,Abstract Syntax Tree),这是代码结构的一种树形表示。 3. **编译阶段**:将AST转换为字节码或其他中间表示形式,便于虚拟机处理。 4. **执行引擎**:负责解释...
JSVM Software Manual_9.18是针对该版本虚拟机的使用手册,旨在帮助用户理解和操作JSVM 9.18。这份手册可能包含详细的功能介绍、配置指南、API参考以及故障排查等内容。 1. **JSVM简介**: - JSVM是基于ECMAScript...
2. **跨平台兼容**:作为基于Java的实现,JSVM能够在任何支持Java的平台上运行,包括Windows、Linux、Mac OS等。 3. **易于集成**:由于是用Java编写,JSVM可以方便地与其他Java应用集成,使得开发者可以轻松地将...
2. **字节码解释与执行**: JSVM将JavaScript源代码编译为字节码,然后通过虚拟机解释执行。理解字节码的生成和执行过程,有助于优化性能和调试问题。 3. **内存管理**: 深入JSVM源码可以学习到如何高效地分配和回收...
**JSVM编解码器详解** JSVM,全称为Java Scalable Video Codec,是一种基于H.264/SVC(Scalable Video Coding)标准的编解码器。...掌握JSVM的使用和优化技巧,对于提升视频服务的质量和用户体验至关重要。
- **CVS仓库结构**:JSVM的源代码存储在一个CVS仓库中,第1.2节解释了这个仓库的组织结构,帮助用户理解和导航源代码的不同部分。 **2. 构建JSVM软件** - **Windows 32平台**:使用Microsoft Visual Studio作为...
2. **SVC解码支持**:JSVM不仅解码基本层的H264视频流,还支持解码SVC扩展层,可以根据网络条件选择不同的解码级别。 3. **Web API集成**:为了与Web平台无缝对接,JSVM可能提供了与HTML5 `<video>` 元素的接口,...
**JSVM:SVC的开源实现** JSVM(Java Virtual Machine)是SVC(Software Vulnerability Corpus...无论是为了学术研究,还是实际的开发和测试工作,了解和使用JSVM都可以极大地提升我们对Java虚拟机及其安全性的理解。
2. 变换与量化:预测后的误差(Residual)通过离散余弦变换(DCT)转化为频域,降低空间相关性。随后,对变换系数进行量化,以减少数据量。 3. 熵编码:量化后的数据经过熵编码(如哈夫曼编码或熵变码)进一步压缩...
- **变换与量化**:JSVM 使用离散余弦变换(DCT)和量化过程,将时域的视频帧转换到频域,然后通过量化降低信号的精度,进一步压缩数据。 - **熵解码**:解码端的熵解码模块负责从比特流中恢复系数,并进行反量化和...
5. **熵编码**:JSVM使用了改进的熵编码技术,如CABAC(Context-Adaptive Binary Arithmetic Coding)和CAVLC(Context-Adaptive Variable Length Coding),这些编码方式能够更高效地压缩码流。 6. **运动估计与...
1. **跨平台兼容性**:由于JavaScript的广泛支持,使用JSVM9.19.7解码H.264/SVC的视频可以在各种操作系统和浏览器上运行。 2. **动态适应性**:H.264/SVC的可伸缩特性允许视频质量根据网络条件自动调整,提供更好的...
2. **JSVM优化** - **服务器优化**:相比客户端版本,JSVM通常具有更高级的优化策略,如动态编译、多线程优化、更大的堆内存等。 - **JIT编译器**:将频繁执行的热点代码编译为本地机器码,提高执行速度。 - **...
JSVM最新版本提及的是截至2012年2月22日的更新,这意味着我们讨论的是那个时期的JSVM特性与技术。 在2012年的版本中,JSVM可能已经具备了以下关键特性: 1. **性能优化**:JSVM通常会不断进行性能改进,以提高Java...
2. `ParseSlice`:解析阶段,初始化解码所需的数据结构,并使用 CABAC(Context-Adaptive Binary Arithmetic Coding)算法反解码得到残差系数。 3. `DecodeSlice`:解码阶段,包括反量化和根据预测结果与宏块类型...
2. **时间、空间和质量可伸缩性**:JSVM实现了时间可伸缩(帧率调整)、空间可伸缩(分辨率调整)和质量可伸缩(比特率调整)的功能。这三种可伸缩性使得SVC能更好地适应变化的网络环境和用户需求。 3. **编码工具*...