MIDlet的开发流程与部署

本文介绍MIDP应用程序的部署与管理流程,包括JAR与JAD文件的作用、MIDletSuite概念、JAM的功能,以及OTA安装、更新与删除的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件,打包成 MIDP认可的可执行文件。后缀名为jad的文件是jar文件的描述文件,jad文件详细介绍见第二节。

在仿真器或手机上安装运行

有了jar及jad文文件后,我们就可以把它们放到仿真器或手机上运行了。至于如何把它们放到手机上,根据手机的功能不同,有如下方法可以选择:

l 使用数据线,将PC与手机相连,下载文件

l 使用红外线

l 使用蓝牙

l 使用OTA空中下载(利用短信/WAP)

10.2 MIDlet Suites

10.2.1 JAM

JAM (Java Application Manager) 中文一般翻译为应用程序管理器。在有些文档中,JAM也被叫做AMS (application manager software),这两个术语所描述的概念是完全一样的。简单来讲,JAM是管理移动设备上所有J2ME应用程序的软件,负责J2ME应用程序的下载、安装、更新与删除。JAM由是移动设备本身所提供的,不同公司的实现略有不同,初级开发人员只要知道其作用就可以了。

10.2.2 MIDlet Suite

对MIDlet Suite简单理解是MIDlet程序的一个集合。MIDlet Suite包含了一个或多个MIDlet、资源文件以及JAR manifest,这些内容被打包成一个JAR包。通常情况上讲MIDlet Suite还需要一个外部的JAD描述文件。

MIDlet Suite是为了解决多个MIDlet受控访问、共享资源的问题而提出的模型。举个共享资源的例子:在前面的章节中我们已经介绍过,RMS的共享在一般情况下是以MIDlet Suite为单位进行的,即同一个MIDlet Suite中的MIDlet可以安全的共享所在MIDlet Suite中的RMS。因此,当多个MIDlet要共享RMS时,就可以将它们放进一个MIDlet Suite中。为了保证安全性,MIDlet Suite中的MIDlet、资源文件都不能独立安装、删除或更新。即MIDlet Suite必须作为一个整体包来对其操作。对于设备来讲MIDlet Suite是一个基本单位。

10.2.3 JAR manifest

前面我们介绍过,JAR文件就是经打包后的可执行文件,包括下面各种元素:

1) 实现MIDlet的类文件;

2) MIDlet中用到的任何资源文件(包括图像、声音文件等);

3) 关于JAR内容的一份JAR manifest描述。

根据MIDP规范的规定,每个MIDlet Suite的JAR文件中必须包含一个名为mainifest.mf的文件,这个文件用于描述MIDlet Suite的各种属性。

其中,必须包含以下属性:

属性名

说明

MIDlet-Name

MIDlet Suite的名称

MIDlet-Version

MIDlet Suite的版本号,格式为主版本.次版本.微版本,例如0.0.0,这也是版本号的默认值。版本号主要用于安装或升级。

MIDlet-Vendor

MIDlet Suite的提供商

如果JAD描述文件中未提供下列属性,则JAR manifest必须提供的属性:

属性名

说明

MIDlet-<n>

用来描述MIDlet Suite中所包含MIDlet的信息。第一个MIDlet就以MIDlet-1代表,第二个MIDlet就以MIDlet-2代表。(最小从1开始,不能重复,不能间隔)。属性值格式如下:

应用程序名称,图标,类名称(以逗号间隔)

其中应用程序名称由开发人员指定;图标必须是位于JAR中的PNG格式图像文件(可选);类名称为MIDlet的类文件名。

MicroEdition-Profile

MIDlet Suite所需要profile的名称及版本号,如MIDP-1.0。多个profile用空格来分隔。如果所指定的任何一个profile设备无法提供(包括版本不兼容),JAM将拒绝安装该MIDlet Suite。

MicroEdition-Configuration

MIDlet Suite所需要configuration名称及版本号,如CLDC-1.1。如果设备无法提供该configuration,那么JAM将拒绝安装该configuration。

可选以下属性:

属性名

说明

MIDlet-Description

关于此MIDlet Suite的简短说明。

MIDlet-Icon

MIDlet Suite的图标的文件名。必须位于JAR文件中,以PNG为格式。

MIDlet-Info-URL

关于MIDlet Suite更详细描述的URL地址。

MIDlet-Data-Size

MIDlet Suite所需要的持久化数据储存(persistent data,即RMS)的大小,默认值为0。

MIDlet-Permissions

执行此MIDlet Suite的主要权限(见上章)

MIDlet-Permissions-Opt

执行此MIDlet Suite的可选权限(见上章)

MIDlet-Push-<n>

与javax.microedition.io.PushRegistry有关,详见Push章。

MIDlet-Install-Notify

向此URL发送一个POST请求,报告此MIDlet Suite的安装状况,比如是全新安装还是升级安装。

MIDlet-Delete-Notify

向此URL发送一个POST请求,报告此MIDlet Suite的删除状况。

MIDlet-Delete-Confirm

当用户选择删除MIDlet Suite时,将给予用户的提示信息。

应用程序专用的任何属性

