作者:tct66 文章来源:http://www.j2medev.com/Article/ShowArticle.asp?ArticleID=269
在本章之前所介绍的都是怎么样编写J2ME的源文件(即*.java文件)。因为j2me不同于j2se程序的开发流程,在编写好java源文件后,我们还要继续进行如下工作:
l 编译
l 混淆(可选)
l 预审核
l 打包
打包后,将获得了一个jar文件。接下来为jar文件编写一个以jad为后缀的描述文件。最后通过各种途径将jar文件、jad描述文件传输到移动设备上运行即可。
完整的MIDP手机程序开发流程如下表(其中混淆为可选):
流程 |
工具 |
输入 |
输出 |
编译 |
javac.exe编译 |
源文件(*.java) |
未混淆的类文件(*.class) |
混淆 |
第三方提供的工具 |
未混淆的类文件(*.class) |
混淆后的类文件(*.class) |
预审 |
preverify.exe预审核 |
混淆后的类文件(*.class) |
经过预先审核的类文件(*.class) |
包 |
jar.exe打包 |
经过预先审核的类文件(*.class) |
包文件(*.jar) |
编写描述文件 |
文本编辑工具 |
|
描述文件(*.jad) |
安装运行 |
传输工具
(IR/BT/数据线/OTA)
|
包文件(*.jar)和
描述文件(*.jad)
|
在仿真器或手机上正式运行 |
下面将会介绍每个步骤。当利用集成开发环境(诸如JBuilder、NetBeans、Sun ONE Studio、Eclipse等)时,这些工具不仅可以很快的帮我们建立起代码的主干,而且可以帮助我们自动的完成上面的大部份工作(关于集成开发环境的利用见后面的章节)。在利用IDE开发之前,开发者有必要了解其中每一步的原理。
编译
编译就是将我们所编制的*.java 文文件,编译成为二进制的*.class文件(计算机只认识二进制!)。javac.exe是由Sun公司编写的一个编译器,它可以把*.java文件编译成为*.class文件。注意:如果一个*.java文件中定义了三个类,它就将被编译成三个*.class文件。
混淆(可选)
由于class文件格式透明的缘故,java文件很容易被反汇编。因此,如果你不希望别人掌握你的源代码的话,你一定要进行混淆(obfuscate)。所谓混淆,就是利用工具,将方法名、类名改成没有实际意义的特定的字符及代号,增加阅读的难度。这样就充分的保护了我们自己的知识产权。而且混淆还有个意想不到的好处,就是减少程序的大小。这是由于混淆器将我们设定的方法名、类名变成没有意义的短字符或代码,无形中减少了程序的大小。对于手机程序设计来讲尤为重要,每K的减少都意味着可以获得更多的空间。混淆器都是第三方软件开发商提供的,许多都是开源的,可以免费使用。常见的混淆器见下表:
预审核
在完成编译后,我们必须要对*.class文件进行预审核,这和传统的Java程序(Applet、Servlet)是不同的。因为class在传输过程中容易损坏或是被篡改,传统的Java程序在运行前,都在本地机器上对.class进行Byte Code的审核。而对于手机这样的资源有限设备而言,在手机上进行大量的此类的审核是极为浪费资源(如占用CPU的时间、消耗电力等)。因此,我们必须先在PC机上使用preverify.exe进行一部份预选审核工作。这样,在手机上进行的审核工作就大量减少了。
打包与编写描述文件
MIDP可执行文件后缀名为jar。利用jar file.class就能将通过预审核的*.class文件,打包成 MIDP认可的可执行文件。后缀名为jad的文件是jar文件的描述文件,jad文件详细介绍见第二节。
在仿真器或手机上安装运行
有了jar及jad文文件后,我们就可以把它们放到仿真器或手机上运行了。至于如何把它们放到手机上,根据手机的功能不同,有如下方法可以选择:
l 使用数据线,将PC与手机相连,下载文件
l 使用红外线
l 使用蓝牙
l 使用OTA空中下载(利用短信/WAP)
JAM (Java Application Manager) 中文一般翻译为应用程序管理器。在有些文档中,JAM也被叫做AMS (application manager software),这两个术语所描述的概念是完全一样的。简单来讲,JAM是管理移动设备上所有J2ME应用程序的软件,负责J2ME应用程序的下载、安装、更新与删除。JAM由是移动设备本身所提供的,不同公司的实现略有不同,初级开发人员只要知道其作用就可以了。
对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是一个基本单位。
前面我们介绍过,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
下面谈谈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 |
line-heigh
分享到:
Global site tag (gtag.js) - Google Analytics
|
相关推荐
J2ME无线开发之MIDlet的部署及push自启动j2me程序J2ME无线开发之MIDlet的部署及push自启动j2me程序J2ME无线开发之MIDlet的部署及push自启动j2me程序
第十章“MIDlet 的开发流程与部署”介绍了如何真正完成你的程序并打包发往设备运行。 第十一章“搭建开发平台—WTK”主要讲述J2ME 新手最常使用的开发工具Wireless Toolkit (WTK)。从WTK 的安装、到MIDlet 项目的...
J2me中文教程.pdf J2me中文教程.pdf
j2me入门教程j2me入门教程j2me入门教程j2me入门教程j2me入门教程
J2ME中文教程 本教程由J2ME开发网(www.j2medev.com)的网友集体创作。任何人未经J2ME开发网的书 面许可,不得将本教程用于商业目的。本教程受到版权法的保护。盗用、截取教程中的文字、 图形、表格都将视为非法。如...
J2ME中文教程J2ME开发下载,J2ME中文教程J2ME开发下载PDF
J2ME开发教程及笔记
J2ME开发 J2ME开发 J2ME开发 J2ME开发
j2me 开发教程全集 提供一些常用的初级代码 注意事项
J2ME中文教程 不错的学习资料,刚开始学习的可以参考下!
第十章“MIDlet的开发流程与部署”介绍了如何真正完成你的程序并打包发往设备运行。 第十一章“搭建开发平台—WTK”主要讲述J2ME新手最常使用的开发工具Wireless Toolkit(WTK)。从WTK的安装、到MIDlet项目的...
J2ME中文教程FromIBM手机开发电子书
j2me教程j2me教程j2me教程j2me教程
j2me开发教程全集.rar
J2ME培训教程,以前学JJ2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程2ME发的一个PPT,内容还可以,需要的朋友不要客气J2ME...
J2ME中文教程 适合初学者学习的好书 很好很强大!多多下载 多多学习 共同进步!
J2ME技术概述,CLDC简介,MIDP的使用,GAME API,等技术
J2ME中文教程 J2ME中文教程