首 页 用户登录 | ![]() |
|||
|
|||
按字母检索 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
按声母检索 | A | B | C | D | E | F | G | H | J | K | L | M | N | O | P | Q | R | S | T | W | X | Y | Z | 数字 | 符号 |
|
![]() |
您的位置: 5VAR论文频道 → 论文中心 → 理工论文 → 电子通信 |
|
|||||
嵌入式Java运行平台数据库引擎的应用研究 | |||||
收集整理:佚名 来源:本站整理 时间:2009-01-11 00:03:26 点击数:[] ![]() |
|||||
[本篇论文由上帝论文网为您收集整理,上帝论文网http://paper.5var.com将为您整理更多优秀的免费论文,谢谢您的支持] 关键词:数据库引擎 Java 嵌入式系统 引言 随着嵌入式系统CPU硬件从8位到32位的发展,嵌入式系统软件的开发环境也得到迅猛的发展,编程语言从10多年以前的汇编为主流发展到现在C、C++、Java为主流。另外,面向对象设计技术、组件技术等在嵌入式系统软件设计中的应用也日益引起人们的重视。 在嵌入式系统软件开发领域,Java是一门较新的异军突起的编程语言。其优点是语言本身简洁优美,完全按照面向对象思想设计,并且语言引入许多较为先进的特性,如多线程、自动内存管理和垃圾回收,非常适合于大规模复杂软件系统的开发。其不足点是与硬件结合不够紧密,同时代码运行速度较慢。此外,对于内存的使用,程序难于管理和控制。 由于采用Java编程具有如上所述的众多优点,越来越多的嵌入式系统采用Java技术来构造软件系统。本文在介绍基于日本某自动售货机产品的控制板的Java运行平台基础上,详细讨论笔者为其平台开发的DB引擎的组成和设计思路。 图1所示为Java运行环境的总体框架示意图。本系统为克服Java的解释执行机制所引起的执行速度慢的问题,在硬件上采用了Sun公司开发的Pico Java芯片。它能够直接执行Java的二进制代码,使Java的执行速度提高一个数量级以上。在硬件层的上面是OS层,本系统采用的是ITRON(日本东京大学坂村键教授设计的一种嵌入式操作系统,虽然在日本以外的市场影响不大,但在日本本地市场,占有率达90%以上)。由于ITRON规格制定得比较早,并且为兼顾低端嵌入式应用的场合,ITRON总体上功能比较简单,并未把诸如TCP/IP、文件系统等内容包含在其里面,因此与嵌入式Linux等不一样的是,TCP/IP、文件系统是以独立的组件形式存在的。在OS层的上面是JVM层。与其它一般Java虚拟机不同的是,本系统的Java执行代码不需要由JVM解释执行,而是由CPU硬件直接执行。在JVM的上层是自动售货机的基础平台类库和公共组件层。本文介绍的DB引擎组件正是处于这一层。该层的上面是应用程序层,用于实现自动售货机的各种控制、管理机能。 2 嵌入式系统DB引擎 2.1 DB引擎组件的引入 众所周知,在台式机领域,DB是一个十分关键的基础软件。以往嵌入式系统的软件可能更侧重于与硬件的交互与控制,但随着对嵌入式系统功能需求的日益复杂化,嵌入式系统软件中,信息、数据的保存与管理的比重也日益增加。在这样的背景下,嵌入式系统软件开发中,通过引入DB组件,对实现软件整体框架结构的组件化与简单化,有着十分明显而重要的意义。 2.2 DB引擎组件的总体框架 如图2所示,将整个DB组件设计为3层结构,分别为JDBC接口层、SQL解释层和动作执行层。这3层之间呈单向依赖关系。也就是说,SQL解释层依赖于动作执行层,但动作执行层不依赖于其上面的两层,可以单独存在而直接被使用。如果用户以使用方便为主要目的,可采用完全配置方式,应用程序通过JDBC接口层存取数据。反之,如果用户对空间和效率要求较高,可仅配置动作执行层组件,应用程序直接调用动作执行层的API进行数据的检过和更新等操作。 (1)JDBC接口层 如前文所述是可选组件,旨在为应用程序提供一个标准的DB调用接口。 (2)SQL解释层 本DB组件实现的SQL解释层,只实现了标准SQL的一个小子集,主要完成select、delete、insert、update、create table、drop table等功能。其中数据操作语句(select、delete、insert、update)的解释要点之一是where条件子句的解释执行,类似于数学表达式求值算法。本文采用简单直观的“算符优先法”。该算法使用两个工作栈,一个称作OPTR栈,用以寄存运算符;另一个称作OPND栈,用以寄存操作数或运算结果。算法的基本思想是: ①首先置操作数栈为空,表达式起始符“#”为运算栈的栈底元素; ②依此读入表达式中每个Token。若是操作数,则进OPND栈adk是运算符,则和OPTR栈的栈顶运算符比较优先权后作相应操作,直至整个表达式求值完毕(即OPTR栈的栈顶元素和当前读入的Token均为“#”。 本文实现的SQL子集描述如下: 预定义 <DataConst>:=<QUOTE><日期><QUOTE> <StrConst>:=<QUOTE><SQL转义文字><QUOTE> <Const>:=<field>[,<field>[,<field>[…]]] <valuelist>:=<Const>[,<Const>[…] ]] <compare>:= =│==│!=│<>│>│>=│<│<= <setlist>:=<setitem>[,<setitem>[,<setitem>[…]]] <统计函数名>:=MIN│MAX│COUNT│SUM <统计函数>:=<统计函数>(<field>) <统计list>:=<统计函数>,[,<统计函数>[,<统计函数>[…]]] <数据类型>:=INT│UNMBER│CHAR│DATE <Where文> :=文递归定义式 <Where文>:=(<Where>) <Where文>:=NOT<Where文> <Where文>:=<Where文>OR<Where文> <Where文>:=<Where文>AND<Where文> SQL文定义式 ①SELECT*<fieldlist>FROM<table>[WHERE<Where文>][ORDER BY<field>[ASCDESC]] ②SELECT<统计list>FROM<table>[WHERE<Where文>] ③UPDATE<table>SET<setlist>[WHERE<Where文>] ④INSERT INTO<tab Tags: |
提供人:佚名 | |
【返回上一页】【打 印】【关闭窗口】 |
![]() |
5VAR论文频道 |
![]() |
5VAR论文频道 |
![]() |
关于本站 -
网站帮助 -
广告合作 -
下载声明 -
网站地图
Copyright © 2006-2033 5Var.Com. All Rights Reserved . |