不以“MIDlet-”或“MicroEdition-”开头

注意:所有属性都可以通过调用MIDlet.getAppProperty方法取得。

范例:我们假设一个名字为MyGame的MIDlet Suite,由PPJ2me公司提供,版本为1.1.1。其中包括两个MIDlet:MyGame01,MyGame02。那么对应mainifest.mf文件可能是这样的:

mainifest.mf

MIDlet-Name: MyGame

MIDlet-Version: 1.1.1

MIDlet-Vendor: PPJ2me

MIDlet-1: MyGame01, /MyGame01.png, com.PPJ2me.MyGame01

MIDlet-2: MyGame02, /MyGame02.png, com.PPJ2me.MyGame02

MicroEdition-Profile: MIDP-2.0

MicroEdition-Configuration: CLDC-1.1

10.2.4 JAD描述文件

下面谈谈JAD描述文件,虽然某些设备上,JAM并不一定要求有JAD描述文件。尤其在MIDP1.0时,JAD描述文件似乎用处不大。但在MIDP2.0中,JAD描述文件涉及了许多安全方面问题,显得尤为重要。一般而言,在下载JAR文件前,会先下载JAD描述文件,以让设备了解该MIDlet Suite是否适合自己。避免直接下载JAR文件导致大量的成本消耗。这也是设计JAD描述文件的初衷之一。另一个目的就是提供在不更改JAR的前提下修改某些属性值的能力。

JAD描述文件为纯文本文件,文件扩展名为.jad。JAD描述文件和JAR manifest有很多相似的地方,所以部分说明请参见上一节。

如果有JAD描述文件,则JAD描述文件必须提供如下属性:

属性名

说明

MIDlet-Name

MIDlet-Version

MIDlet-Vendor

MIDlet-Jar-URL

下载该MIDlet Suite的URL地址。虽然这里可以使用绝对位置或相对位置,但还是建议用绝对位置。

MIDlet-Jar-Size

JAR文件的大小,计算单位为字节。

如果JAR manifest未提供下列属性,JAD描述文件中则必须提供:

属性名

说明

MIDlet-<n>

MicroEdition-Profile

MicroEdition-Configuration

可选以下属性:

属性名

说明

MIDlet-Description

MIDlet-Icon

MIDlet-Info-URL

MIDlet-Data-Size

MIDlet-Permissions

MIDlet-Permissions-Opt

MIDlet-Push-<n>

MIDlet-Install-Notify

MIDlet-Delete-Notify

MIDlet-Delete-Confirm

应用程序专用的任何属性

对应用程序自己的属性的说明

应用程序可以利用jad来记录自己的专用属性,只要不以“MIDlet-”或“MicroEdition-”开头。这往往非常流行。因为一旦打包成jar,就不方便对其进行修改。而jad是文本文件,方便修改。因此这些属性常用来记录和设备相关的信息或者是网络地址等。这在移植程序时,减轻了很大的工作量。所有属性都可以通过调用MIDlet.getAppProperty方法取得。

范例:我们假设一个名字为MyGame的MIDlet Suite,由PPJ2me公司提供,版本为1.1.1。其中包括两个MIDlet:MyGame01,MyGame02。那么其对应的JAD描述文件可能是这样的:

MyGame.jad

MIDlet-Name: MyGame

MIDlet-Version: 1.1.1

MIDlet-Vendor: PPJ2me

MIDlet-1: MyGame01, /MyGame01.png, com.PPJ2me.MyGame01

MIDlet-2: MyGame02, /MyGame02.png, com.PPJ2me.MyGame02

MicroEdition-Profile: MIDP-2.0

MicroEdition-Configuration: CLDC-1.1

MIDlet-Description: That our sample game.

MIDlet-Jar-URL: http://www.ppj2me.com/game/MyGame.jar

MIDlet-Jar-Size: 7378

MIDlet-Data-Size: 256

10.2.5 JAD 描述文件与JAR manifest的关系

前面介绍JAD描述文件的时候已经介绍了:为什么有了JAR manifest的同时还要有JAD描述文件存在的原因。那么这两者之间还有什么必然的联系吗?

细心的读者可能已经发现,JAD描述文件和JAR manifest中都包括了三个相同的必备属性:

属性名

l MIDlet-Name

l MIDlet-Version

l MIDlet-Vendor

出于安全性考虑,MIDP规范规定,如果JAD描述文件及JAR manifest中这三个必备属性有任何不同的话,JAM是不会安装该MIDlet Suite的。

在调用MIDlet.getAppProperty的时候:对于不可信任的MIDlet Suite,JAD描述文件的属性会覆盖JAR manifest中的属性。对于可信任的MIDlet Suite,两者必须相同。(有关于可信任及不可信任MIDlet Suite的概念,在上章中有详细说明)。

10.3 OTA(over-the-air)

10.3.1 OTA的介绍

虽然现在MIDP设备大部分都预装了几个MIDP Suite,但对于用户而言,总是希望得到最新的、最实用的MIDP Suite。这就要求MIDP设备提供下载机制。以前最可行的方法就是利用与电脑的串行电缆联接,从电脑上下载MIDP Suite。但现在最流行的方式就是OTA方式。用户可以在任何无线网络覆盖的地方下载自己喜欢的MIDP Suite,这些MIDP Suite存放在支持OTA方式的许多服务器上。

