工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 开发工具 > 移动开发 > 正文
解析KJava在移动设备开发中的应用
[文章信息]
作者:
时间:2005-02-18
出处:无线空间
责任编辑:方舟
[文章导读]
KJava不仅能够为A6288等手机编写应用程序,而且还可以为其它一些移动信息设备编写应用程序
advertisement
热点推荐
· Excel图表类型的修改技巧
· Windows文件夹图标随意变
· Q版校友录使用简介
· 常用Excel图表类型详解
· 在VC下利用OpenGL构造自由型曲线曲面
[正文]
  摩托罗拉A6288、388型手机的登场,伴随着一个亮点:自身带有KJava虚拟机(KVM),能够通过多种方式下载且能够运行用户用KJava编写的符合MIDP1.0规范的应用程序。后来,又有多款手机支持KJava。实际上,KJava不仅能够为A6288等手机编写应用程序,而且还可以为其它一些移动信息设备编写应用程序。这类嵌入式程序和一般的Java程序相比,有它的特殊之处,本文将对KJava及其应用进行介绍。

  1.KJava简介

  Java语言最初是为嵌入式系统设计的一项产品,在Java 2中为了区分各种不同的应用,又细分成了Java 2 Enterprise Edition(J2EE)、Java 2 Standard Edition(J2SE)和Java 2 Micro Edition(J2ME)三种版本,其中J2ME又称作KJava。

  在J2SE中,它定义了Java规范的核心类函数库(即Java.*)和扩展类函数库(即Javax.*),它主要定位在客户端的应用程序。J2EE主要定位于服务器端的应用程序,它除了支持J2SE所定义的核心类函数库之外,还增加了一些扩展函数类库,如支持Serverlet/JSP的Javax.servlet.*等。J2ME只支持J2SE所定义的核心函数类库的一部分,此外,在J2ME中还增加了一些支持嵌入式系统的扩展类函数库,如Javax.microedition.*等。

  同样是嵌入式设备,它们在运算能力、电力供应等方面还是有很大的差别。Connected Limited Device Configuration(CLDC)规范描述的就是那些运算能力有限、电力供应有限的嵌入式设备,如手机等;而Connected Device Configuration(CDC)规范则描述的是像电视机顶盒这样运算能力较强、电力供应充足的系统。J2ME分别支持这两种不同的配置。在同一种配置下,J2ME又通过Profile来定义与特定嵌入式设备相关的扩展类函数库。

  在传统的Java环境中,为了防止程序在传送途中被篡改以及其它一些安全上的考虑,当程序被类别载入器载入后,紧接着要进行Byte Code审核,审核通过以后才允许Java虚拟机执行它。这一操作在PC机上执行从速度上来看没有什么问题,但是在CLDC所描述的这类系统中,要想作完全相同的处理,从处理能力和速度上来看就显得有些力不从心了。为了解决这个问题,程序设计人员需要在程序设计结束之后额外再多做一件事:预先审核。通过预先审核,会在最终的类文件中加入一些特殊的符号,当该程序下载到目标平台上去执行时,可以以较快的速度完成审核操作。

  2. Motorola SDK

  下面以摩托罗拉A6288型手机为例来具体讲解KJava的程序设计。在摩托罗拉A6288中使用了两颗CPU,一颗是Dragon Ball VZ 33MHz,用于个人数字处理,另外一颗用于通讯的处理。系统为用户预留了约1M的内存空间,支持符合MIDP 1.0规范的KJava应用程序。我们可以到摩托罗拉的官方网站去下载开发工具:CodeWarrior(试用版),下面的内容就是基于这一开发工具。

  在CodeWarrior中,它包含了摩托罗拉的SDK,它实现了CLDC和MIDP 1.0。它所实现的CLDC类库有Java.io.*、Java.lang.*、Java.util.*和Javax.microedition.io.*,实现的MIDP类库有Javax.microedition.lcdui.*、Javax.microedition.rms和Javax.micromedition.midlet。

  我们在PC环境下编写的嵌入在浏览器中的Java程序叫做Applet,编写的程序必须要从Applet类扩展自己的类。而为手机这类移动信息设备编写的KJava程序叫做MIDlet,程序必须要从MIDlet类扩展自己的类。一个MIDlet程序具备如下的典型结构:

