nanovm/intro

Table of Contents

    NanoVM Introduction

    NanoVM是一个面向实时嵌入式环境的Java虚拟机, 具有实时性、可裁减、可配置、高度模块化等特性,为实时嵌入式环境下的构件运行提供良好的中间件支持。

    实时嵌入式环境的设备既有相当的处理能力,也具有一定的资源受限性,这决定了其上运行的JVM体积不能太庞大,也不能过于简单。因此,现有的J2SE、J2EE版本体积庞大,J2ME版本过于简化,三者都难以满足实时嵌入式环境的需求。更重要的是,实时嵌入式环境要求JVM具有实时性, 这是现有的绝大多数Java虚拟机所不具备的。虽然支持实时应用的RTSJ规范很早就推出了,但是RTSJ编程模型过于复杂,且支持RTSJ的JVM使用成本高昂,阻碍了RTSJ走向实用。嵌入式设备工作在多种多样的物理环境中,其功能目标也多种多样。嵌入式设备也是多种多样。嵌入式设备上的软件必须适应这种多样的和变化的环境,必须具有高度的部署时的可定制和运行时的可适应性,这也是当前商业JVM所欠缺的。

    基于上述考虑,我们决定开发NanoVM: 一个面向实时嵌入式环境的开源Java虚拟机。NanoVM Java虚拟机计划具有下述能力:

    • 具备满足软实时要求的能力;
      • 拥有一个增量式实时垃圾收集器;
      • 支持实时线程和实时事件处理
      • 可以对实时系统中的周期性任务和非周期性任务进行直接支持
    • 具有良好的可裁减性,可以根据用户的描述性声明裁减其对各种实时特性的支持,以满足嵌入式环境下存储空间的限制。

    目前,NanoVM的实现主要参考了Apache Harmony。针对DRE环境中对软件运行平台的要求,在Harmony Drlvm虚拟机的设计和实现的基础上,增加了如下的特色:

    • 实时
      虽然现阶段还没有实现硬实时计算的要求,但它可以被安全的用于软实时计算环境中,我们在系统设计和实现的各个层次去考虑和解决实时的问题。
    • 高度的模块化结构
      系统中的每个软件部件都是构件,构件之间有着定义良好的接口。
    • 高配置性
      在其高度模块化的基础上,可以采用配置文件对虚拟机运行时的模块结构进行控制,这包括对各个模块数量和其相对关系的设计,还可以对特定模块的运行参数进行设定。
    • 灵活的系统运行方式
      可灵活配置虚拟机的运行方式。支持解释执行,JIT编译执行和AOT编译执行等多种方式。
    • 高性能的Java代码执行方式
      系统的动态执行系统可在运行时收集字节码的Profile信息,并将其用于JIT编译器的优化环节,从而提高编译的本地代码的执行效率。
    • 潜在的支持多种语言的能力
      由于具体的字节码格式信息被有效地对立隔离于系统的其他部分,因此其他语言的设计和实现这可以NANOVM为基础快速实现支持其中间代码的虚拟机。

    NANOVM是开放的,其设计和实现文档在这里,其源代码可以在这里找到 SVN代码库