《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > JVM在水表电表仪器自动化中的设计研究

JVM在水表电表仪器自动化中的设计研究

2010-01-20
作者:李顺新,严 林

摘 要:论述了Java虚拟机的相关技术,对常用水表、电表等仪表仪器数据的采集、记录及上报应用方面进行设计和研究,以此推进仪表仪器自动化技术发展。
关键词:Java虚拟机;仪器仪表;数据记录

1 JVM的特点
  Java语言突出的一个重要特点是与平台无关,通过采用JVM(Java Virtual Machine)即可实现。JVM是一个想象中的机器,它有想象中的硬件,例如处理器、堆栈、寄存器等,还具有相应的指令系统。在实际计算机或应用中通常通过软件模拟来实现,一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式JVM屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在JVM上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,把字节码解释成具体平台上的机器指令执行,从而提高效率和适应性。JVM的架构大致如图1所示[1-3]。


2 JVM体系结构
  通常JVM由5个主要部分组成:一组指令集、一组寄存器、一个栈、一个无用单元收集堆(Garbage-collected-heap)和一个方法区域。这5部分是Java虚拟机的逻辑成份,不依赖于任何实现技术或组织方式,但其功能必须在真实机器上以某种方式实现。各部分各自功能略述如下[3-6]:
2.1 Java指令集
  JVM目前能支持248个字节码,每个字节码执行一种基本的CPU运算。Java指令集相当于Java程序的汇编语言,其指令集中的每条指令包含一个单字节的操作符,用于指定要执行的操作,还有0个或多个操作数,提供操作所需的参数或数据。  
  许多指令没有操作数,仅由一个单字节的操作符构成。在JVM中内层循环的执行过程如下:
  do{
  取一个操作符字节;
  根据操作符的值执行一个动作;
  }while(程序未结束)
  由于指令系统的简单性,使虚拟机执行的过程变得简单,从而有利于提高执行的效率。
2.2 寄存器
  JVM的寄存器用于保存机器的运行状态和数据,与微处理器中的部分寄存器功能类似。JVM的寄存器通常有4种:
  (1)PC:Java程序计数器;
  (2)optop指针:指向操作数栈顶端;
  (3)frame指针:指向当前执行方法的执行环境的指针;
  (4)vars指针:指向当前执行方法的局部变量区第1个变量的指针。
2.3 栈
   JVM的栈有3个区域:局部变量区、运行环境区和操作数区。
  (1)局部变量区是每个Java方法使用的固定大小的局部变量集。它们按照与vars寄存器的字偏移量来寻址。
  (2)运行环境区是在运行环境中包含的信息用于指向当前类和当前方法的解释器符号表的指针动态链接,采用正常的方法返回或异常传播的方式反映运行环境区的相关情况。
  (3)操作数栈区是机器指令只从操作数栈中取操作数,对它们进行操作,并把结果返回到栈中,以此提高程序的运行效率。
2.4 无用单元收集堆
  Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java语言具有无用单元收集能力,它不给程序员显式释放对象的能力。Java不规定具体使用的无用单元收集算法,可以根据系统的需求使用各种各样的算法。
2.5 方法区
  方法区与传统语言中的编译后代码或是Unix进程中的正文段类似,保存方法代码(编译后的Java代码)和符号表。在当前的Java实现中,方法代码不包括在无用单元收集堆中,但计划在将来的版本中实现。每个类文件包含了一个Java类或一个Java界面编译后的代码,可以说类文件是Java语言的执行代码文件。为了保证类文件的平台无关性,Java虚拟机规范中对类文件的格式也作了详细的说明,具体细节请参考Sun公司的Java虚拟机规范。
3 JVM在水表电表仪器自动化系统的设计研究
  水、电是城乡居民日常生活中所不可缺少的,但对水和电的管理在我国还没有较好的自动化管理设备。特别是水、电的用量以及地域价格的差异性,导致相关信息不能及时上报到相关管理部门,在总结统计相关用水和用电数据时仍采用人工手动逐一统计记录,这不仅造成效率低下,更重要的是人工手动操作难免会出现误操作和误记录。将JVM技术应用在水表、电表等仪表仪器的数据采集、统计、传输、记录等自动化功能中,可以及时地统计每个用户的用水、用电情况,同时,对于过度用水或用电进行数据统计,采取相应的措施,防止部分家庭浪费水电,以此加大节约用水用电的力度。
  JVM在水表电表仪器自动化系统的系统架构设计如图2所示。

    通过对JVM在水表电表仪器自动化中的设计研究,在各个居民区对水表、电表进行改造,安装有Java虚拟机的小型信息采集、统计、记录、上报等功能的信息系统,可以及时将相关信息进行实时处理。同时,通过外接功能接口与通信公司建立通信机制,将信息实时发送到信息管理系统中心,以此对居民的用水、用电等情况进行实时监控。当出现大额度的用量情况时,应采取相应措施,防止意外事故出现。
  将Java虚拟机技术应用在现代居民日常生活中,使水表、电表等仪器仪表的数据采集、汇总、记录、上报等应用方面,可以较大程度地减少人工手动操作。在减少因人工操作带来的误差的同时,提高数据统计及上报的效率,实现水表、电表等仪表设备的信息数据读取、记录、统计、上报的自动化。
参考文献
[1] 夏玮玮,沈连丰,肖婕,等.嵌入式系统关键技术分析与开发应用[J].单片机与嵌入式系统应用,2003(2):5-9.
[2] 刘辉,陈家骏.嵌入式JAVA虚拟机的加速改造[J].微计算机信息,2006,22(17):134-136.
[3] 齐德昱,谢景明.一个基于Java虚拟机的分布式计算模型[J]. 计算机科学,2007,34(6):252-254.
[4] 袁文菊,孙天泽,李梅.Java虚拟机向ARM平台的移植[J].微计算机信息,2007(23):92,154-155.
[5] The embedded java application environment.URL:java.sun.com/products/embeddedjava/.
[6] 宋韬,盘细平,杨春福,等.嵌入式JAVA虚拟机机制研究[J].计算机应用与软件,2006,07(03):62-64.
[7] 严忠林.从虚拟机内部机制着手提高Java效率[J].上海师范大学学报(自然科学版),2005,(02):42-46.
 

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。