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

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

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

摘 要:論述了Java虛擬機的相關技術,對常用水表、電表等儀表儀器數(shù)據(jù)的采集、記錄及上報應用方面進行設計和研究,以此推進儀表儀器自動化技術發(fā)展。
關鍵詞:Java虛擬機;儀器儀表;數(shù)據(jù)記錄

1 JVM的特點
  Java語言突出的一個重要特點是與平臺無關,通過采用JVM(Java Virtual Machine)即可實現(xiàn)。JVM是一個想象中的機器,它有想象中的硬件,例如處理器、堆棧、寄存器等,還具有相應的指令系統(tǒng)。在實際計算機或應用中通常通過軟件模擬來實現(xiàn),一般的高級語言如果要在不同的平臺上運行,至少需要編譯成不同的目標代碼。而引入Java語言虛擬機后,Java語言在不同平臺上運行時不需要重新編譯。Java語言使用模式JVM屏蔽了與具體平臺相關的信息,使得Java語言編譯程序只需生成在JVM上運行的目標代碼(字節(jié)碼),就可以在多種平臺上不加修改地運行。JVM在執(zhí)行字節(jié)碼時,把字節(jié)碼解釋成具體平臺上的機器指令執(zhí)行,從而提高效率和適應性。JVM的架構大致如圖1所示[1-3]。


2 JVM體系結構
  通常JVM由5個主要部分組成:一組指令集、一組寄存器、一個棧、一個無用單元收集堆(Garbage-collected-heap)和一個方法區(qū)域。這5部分是Java虛擬機的邏輯成份,不依賴于任何實現(xiàn)技術或組織方式,但其功能必須在真實機器上以某種方式實現(xiàn)。各部分各自功能略述如下[3-6]:
2.1 Java指令集
  JVM目前能支持248個字節(jié)碼,每個字節(jié)碼執(zhí)行一種基本的CPU運算。Java指令集相當于Java程序的匯編語言,其指令集中的每條指令包含一個單字節(jié)的操作符,用于指定要執(zhí)行的操作,還有0個或多個操作數(shù),提供操作所需的參數(shù)或數(shù)據(jù)?! ?br />   許多指令沒有操作數(shù),僅由一個單字節(jié)的操作符構成。在JVM中內(nèi)層循環(huán)的執(zhí)行過程如下:
  do{
  取一個操作符字節(jié);
  根據(jù)操作符的值執(zhí)行一個動作;
  }while(程序未結束)
  由于指令系統(tǒng)的簡單性,使虛擬機執(zhí)行的過程變得簡單,從而有利于提高執(zhí)行的效率。
2.2 寄存器
  JVM的寄存器用于保存機器的運行狀態(tài)和數(shù)據(jù),與微處理器中的部分寄存器功能類似。JVM的寄存器通常有4種:
  (1)PC:Java程序計數(shù)器;
  (2)optop指針:指向操作數(shù)棧頂端;
  (3)frame指針:指向當前執(zhí)行方法的執(zhí)行環(huán)境的指針;
  (4)vars指針:指向當前執(zhí)行方法的局部變量區(qū)第1個變量的指針。
2.3 棧
   JVM的棧有3個區(qū)域:局部變量區(qū)、運行環(huán)境區(qū)和操作數(shù)區(qū)。
  (1)局部變量區(qū)是每個Java方法使用的固定大小的局部變量集。它們按照與vars寄存器的字偏移量來尋址。
  (2)運行環(huán)境區(qū)是在運行環(huán)境中包含的信息用于指向當前類和當前方法的解釋器符號表的指針動態(tài)鏈接,采用正常的方法返回或異常傳播的方式反映運行環(huán)境區(qū)的相關情況。
  (3)操作數(shù)棧區(qū)是機器指令只從操作數(shù)棧中取操作數(shù),對它們進行操作,并把結果返回到棧中,以此提高程序的運行效率。
2.4 無用單元收集堆
  Java的堆是一個運行時數(shù)據(jù)區(qū),類的實例(對象)從中分配空間。Java語言具有無用單元收集能力,它不給程序員顯式釋放對象的能力。Java不規(guī)定具體使用的無用單元收集算法,可以根據(jù)系統(tǒng)的需求使用各種各樣的算法。
2.5 方法區(qū)
  方法區(qū)與傳統(tǒng)語言中的編譯后代碼或是Unix進程中的正文段類似,保存方法代碼(編譯后的Java代碼)和符號表。在當前的Java實現(xiàn)中,方法代碼不包括在無用單元收集堆中,但計劃在將來的版本中實現(xiàn)。每個類文件包含了一個Java類或一個Java界面編譯后的代碼,可以說類文件是Java語言的執(zhí)行代碼文件。為了保證類文件的平臺無關性,Java虛擬機規(guī)范中對類文件的格式也作了詳細的說明,具體細節(jié)請參考Sun公司的Java虛擬機規(guī)范。
3 JVM在水表電表儀器自動化系統(tǒng)的設計研究
  水、電是城鄉(xiāng)居民日常生活中所不可缺少的,但對水和電的管理在我國還沒有較好的自動化管理設備。特別是水、電的用量以及地域價格的差異性,導致相關信息不能及時上報到相關管理部門,在總結統(tǒng)計相關用水和用電數(shù)據(jù)時仍采用人工手動逐一統(tǒng)計記錄,這不僅造成效率低下,更重要的是人工手動操作難免會出現(xiàn)誤操作和誤記錄。將JVM技術應用在水表、電表等儀表儀器的數(shù)據(jù)采集、統(tǒng)計、傳輸、記錄等自動化功能中,可以及時地統(tǒng)計每個用戶的用水、用電情況,同時,對于過度用水或用電進行數(shù)據(jù)統(tǒng)計,采取相應的措施,防止部分家庭浪費水電,以此加大節(jié)約用水用電的力度。
  JVM在水表電表儀器自動化系統(tǒng)的系統(tǒng)架構設計如圖2所示。

    通過對JVM在水表電表儀器自動化中的設計研究,在各個居民區(qū)對水表、電表進行改造,安裝有Java虛擬機的小型信息采集、統(tǒng)計、記錄、上報等功能的信息系統(tǒng),可以及時將相關信息進行實時處理。同時,通過外接功能接口與通信公司建立通信機制,將信息實時發(fā)送到信息管理系統(tǒng)中心,以此對居民的用水、用電等情況進行實時監(jiān)控。當出現(xiàn)大額度的用量情況時,應采取相應措施,防止意外事故出現(xiàn)。
  將Java虛擬機技術應用在現(xiàn)代居民日常生活中,使水表、電表等儀器儀表的數(shù)據(jù)采集、匯總、記錄、上報等應用方面,可以較大程度地減少人工手動操作。在減少因人工操作帶來的誤差的同時,提高數(shù)據(jù)統(tǒng)計及上報的效率,實現(xiàn)水表、電表等儀表設備的信息數(shù)據(jù)讀取、記錄、統(tǒng)計、上報的自動化。
參考文獻
[1] 夏瑋瑋,沈連豐,肖婕,等.嵌入式系統(tǒng)關鍵技術分析與開發(fā)應用[J].單片機與嵌入式系統(tǒng)應用,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] 嚴忠林.從虛擬機內(nèi)部機制著手提高Java效率[J].上海師范大學學報(自然科學版),2005,(02):42-46.
 

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權者。如涉及作品內(nèi)容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。