MIDP2.0中规定,OTA下载的规范是HTTP协议的。例如MIDP设备上的WWW、WAP或i-Mode都是基于HTTP协议的。因为像WAP这种协议可能不是基于IP的,在MIDP设备与服务器中间需要中转站等转接设备,为了方便我们进一步讲解,我们将忽略这些中转站的存在,而把OTA看作是MIDP设备与服务器之间的直接联系。

10.3.2 OTA安装

一个典型的OTA安装请求,包括如下步骤:

1)用户在下载MIDP Suite时,首先要给MIDP设备一个URL地址,以确定使用哪台服务器及服务器的哪个MIDlet文件。第(1)项和第(2)项可能不是必须执行的,如果用户指定的URL是一个JAR文件,则直接进行第(3)项。如果URL指定的是一个JAD描述文件,则MIDP设备向服务器发出下载JAD描述文件的请求。

2)服务将返回所请求的JAD描述文件。在成功收到JAD描述文件后,MIDP设备将检验JAD描述的安全及规格,检查设备是否能正确运行该MIDP Suite。这种做法保证了在试图传输较大的JAR文件前,先确定设备拥有运行MIDP Suite所需要的适当能力及资源。

3)如果用户所指定的URL指向了一个JAR文件,或第(2)项检查成功,则MIDP设备将向服务发出下载JAR文件的请求。

4)服务器将返回所请求的JAR文件。下载成功后,MIDP Suite将被安装。

5)在可能的情况下,MIDP设备向服务发送一条安装状态的通知,通知该MIDP Suite是否安装成功。即使在MIDP设备无法向服务器发出通知的情况下,该MIDP Suite仍然可以正常运行。

10.3.3 更新MIDP Suite

当某个MIDP Suite产生更高的版本时,用户往往会尝试更新。更新是不会被自动运行的,需要用户再重复一遍上节所介绍的安装步骤,值得注意的是:不管第二次下载的版本号是否与设备上已有MIDP Suite版本号相同,甚至是比原有版本更低,设备都会为将其视为MIDP Suite的升级。但不论什么情况,JAM都会通知用户要安装的MIDP Suite是比现有的高、相同或低,然后经用户确认后继续。具体还要参考JAM的实现。

在更新的过程中,原有MIDP Suite的RMS存储记录是否被更新后的MIDP Suite所用,按照如下规则进行:

1) 如果新MIDP Suite的加密签名(详见安全章节)与原来的相同,则RMS存储记录将被保留给新MIDP Suite所用。

2) 如果新MIDP Suite的JAR文件manifest中URL、主机和路径与原有的相同,则RMS存储记录将被保留给新MIDP Suite所用。

3) 如果新MIDP Suite的JAD文件中URL、主机和路径与原有的相同,则RMS存储记录将被保留给新MIDP Suite所用。

4) 如果上述条件没有一条满足,则JAM将向用户询问,RMS是否为新MIDP Suite所用。

10.3.4 MIDP Suite的删除

如果用户从设备上删除MIDP Suite,用户一般情况下会被JAM询问是否确定删除。在此同时,如果JAR中manifest或JAD文件中包含了MIDlet-Delete-Confirm属性,则该属性所定义的内容,也将同时被包括进删除的提示信息内。因此,在该属性内,应同时向用户提示诸如MIDP Suite中所有MIDlet及RMS都将被删除的信息。

10.3.5 MIDP Suite安装和删除报告

在MIDlet Suite安装和删除时,MIDlet Suite会尝试向当初下载该MIDlet Suite的服务器进行报告。这就会用到JAR中manifest或JAD描述文件的MIDlet-Install-Notify和MIDlet-Delete-Notify属性。由于这两个属性是可选的,因此,MIDlet Suite正确向服务器发送状况也不是必须的。也就是说,不论安装或删除状况是否正确向服务器报送,该MIDlet Suite的安装及删除也会顺利进行。

安装:在MIDlet Suite安装时,该状态报告发往MIDlet-Install-Notify中所指定的URL(注意:不论是安装不删除状况的发送,其发送的都是POST请求,该请求的第一行将包括一个有效的代码,详见下表)。如果状况报告无法正确向服务器报告,在该设备的网络连通时,MIDlet Suite将再次向服务器报告。

删除:在MIDlet Suite删除时,该状态报告发往MIDlet-Delete-Notify中所指定的URL。删除状况不会被立即报告,而是在下次发送安装状况时向服务器报告。如果状况报告无法正确向服务器报告,在该设备的网络连通时,MIDlet Suite将再次向服务器报告。

POST代码

代表消息

900

成功

901

内存不足

902

用户取消

903

服务丢失

904

JAR大小不匹配

905

属性不匹配

906

无效的JAD

907

无效的JAR

908

不兼容的configuration或profile

909

验证失败

910

授权失败

911

Push注册失败

912

删除通知


本教程首先介绍了 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、付费专栏及课程。

余额充值