一、midlet suite
虽然把midlet封装进 java档案文件(jar)并不一定必要,但这是发布 j2me/midp应用程序最常见的方法。midlet套件是一个midlet中所有的文件以及作为 midlet一部分的必需的资源的集合。midlet套件由以下几部分组成:
1、附在jar文件中的 java类文件,
2、描述 jar文件内容的清单文件(manifest.mf)
3、附在 jar文件中的资源(如图象)和java应用程序描述符文件(jad)
4、应用程序管理器
应用程序管理器是一个移动设备上的软件程序,这个应用程序与具体的设备有关,并且由设备的生产商实现。它负责安装、运行以及从设备上删除 midlet,而提供错误处理支持。这个应用程序管理器同时还提供一个可选界面,允许用户启动、终止以及删除 midlet。
二、jar文件
一个商品化的、封装过应用程序通常由许多文件构成。除了 java类以外,其他文件诸如图像和应用程序数据即通常所说的资源,也可能是这个程序包的一部分。你把所有这些信息捆绑进一个整体,就称为 jar文件。
除了类和资源文件,一个 jar文件还包括描述 jar内容的清单文件。清单文件名为 manifest.mf,储存在 jar文件本身中,下面这张表中列出定义在这个清单文件中的所有可用的属性。
表 1
属性 用途
midlet-name midlet程序包的名称。例如“game pack”midlet-version midlet的版本号
midlet-vendor midlet的创建者或提供商
midlet-icon 应用程序管理器把这个图标与 midlet-name相关联,这是一个图形文件,以 png图象格式储存。
midlet-description 描述 midlet的文本midlet-info-url 可能提供更多midlet和/或供应商信息的 url
注意:下面的“midlet-x”属性可以使用多次来声明jar文件中的多个midlet。
其中x为midlet的编号。
“midlet-x”属性包括三段信息: midlet名称, 用于这个 midlet的图标(可选), 应用程序管理器将调用来加载这个 midlet的类名。
在我们的“ game pack”例子中,有两个条目: midlet-1: kof, /images/kof.png, kof.kofmidlet midlet-2: golf, /images/golf.png, golfmidletmidlet-jar-url jar文件的 urlmidlet-jar-size jar文件的大小
midlet-data-size 持久数据存储必需的最小字节数
microedition-profile midlet需要哪一种 j2me简表
microedition-configuration midlet需要哪一种 j2me配置
这些属性并不是全部都需要,可是,没有下面列出的这六个,应用程序管理器就会拒绝加载这个 jar。
midlet-name
midlet-version
midlet-vendor
midlet-
microedition-profile
microedition-configuration
这里有一个简单的清单文件的例子:
midlet-name: kof2001
midlet-version: 1.0
midlet-vendor: neorage corporation inc.
midlet-1: kof, /images/kof.png, kof.kofmidlet
microedition-profile: midp-1.0
microedition-configuration: cldc-1.0
三、java应用程序描述器文件(jad)
虽然没有必要,你仍然可以在 jar文件中包含一个 jad文件,就像清单文件一样,这个文件也包含 midlet的信息。创建一个 jad文件是基于两个原因。
1、向应用程序管理器提供信息,说明 jar文件的内容,使用这些信息,就可以判断一个 midlet是否适合运行在这个设备上。例如,通过查看属性 midlet-data-size,应用程序管理器可以确定 midlet是否需要比设备可以提供的更多的内存。
2、提供一种方法,可以把参数传送到 midlet而不必更改 jar文件,在本文的后半段我们将看一个这样的例子。
jad文件使用表 1中相同的属性。如果你需要创建你自己的属性,也可以办得到,只要使用不以 midlet为开头的属性名就可以了,下面的 showproperties.jad文件就是自定义属性的例子。和清单文件一样,有某些属性必须被定义,如果这些属性不可用的话,应用程序管理器将不加载这个 midlet,它们是:
midlet-name
midlet-version
midlet-vendor
midlet-
midlet-jar-url
midlet-jar-size
midlet-name、midlet-version和midlet-vendor的值必须与 jar中的清单文件中相同的属性的值一致。可能看出,如果在这两个文件有什么不同的话,申请管理器不也会加载这个 jar。
除了这些属性以外,如果两个文件中的另外名称相同的属性,但是属性值不相同的,将优先采取应用程序描述器文件 ( jad )属性。
midp 1.0规范没有规定 midlet-n属性是 jad文件的必需属性。可是,没有这个属性,就没有办法在设备模拟器中预览 midlet。在两个文件中包含这个属性没有问题,并且事实上,那么做可以更清楚看出这些文件是怎样关联的。因此,出于完整性考虑,这里的所有离子都将在jad文件中包含midlet-n属性。因此,出于完整性考虑,这里的全部例子都将在 jad文件中包含 midlet-n属性。
下面是一个非常简单的例子:
midlet-name: note pad
midlet-version: 1.0
midlet-vendor: abc workgroup.
midlet-jar-url: http://www.abcworkgroup.com/midlets/notepad.jar
midlet-jar-size: 26248
midlet-1: notepad, /images/notepad.png, notepad.main
四、从midlet中访问 jar/jad属性
一个midlet程序可以访问所有的定义在清单文件(在jar文件中)和jad文件的属性。返回属性信息的方法及所在的完整的程序包名是 javax.microedition.midlet.midlet.getappproperty(string name)
下面是一个例子,从jar/jad文件中读出并打印属性值。
showproperties.jar中的 manifest.mf文件的内容如下:
midlet-name: show properties
midletmidlet-version: 1.0.1midlet-vendor: abc workgroup.midlet-1: showprops, , showpropertiesmicroedition-profile: midp-1.0microedition-configuration: cldc-1.0midlet-description: a simple property list examplemidlet-data-size: 1500
showproperties.jad的内容:
midlet-name: show properties midletmidlet-version: 1.0.1midlet-vendor: abc workgroup.midlet-jar-url: file://showproperties.jarmidlet-jar-size: 1132midlet-1: showprops, , showpropertiesjadfile-version: 1.5midlet-data-size: 500
showproperties.java的源程序:
import javax.microedition.midlet.*;
public class showproperties extends midlet{ public void startapp() throws midletstatechangeexception{
system.out.println("vendor: " + getappproperty("midlet-vendor"));
system.out.println("description: " + getappproperty("midlet-description"));
system.out.println("jadfile version: " + getappproperty("jadfile-version"));
system.out.println("midlet-data-size: " + getappproperty("midlet-data-size"));
};
public void pauseapp(){ };
public void destroyapp(boolean unconditional){ };
}
下面这些是一些比较重要的地方:
manifest.mf文件作为 jar文件 showproperties.jar的一部分储存的。
jad文件showproperties.jad使用midlet-jar-url: file://showproperties.jar 引用showproperties.jar。
当你浏览这个 jad文件的时候,它使用上面那个命令找出相关联的 jar文件并读取清单文件的内容。
属性midlet-name、midlet-version和midlet-vendor 既在 jar中的清单文件中又在 jad文件中,这些属性的值都必须完全相同。
midlet-description属性来自清单文件,是可选的。
jadfile version属性不在表 1中,因此它是一个自定义属性。因为 jad文件内的属性可从midlet访问,所以你可以不用改变 jar文件而添加属性到 jad中。
属性 midlet-data-size在清单文件和 jad文件中都有,就像前面指出的那样,当两个文件中有完全相同的属性时, jad文件中的属性将使用。切记这不适用于midlet-name、midlet-version和midlet-vendor。
闽公网安备 35060202000074号