Chinaunix首页 | 论坛 | 博客
  • 博客访问: 94014
  • 博文数量: 69
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 925
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-08 09:58
文章分类
文章存档

2011年(1)

2009年(68)

我的朋友

分类: 嵌入式

2009-07-10 10:52:01

 

在软件方面,一些Java手机生产厂商为了配合Java手机应用,还开辟专供Java手机下载软件的网站,如摩托罗拉的“下载新空间()”网站,上面提供了丰富的Java手机软件,例如个人Java手机游戏“龙行天下”、 “智慧无极” 、 “生死时速”、“胜利大逃亡”、“太极飞车”;Java手机用户GPRS联网游戏“基地城市斗地主”、“中国象棋”、“五子棋”、“围棋”、“黑白棋”;面向股民的软件“四方证券”、“证券之星”、“红山股神通”等。

当用户使用Java手机通过GPRS从网上“疯狂”地下载软件时,会常常在Java手机上找回一丝在台式机上的感觉。硬件、操作系统、应用软件还有无线互联网已经足可以将Java手机的功能发挥得淋漓尽致。这正是Java手机的魅力所在。

Java手机渊源

许多人在体味Java手机“魅力”的同时,或许对无线Java的技术并不是很了解。人们会提出诸如“Java究竟是什么”、“无线Java又是什么”、“台式PC计算机运行的Java跟手机上的Java究竟有什么区别”、“Java是免费的吗”等问题。要回答这些问题还是让我们先来探究一下Java手机的体系结构。

图4 Java的三个版本

Sun公司将Java组织成3个版本(如图4),每个版本都瞄准了当今巨大的计算机产业中的一个特定领域:

◆ Java 2 企业版(Java 2 Enterprise Edition ,J2EE) 用于服务器解决方案。J2EE使企业和公众组织能够创建可靠、完整和可扩展的互联网服务。

◆ Java 2标准版 (Java 2 Standard Edition ,J2SE) 用于常见的、并且已经确定其地位的桌面计算机市场。这也是我们最常见的Java版本。

◆ Java 2微型版(Java 2 Micro Edition,J2ME)适用于诸如移动电话等小型设备。

以上每个版本的Java既是一种计算机语言,也是一种运行环境(指虚拟机),而且相应的SDK应用程序开发包以及运行环境都可以免费下载。

我们在此只介绍支持MIDP Java手机的体系结构(如图5)。

图5 Java手机的体系结构

由图5可以看出,系统的最底层是手机硬件。手机硬件上面是手机操作系统,不同厂家手机的操作系统可能不同。操作系统提供了固化的本地应用程序和Java虚拟机CLDC/KVM。而CLDC/KVM之上是MIDP和Java程序管理器JAM和手机厂家根据自己硬件特点扩充的Java API 开发包,如西门子增加了对短消息SMS和红外通讯IrDA的支持。所有Java应用程序都是在手机Java虚拟机上运行的。另外,通过图5也可以看出,通常Java手机应用程序同手机本地的应用程序是不能互相访问的。

Java手机对系统软件进行了最低要求如下:

◆ 一个最小的管理硬件的内核(主要用来处理中断、例外和实现最小的调度功能,并且提供至少一种用于运行Java虚拟机的调度入口);

◆ 一种可以保存数据的存储能力;

◆ 可以进行无线网络通讯;

◆ 具有读写图形设备的位图信息的最小能力;

◆ 一种或多种获得用户输入数据的机制。

虽然“Java手机”一词已经被普遍使用,但是Java手机的定义并不十分明确,参考了大量Java手机的体系结构,给出Java手机的定义如下:

Java手机是在指支持Java 最小定义功能集合(Profile)的手机。通常这个最小功能集合是MIDP。

另外也有一些手机支持更高级的Java功能定义集合(Profile),如Nokia9210支持Personal Java(如图6),其虚拟机为CDC;更高级支持J2SE的SaveJe OS的Java手机SmartPhone(如图7)。

图6 支持Personal Java的Nokia9210

图7 支持SqveJe、J2SE的SMartPhone手机

第一杯无线“咖啡”

相信每个Java爱好者都想领路一下无线Java应用程序的开发,品尝一口无线“咖啡”的味道。虽然Sun公司已经发布了MIDP 2.0无线Java标准,但是由于目前Java手机的主要支持MIDP 1.0,我们的“第一杯无线‘咖啡’”自然也是针对MIDP 1.0。对于标准的无线Java程序开发可以选Sun公司提供的开发包Java wireless develop Kit 1.X(下载网址:)。如果要针对某个Java手机厂家的平台开发,通常要使用相应的SDK和Emulator(模拟器)。

目前,支持无线Java应用开发的IDE也很多,如Sun Forte、Jbuilder+MobileSet、CodeWarrior(如图8、图9、图10)。大多数工具(指个人开发版本)可以免费下载,从而可以高效完成无线Java应用程序的开发、模拟运行、调试等工作。

图8 无线Java应用开发IDE—Metrowerks CodeWarrior 7

图9 无线Java应用开发IDE—Jbuilder7+mobileSet3

图10 无线Java应用开发IDE—Sun wireless studio 4.0

具备了无线应用开发工具后,我们可以试着编写第一个无线Java程序了。这里仅显示一个字符串“你好开放系统世界,Hello World!”,Java手机模拟器是摩托罗拉388。代码如下:

//引入必要的J2ME类库
import java.io.*;
import java.util.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;

/*Java手机的每一个程序都要从MIDlet派生而来,由于 HelloWorld 类是一个 MIDP 应用程序,它扩展了 MIDlet。它也实现 CommandListener ,ItemStateListener接口来处理事件*/

public class Untitled0 extends MIDlet implements CommandListener, 
ItemStateListener {
	Display display;
	Form form0;
	StringItem stringItem1;
	// Custom declaration code starts here
	public Untitled0() {
		display = Display.getDisplay(this);
//构造一个Form,并添加一个字符条目,显示我们的字符串。
		form0 = new Form("你好!");
		stringItem1 = new StringItem(null, "你好开放系统世界\nHello 
World!");
		form0.append(stringItem1);
		form0.addCommand(new Command("再见", Command.SCREEN, 1) );
		form0.setCommandListener(this);
		form0.setItemStateListener(this);
		// Custom constructor code starts here
	}
/*调用 startApp() 方法启动应用程序与启动桌面Applet小应用程序的方法类似。在 MIDle 
的一次执行中它可能会被调用多次。如果 MIDlet 暂停,pauseApp() 将会被调用。要重新启动 
MIDlet,需调用 startApp()。仅须执行一次的主初始化代码应该放置在构造程序中*/
	public void startApp() throws MIDletStateChangeException {
		display.setCurrent(form0);
	}
/*pauseApp() 被调用使得 MIDlet 
处于暂停状态。在此应用程序中,当进入暂停状态时,没执行任何操作;但是我们仍然需要在 MIDlet 
中实现 pauseApp 方法,因为它是父 MIDlet 类中的抽象方法*/
	public void pauseApp() {
	}
	public void destroyApp(boolean unconditional) throws 
MIDletStateChangeException {
	}
	public void itemStateChanged(Item item) {
	}
//退出Java手机程序
	public void commandAction(Command c, Displayable d) {
		if ( c.getLabel().equals("再见") && d == form0) {
			try {destroyApp(true);} catch (Exception e) {}
			notifyDestroyed();
		}
	}
	}

运行结果如图11。MIDP各运行状态如图12。

图11 运行结果

图12 MIDP各运行状态

MIDP程序运行特点与Applet类似。它的运行程序过程如图13所示。

图13 MIDP程序运行过程

MIDP运行时,首先运行构造函数,然后运行startApp(),监听事件,调用用户别的方法。如果是退出请求,就调用destroyApp()方法。

“咖啡”套餐

当今信息化的浪潮中,不仅有计算网络化的趋势,还有着计算嵌入化的趋势。两种趋势已经标志着一个计算机已经进入后PC时代。后PC时代英文术语是“Pervasive Computing”,Pervasive的原意是“普遍的”、“蔓延的”、“渗透的”,所以Pervasive Computing这个词组直接的翻译应该是“渗透到各个方面的计算”。后PC时代的计算机的内涵是广义的,它不但包括以传统PC计算机整机形象出现的计算机,而且还包括大量以非传统式样的计算机。例如:作为随身物品出现的掌上电脑、Java手机、智能手机、遥控开关、电子戒指、电子手杖等等。这些设备的核心部分都有计算机,但该类型的计算机硬件是以嵌入式系统的形式存在,而不是以传统PC计算机整机的形象出现。由于这些类型的计算机专为特定移动需求而设计,其价格低廉,已经逐渐被广大消费者接受。相应的基于该平台的软件需求也会逐渐增多。

阅读(740) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~