Top
首页 > 老文章 > 正文

Jakarta Commons中隐藏的宝贝-第一部分

本文主要谈一下生成MIDlet的相关知识,即介绍一下MIDlet套件以及Jar和Jad的知识,为了说明方便,我们还将写一个MIDlet程序并利用上面介绍的那个MIDlet程序
发布时间:2005-11-21 17:44        来源:        作者:Timothy M. O'Brien
下文主要谈一下生成MIDlet的相关知识,即介绍一下MIDlet套件以及Jar和Jad的知识,为了说明方便,我们还将写一个MIDlet程序并利用上面介绍的那个MIDlet程序,并创建JAR文件和JAD文件来封装这些程序。我们还要看着如何使用 Java程序包改变我们的开发过程。 一、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
   这些属性并不是全部都需要,可是,没有下面列出的这六个,应用程序管理器就会拒绝加载这个 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的源程序:
  下面这些是一些比较重要的地方: 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。 (T117)
加载更多

专题访谈

合作站点
stat