public class HelloWord extends MIDlet
{
 HelloWord()
 {……}

 public void startApp()
 {……}

 public void pauseApp()
 {……}

 public void destroyApp(boolean unconditional)
 {……}
}

  当程序被启动时,startApp()被系统调用。(当程序刚开始运行时有启动过程,程序被暂停后也可以被再次启动)。当程序被暂时停止运行时,pauseApp()被调用。当程序执行结束时destroyApp()被调用。我们可以根据实际情况在各函数中进行相应的处理。

  在摩托罗拉SDK中没有AWT或者SWING,因为它们的实现会耗费太多的资源,摩托罗拉SDK只是在Javax.microedition.lcdui中实现了基于LCD的一些比较简单的设计用户界面的功能。SDK中定义了各种Displable类(如Form),程序中当前显示的画面必须是某个Displable的实例,在该实例中可以再放置按钮、文本编辑框、单选框等UI。

  3. 举例

  下面是用KJava编写的一个可以在A6288型手机上运行的简单的例子。具体程序如下:

import Java.io.*;
import Javax.microedition.lcdui.*;
import Javax.microedition.midlet.*;

public class HelloWorld extends MIDlet implements CommandListener
{
 private MainCanvas myCanvas;
 private Display myDisplay;
 private Command c1,c2,c3;

 HelloWorld()
 {
  myCanvas=new MainCanvas();
  myCanvas.addCommand(c1=new Command("First",Command.SCREEN,1));
  myCanvas.addCommand(c2=new Command("Second",Command.SCREEN,1));
  myCanvas.addCommand(c3=new Command("Third",Command.SCREEN,1));
  myCanvas.setCommandListener(this);
  myDisplay = Display.getDisplay(this);
  myDisplay = Display.getDisplay(this);
 }

 public void startApp() throws MIDletStateChangeException
 {
  myCanvas.setUp("first");
  myDisplay.setCurrent(myCanvas);
 }

 public void pauseApp() { }

 public void destroyApp(boolean unconditional) { }

 public void commandAction(Command c,Displayable d)
 { myCanvas.setUp(c.getLabel()); }

 class MainCanvas extends Canvas
 {
  String ts;

  MainCanvas()
  {
   super();
   ts=new String("first");
  }

  public void setUp(String s)
  { ts=new String(s); }

  public void paint(Graphics g)
  {
   g.setColor(0xFFFFFF);
   g.fillRect(0, 0, getWidth(), getHeight());
   g.setColor(0);
   g.drawString("Current is the "+ts,getWidth()/2,60,Graphics.HCENTER | Graphics.TOP);
  }
 }
}

  程序运行后,可以根据用户选择的不同菜单项显示不同的内容。

天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • 在J2ME中读取各种格式的文本文件
  • MIDP应用程序图形用户界面结构分析
  • J2ME中使用Socket开发联网程序
  • J2ME手机游戏引擎程序结构简述
  • 在J2ME中实现基于UDP协议通讯程序
  • 高清碟机标准打内战 HDV将状告EVD恶性竞争
  • 外电称中兴正评估西门子手机业务 或能并购
  • 正版网上银行为何不安全 客户泄密银行无责任
  • 家电商打乱现有梯队 国产手机垄断巨头将出现
  • 中兴否认收购西门子手机业务
  • 04年人均发短信167条 三问短信明日之路
  • 我国牌照“松绑”激发手机厂商扩张冲动
  • 业内认为联电事件是个案 不影响产业转移步伐
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索