[转载]J2ME与MIDP开发(4)

J2ME与MIDP开发(4)
J2ME与MIDP开发


J2ME与MIDP开发(4)


 第二节 封装MIDlet

  下面我想谈谈封装MIDlet的相关知识,即介绍一下 MIDlet套件以及Java档案和应用程序描述器文件,为了说明方便,我们还将写一个MIDlet程序并利用上面介绍的那个MIDlet程序,并创建JAR文件和JAD文件来封装这些程序。我们还要看着如何使用 Java程序包改变我们的开发过程。最后你将学习如何从一个Web服务器上访问 MIDlet。

  MIDlet套件

  虽然把MIDlet封装进 Java档案文件(JAR)并不一定必要,但这是发布 J2ME/MIDP应用程序最常见的方法。MIDlet套件是一个MIDlet中所有的文件以及作为 MIDlet一部分的必需的资源的集合。MIDlet套件由以下几部分组成:

  1、附在JAR文件中的 Java类文件,

  2、描述 JAR文件内容的清单文件

  3、附在 JAR文件中的资源(如图象)和Java应用程序描述符文件(JAD)

  4、应用程序管理器

  应用程序管理器是一个移动设备上的软件程序,这个应用程序与具体的设备有关,并且由设备的生产商实现。它负责安装、运行以及从设备上删除 MIDlet,而提供错误处理支持。这个应用程序管理器同时还提供一个可选界面,允许用户启动、终止以及删除 MIDlet。

  Java档案文件

  一个商品化的、封装过应用程序通常由许多文件构成。除了 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- 这个属性包括三段信息: ??MIDlet名称 ??用于这个 MIDlet的图标(可选) ??应用程序管理器将调用来加载这个 MIDlet的类名 在我们的“ Game Pack”例子中,有两个条目: MIDlet-1: KOF, /images/kof.png, kof.kofMIDlet MIDlet-2: Golf, /images/golf.png, golfMIDlet
MIDlet-Jar-URL JAR文件的 URL
MIDlet-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 MIDlet
MIDlet-Version: 1.0.1
MIDlet-Vendor: ABC WorkGroup.
MIDlet-1: ShowProps, , showProperties
MicroEdition-Profile: MIDP-1.0
MicroEdition-Configuration: CLDC-1.0
MIDlet-Description: A simple property list example
MIDlet-Data-Size: 1500

  showProperties.jad的内容:
MIDlet-Name: Show Properties MIDlet
MIDlet-Version: 1.0.1
MIDlet-Vendor: ABC WorkGroup.
MIDlet-Jar-URL: file://showProperties.jar
MIDlet-Jar-Size: 1132
MIDlet-1: ShowProps, , showProperties
JadFile-Version: 1.5
MIDlet-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。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-131710/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/374079/viewspace-131710/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本教程首先介绍了 j2me 开发体系,然后深入各个MIDP2.0 API,最后是搭建平台的知识。 第一章 “J2ME 技术概述”让你在学习J2ME 以前知道什么是J2ME。本章介绍了J2ME 平 台的体系结构和MIDlet 生命周期的概念。为以后的内容打下良好的基础。 第二章“CLDC 简介”介绍了MIDP 的基础Java Community Process(JCP)公布的CLDC1.0 规范(即JSR30)。有了这些知识你就可以顺利的从j2se 的基础API 过渡到MIDP 的基础API 上了。 第三章“MIDP 高级UI 的使用”介绍了MIDP 的可移植UI API,我们称之为高级UI。这 样您的应用就可以栩栩如生了。 第四章“MIDP 低级UI 的使用” 介绍了MIDP 的不可移植UI API,我们称之为低级UI。 利用他你可以更加自由的绘画你的UI。你将了解到关于事件处理的很多知识。 第五章“MIDP 的持久化解决方案— RMS” 为我们讲解了数据持久化机制——记录管理 系统(Record Management System RMS)。这一特别的小型数据库使得MIDP 的数据保存变得很特 别。 第六章“GAME API” 介绍了 MIDP 2.0 相对于1.0 来说,最大的变化——新添加的用于支 持游戏的API,它们被放在javax.microedition.lcdui.game 包中。游戏API 包提供了一系列针对无 线设备的游戏开发类。你可以开发你的游戏了。COOL! 第七章“开发无线网络应用程序” 让我们学习如何开发令人激动的联网应用。无线网络在 当今的技术下与有线网络相比它的带宽更小、延迟更大、连接的稳定性更差。这要求我们在开 发无线联网应用程序时,和以往有很大不同。 第八章“MIDP 2.0 安全体系结构” 将主要介绍MIDP 的安全体系模型,并结合一个具体的 实例来讲述MIDP2.0 安全模型的主要概念。 第九章“MIDP 2.0 Push 技术”介绍了如何通过异步方式将信息传送给设备并自动启动 J2ME 中文教程 by www.j2medev.com MIDlet 程序的机制。 第十章“MIDlet 的开发流程与部署”介绍了如何真正完成你的程序并打包发往设备运行。 第十一章“搭建开发平台—WTK”主要讲述J2ME 新手最常使用的开发工具Wireless Toolkit (WTK)。从WTK 的安装、到MIDlet 项目的创建、以及最后的打包发布,一步步带领读者进 入MIDlet 的开发世界! 第十二章“搭建开发平台—Eclipse”讲述了如何利用EclipseME 作为Eclipse 一个插件,帮 助开发开发J2ME 应用程序。 第十三章“搭建开发平台—JBuilder”介绍了如何利用久负盛名的JBuilder 作为开发工具来 开发J2ME 应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值