APP下载

嵌入式系统中Java AWT的实现

2014-07-31齐慧平

赤峰学院学报·自然科学版 2014年13期
关键词:服务程序图形图像线程

齐慧平

(临汾职业技术学院, 山西 临汾041000)

嵌入式系统中Java AWT的实现

齐慧平

(临汾职业技术学院, 山西 临汾041000)

随着信息技术的飞速发展,21世纪成为了信息时代.各种数字化产品不断涌现,成为了当前信息处理的主要工具。微处理器作为数字化产品的核心,在手机、个人电脑、电视机等等产品中有着广泛的应用,使得大部分产品都可以与网络相连接.通过网络连接起来的设备之间的硬件体系和操作系统是不相同的,Java可以通过创建与平台无关的程序来解决设备之间软硬件体系的不兼容问题.Java的这种功能主要是由Java虚拟机实现的.本文将详细剖析Java虚拟机内部实现机制,并着重分析如何在嵌入式系统中实现Java AWT技术.

嵌入式;Java虚拟机;Java AWT技术

1 Java虚拟机

Java虚拟机作为Java体系结构的核心部分,是一种抽象意义上的计算机,这是因为Java虚拟机所必须实现的每一特点都是由Java虚拟机规范所定义的.Java虚拟机在体系中的主要任务在于装载class文件,并且执行其中的字节码.Java通过本地连接的方法能够与底层操作系统和函数库进行交互,同时还能为上层的Java应用程序提供符合规定的应用程序接口.

Java虚拟机为Java应用程序提供了需要的基础类库和抽象图形工具包,二者结合形成了Java API的集合.Java虚拟机的内部封装了与平台有关的操作,而Java的应用程序不直接操作底层的函数库,因此Java程序与平台无关.

2 嵌入式系统中Java ATW的实现

要想在嵌入式系统中实现Java ATW,需要逐步实现以下几个步骤:

2.1 Java虚拟机欲运行的软件和硬件平台

要想在嵌入式系统中实现Java虚拟机,需要全面考虑以下几个方面的影响.首先是Java虚拟机运行平台的CPU类型和操作系统以及运行时所占用的资源,比如Java虚拟机运行时内存的使用情况、Java类库的大小以及可执行映像的大小等等.其次要考虑到Java虚拟机是否提供API图形,如果提供的话,虚拟机又需要用什么图形库来支持.最后,要考虑到Java虚拟机所提供的应用程序接口与Java规范是否相符,如果相符,又该如何选择规范标准.除了这些因素之外,还应考虑Java虚拟机运行平台提出的要求,下面以Wonka运行目标平台为例,讲述Java虚拟机运行的软件和硬件平台.

2.1.1 Java虚拟机运行的软件平台

由于Java虚拟机是直接与底层的操作系统和函数库打交道,因此Java虚拟机的软件平台就是由操作系统和函数库构成.除此之外,Java虚拟机运行的嵌入式系统的软件平台还应该具有以下特征:首先操作系统的源代码具有开放性,从而使虚拟机能够充分操作系统中的各种功能.其次目标平台上需要提供专门面向嵌入式系统的图形库,从而使得AWT的实现更加便利,比如QT/Embedded.最后可以通过设备文件来访问设备驱动程序,从而使得AWT可以直接通过操作FrameBuffer来实现.

2.1.2 Java虚拟机运行的硬件平台

为了使Java虚拟机的功能变得更加强大,需要一个强大的硬件平台来支撑.Java虚拟机运行的硬件平台应该包括以下几点重要特征:

①内存64M;②32M快闪存储器;③能够通过网卡和网络连接;④CPU选用PXA250芯片,从而能够与ARM架构V5TE兼容,频率可达到200-400HZ.这些特点决定了Java虚拟机的功能的丰富性,比一般嵌入式系统要优越得多.

2.2 Java虚拟机的选择

实现AWT的基础是选择一个合适的Java虚拟机,因此必须要慎重考虑.综合考虑各方面的因素,我们可以选择一种叫作Wonka面向嵌入式系统的Java虚拟机.由于Wonka的源码是公开的,因此符合嵌入式系统的需求.选择Wonka,是因为其具有以下的优点:

①Wonka设计的最初目的就是面向嵌入式系统的. Wonka是起源于欧洲,其代码不仅能够支持Linux操作系统,还能支持ARM体系中的CPU.因此,可以根据目标平台的特点,将Wonka移植到目标平台上.②Wonka是一种符合GPL精神的自由软件,因此可以对其源代码进行开发利用.③Wonka运行时在嵌入式系统中所占用的内存大小不大,一般在1-2M之间,满足了嵌入式系统的需求.④Wonka系统是一个能够与Java2兼容的Java虚拟机,这样不仅可以提供AWT图形是,同时还能在AWT图形库的基础上实现SWING图形库.当前网络上的大部分Java资源与Java2能够兼容.⑤Wonka的可移植性非常强,能够支持不同类型的CPU体系结构,比如X86和ARM,同时能够支持Linux系统.

由于当前关于Wonka软件使用性能评估的资料很少,因此支持Wonka的用户不多,比知名的KAFFEJava虚拟机要少很多,其应用还没有得到广泛的推广.但是由于有学者在掌上电脑中成功实现了Wonka,因此有一部分人正在尝试在嵌入式系统中使用Wonka.

2.3 Wonka Java虚拟机的内部执行流程

Wonka Java虚拟机的内部执行流程可以简单地用图1来表示.

图1 Wonka内部执行流程

Wonka所实现的主要功能如下:

2.3.1 Main函数

最初主线程Main函数主要实现了以下功能:第一,可以为Java虚拟机的运行分配所需要的空间,空间的大小由用户的要求决定,如果没有要求,Wonka就会使用默认值.第二,可以对CPU和Java虚拟机内部的定时器中断服务程序进行初始化.Wonka内部的线程可以切换,同时还提供了软定时器.为了对软定时器的时间进行判断,需要在定时器中断服务程序中进行线程的切换.如果软定时器的时间到了,中断服务程序就会向timer线程发送一条消息,timer线程就会对该程序进行相应的处理.第三,通过系统调用setitimer,就可以启动Wonka内部的定时器.系统每隔一定的时间就会向当前的进程发送一个sigalrm信号,如果将中断服务程序注册为该信号的信号处理程序,就可以每隔一段时间执行一次中断服务程序.

2.3.2 初始线程

Wonka内部创建的第一个线程就是初始线程.首先,初始线程创建了timer线程将其置为就绪状态,timer线程能够处理Java虚拟机内部以及用户创建的软定时器.其次,初始线程启动了Java虚拟机.

2.3.3 加载基本类

Wonka执行用户的应用程序的前提条件是加载基本类.这里的基本类是指在所有应用程序在运行期间都会用到的类.Java.lang.Object是所有类的祖先类,Java虚拟机会为每一个加载的类创建一个Java.lang.Class实例,因此首先必须加载这两个类.

2.3.4 加载AWT基本类

加载AWT基本类与加载基本类相类似,知识加载一些与AWT相关的基本类.AWT应用程序的运行需要有基本AWT类来作为支持.在AWT应用程序运行之前,需要将所有事件类的祖先java.awt.AWTEvent和所有图形类的祖先java.awt.Image加载到Java虚拟机中.

2.4 实现AWT技术的总体构思

2.4.1 实现步骤

①实现Java虚拟机与底层图形库之间的接口.该接口能够实现两种类型数据的传输.首先Java虚拟机将所需要显示的数据通过接口传送底层图形库,底层图形库接收到数据之后就会显示出来.其次底层图形库接收键盘以及触摸笔事件之后,通过接口将这些数据反馈给Java虚拟机,Java虚拟机根据接收的信息作出相应的处理.

②构建符合J2ME(Java 2 Micro Edition,Java 2的微型版本)规范的AWT类库.小的消费类电子的内存很小,用户接口受到了限制.为了满足小的消费类电子产品,J2ME应运而生.在J2ME规范中,将Java技术的实现分为了两个部分,即配置层和框架层.框架层又可以细分为基础框架层和特定框架层.嵌入式系统中AWT实现的规范在特定框架层给出.

2.4.2 事件查询方案

当Wonka检测到当前的运行程序中需要使用AWT时,就会创建一个新的线程.这个新的线程主要通过接收触摸笔事件和按键事件来显示图形.为了执行这个线程,需要专门编写一个Dispatcher.java文件,具体程序如下:

public void start(){ if(!keepOnGoing){

keepOnGoing=true;

thread=new Thread(this“Rudolph”); thread.setPriority(priority); thread.setDacmon(false); thread.star();

}

}

2.4.3 图形图像显示方案

为了能够显示图形图像,需要编写一个Painter.java文件,并创建一个新的线程.

public void start(){ if(!keepOnGoing){

keepOnGoing=true;

thread=new Thread(this,“Display”); thread.setPriority(priority); thread.setDaemon(false); thread.start();

}

}

语句“thread=new Thread(this,“Display”)”创建图形图像显示线程.在Java虚拟机内部启动上面的两个线程之后,还要利用底层提供的图形接口实现mouse-poll、keyboard-poll和screen-update三个函数,才能实现图形图像的显示.

〔1〕钟声,赵容彩.JAVA语言中本地方法的设计与实现[J].信息工程大学学报,2000,1(1).

〔2〕李亚东,等.基于JNI的跨平台软件设计[J].计算机工程,2000,9(26).

〔3〕毛炜.面向领域的实时嵌入式中间技术研究[D].西北工业大学学位论文,2004.

〔4〕马镭.面向领域的实时嵌入式中间技术研究[D].西北工业大学学位论文,2004.

〔5〕杨灿群,等.Java语言环境事实技术探讨[J].计算机工程与科学,2001,2(23).

〔6〕高百明,等.Java ATW的结构概览与实现[J].计算机工程,1999,4(25).

TP31

A

1673-260X(2014)07-0023-02

猜你喜欢

服务程序图形图像线程
Photoshop图形图像处理线上线下混合式教学模式探究
基于C#线程实验探究
SylixOS系统的中断嵌套机制研究与实现
基于C#的进程守护程序的设计
UDP穿透NAT技术实现数据唤醒车联网T-Box设备的方案
基于国产化环境的线程池模型研究与实现
浅析计算机图形图像处理技术偏技术
网页设计与图形图像处理技术探析
浅谈linux多线程协作
面向工艺设计的图形图像处理系统研究与实现