快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新葡亰平台游戏APP_龟发之家论坛



择要:对J2ME规范的内容以及与其它版本的关系进行了简要先容,并结合摩托罗拉的SDK解说了若何用KJava编写利用法度榜样。

关键字:KJava;J2ME;移动信息设备

摩托罗拉A6288、388型手机的登场,伴跟着一个亮点:自身带有Kjava虚拟机(KVM),能够经由过程多种要领下载且能够运行用户用Kjava编写的相符MIDP1.0规范的利用法度榜样。后来,又有多款手机支持Kjava。实际上,Kjava不仅能够为A6288等手机编写利用法度榜样,而且还可以为其它一些移动信息设备编写利用法度澳门新葡亰平台游戏APP榜样。这类嵌入式法度榜样和一样平常的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.*澳门新葡亰平台游戏APP等。

同样是嵌入式设备,它们在运算能力、电力供应等方面照样有很大年夜的区别。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 澳门新葡亰平台游戏APPunconditional)

{……}

}

当法度榜样被启动时,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));

myCanva澳门新葡亰平台游戏APPs.addCommand(c3=new Command("Third",Command.SCREEN,1));

myCanvas.setComm澳门新葡亰平台游戏APPandListener(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);

}

}

}

法度榜样运行后,可以根据用户选择的不合菜单项显示不合的内容。

4. 停止语

因为受到硬件情况的限定,今朝所能够写出来的MIDlet法度榜样功能有限,用户界面很单调,不过跟着硬件情况的前进,这一问题会获得改良。

您可能还会对下面的文章感兴趣: