J2ME学习笔记(三)

笔记

从今天开始我想我会有很长一段时间不会涉及真正的实际开发,这一段时间主要集中在基础的学习之

上。呵呵,不会走,我哪敢跑那?不过主要是因为暂时不用赶着给兄弟作东西,所以想好好学习一下。不

过代码肯定还是会写一些的。毕竟,多写代码才能更快的学习^_^

呵呵,一步一步开始手机开发之旅途了。不知道我能不能坚持把这一块学完,因为公司工作压力也很

大。平时基本上没有休息,周末也还有一堆事情要做。所以也是很苦闷的一个方面。呵呵。尽力好了。一

直作web也不是办法,呵呵,多学一点说不定以后用得着。毕竟手持设备是未来的一个发展趋势。

我学习的时候就是用的sun官方的MIDP实例。各位可以自己去下。我选择的是MIDP_2.0 的参考源码。

写一个MIDlet能在实际的设备或者模拟器上执行需要如下几个步骤:
1、编写程序代码
2、编译
3、预先审核(Preverify)这一步很重要,因为很多类PC上安装的J2SE支持,但是实际的J2ME并不支

持。
4、编写描叙文档
5、合成JAR文件
6、测试排错
7、在模拟器或者实体机器上运行。

ok

我来开始编写一个简单的例子,从代码编写开始一直完成最终的这7个步骤。(这个例子是依托与MIDP_2.

0中某些已经定义好的接口来进行的,所以我将此程序放在我所解压的MIDP根目录:f:\midp下。)

第一步,编写代码:

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class HelloMIDlet extends MIDlet implements CommandListener{
private Command exitCommand;
private Display display;
public HelloMIDlet(){
display = Display.getDisplay(this);
exitCommand = new Command("Exit", Command.SCREEN, 2);
}
public void startApp(){
TextBox t = new TextBox("Hello MIDlet", "Test string", 256, 0);
t.addCommand(exitCommand);
t.setCommandListener(this);
display.setCurrent(t);
}
public void pauseApp(){}
public void destroyApp(boolean unconditional){}
public void commandAction(Command c, Displayable s){
if (c == exitCommand){
destroyApp(false);
notifyDestroyed();
}
}
}

第二步:编译
我在f:\midp下建立了一个midjavac.bat文件专门用来编译

javac -g:none -classpath F:\midp\classes;. -bootclasspath F:\midp\classes %1

-bootclasspath这个参数我也是第一次用,应该是控制编译第时候控制只使用所制定目录下第基类吧。如

果不使用此参数那么有可能你写的程序可以PC上运行,但是不能在支持MIDP的手持设备上运行。

然后在dos下转到f:\midp下运行 midjavac HelloMIDlet

第三步:预先审核
同样,我在f:\midp下建立了midver.bat文件用来进行预审核。

F:\midp\bin\preverify -classpath F:\midp\classes;. -d %1 %2

在dos下转到midp文件夹,运行 midver test HelloMIDlet
如果预审核通过那么就会在f:\midp下建立一个文件夹test,将预审核通过第类放入其中。

这个时候其实我们写的程序就可以在模拟器上运行了。

第四步:编写描叙文档
文件名:HelloMIDlet.jar
MIDlet-Name: HelloWorld
MIDlet-Version: 1.0.0
MIDlet-Vendor: Sun Microsystems, Inc.
MIDlet-Description: Sample Hello World MIDlet
MIDlet-Info-URL: http://java.sun.com/j2me/
MIDlet-Jar-URL: http://127.0.0.1/HelloMIDlet.jar
MIDlet-Jar-Size: 1020
MicroEdition-Profile: MIDP-1.0
MicroEdition-Configuration: CLDC-1.0
MIDlet-1: HelloWorld,, HelloMIDlet

第五步:合成jar文件
编制一个midjar.bat 文件
jar -cfm %1 %2 -C .\%3 .
运行:midjar HelloMIDlet.jar HelloMIDlet.jad HelloMidlet

第六步:测试排错
写一个midjartest.bat文件
F:\midp\bin\midp -classpath F:\midp\classes;%1 -descriptor %2

在dos下运行:midjartest HelloMIDlet.jar HelloMidlet.jad
呵呵,应该看到运行情况了吧?!
如果你发现ALERT: Error verifying class HelloMIDlet
这么一个错误那就是你的程序没有经过预审核哦^_^

第七步:呵呵,如果有手持设备就自己传上去试试看看咯。如果没有那就只有在模拟器上运行了。。对了

,如果在模拟器上运行第话应该不用合成jar文件。

呵呵,其实这些东西都很基础,我完全可以装一个nokia或者moto的模拟器,然后只用在jb上装上mobiles

et,然后画一个插件就可以搞定。我之所以要用这么复杂(汗ing。。自己写的时候都有些不耐烦)的步

骤来完成如此简单的步骤,其实就是为了更好的理解手机程序的完成原理而已。

时间: 2024-09-29 20:45:25

J2ME学习笔记(三)的相关文章

kvm虚拟化学习笔记(三)之windows kvm虚拟机安装

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1290191 KVM虚拟化学习笔记系列文章列表 ---------------------------------------- kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51cto.com/703525/1288795 kvm虚拟化学习笔记(二)之linux kvm虚拟机安装 h

VSTO学习笔记(三) 开发Office 2010 64位COM加载项

原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(Automation Executables) 2.Office加载项(COM or Excel Add-In) 3.Office文档代码或模板(Code Behind an Office Document or Template) 4.Office 智能标签(Smart Tags) 本次我们将学习使

Bootstrap3学习笔记(三)之表格_javascript技巧

在上篇文章给大家介绍了 BootStrap3学习笔记(一)之网格系统       Bootstrap3学习笔记(二)之排版 只需要在table标签上使用.table类,就可以使用bootstrap默认的表格样式 如果需要行背景有交替变化,可以这样设定: 复制代码 代码如下: <table class="table table-striped"> 如果需要边框,可以这样设定: 复制代码 代码如下: <table class="table table-borde

JavaScript学习笔记(三):JavaScript也有入口Main函数_javascript技巧

在C和Java中,都有一个程序的入口函数或方法,即main函数或main方法.而在JavaScript中,程序是从JS源文件的头部开始运行的.但是某种意义上,我们仍然可以虚构出一个main函数来作为程序的起点,这样一来不仅可以跟其他语言统一了,而且说不定你会对JS有更深的理解. 1. 实际的入口 当把一个JavaScript文件交给JS引擎执行时,JS引擎就是从上到下逐条执行每条语句的,直到执行完所有代码. 2. 作用域链.全局作用域和全局对象 我们知道,JS中的每个函数在执行时都会产生一个新的

DB2 UDB V8.1管理学习笔记(三)_DB2

正在看的db2教程是:DB2 UDB V8.1管理学习笔记(三).强制断开已有连接,停止实例并删除.  $ db2idrop -f instance_name 用于在UNIX下迁移实例. $ db2imigr instance_name 更新实例,用于实例获得一些新的产品选项或修订包的访问权. $ db2iupdt instance_name 获取当前所处的实例. $ db2 get instance 当更新实例级别或数据库级别的参数后,有些可以立即生效,有些需要重新启动实例才可生效.immed

J2ME学习笔记(八)

笔记 今天买了2.5磅咖啡豆,星巴克的.有点点贵,用了599大洋,呵呵,偶尔奢侈一下也不为过嘛.刚刚磨了一杯咖啡,点上烟,呵呵,继续开始j2me的学习历程.虽说今天星期六,可是估计今天看不了多少,明天要去公司加班,所以今天还是要早点休息...想想前几个星期,soho的时候每天晚上就是我的工作时间,白天嘛..嘿嘿,睡觉...那真是幸福呀...好日子不再咯... 呵呵,TextBox,好像看名字就知道干什么的了,HTML里面的输入框.呵呵,感觉应该差不多.写一个(和TextBox有相同使用方法的还有

Paint.Net学习笔记——三、窗体(下)

近1个月没有更新了,不能再懒了,继续更新PDN的学习笔记!本节将说明PDN中窗体的继承关系,实 现过程等. 如上图所示,在PDN中,所有窗体都继承自PdnBaseForm类,该类继承自Form类与ISnapManagerHost接 口,该接口定义了SnapManager的get方法,SnapManager是管理界面窗口"粘靠"效果的,该实现方法之 后文章中讲述. 现在快速地过一下各个窗体的作用及特点. BaseForm: 所有PDN里窗体的基类,主要提供常用窗体方法及注册.卸载热键.

Promise学习笔记(三):源码core.js解析(上)

源码阅读阶段 先理解Promise根本吧,想快点理解的话可以直接跳到下个标题.这部分根据理解将持续修改. Promise(fn) function noop() {}  /*  空函数,用于判断传入Promise构造器的函数是否为空函数,如果为空函数构造一个promise对象并初始化状态为pending,终值null,回调状态0和队列null.  */  var LAST_ERROR = null;//记录Promise内部最后的一次错误  var IS_ERROR = {}; //空对象,标识

cmake 学习笔记(三)

转自:http://blog.csdn.net/dbzhang800/article/details/6329314 接前面的 Cmake学习笔记(一) 与 Cmake学习笔记(二) 继续学习 cmake 的使用. 学习一下cmake的 finder. finder是神马东西? 当编译一个需要使用第三方库的软件时,我们需要知道: 去哪儿找头文件 .h 对比GCC的 -I 参数 去哪儿找库文件 (.so/.dll/.lib/.dylib/...) 对比GCC的 -L 参数 需要链接的库文件的名字

Caliburn.Micro学习笔记(三)----事件聚合IEventAggregator和 Ihandle&lt;T&gt;

Caliburn.Micro学习笔记目录 今天 说一下Caliburn.Micro的IEventAggregator和IHandle<T>分成两篇去讲这一篇写一个简单的例子 看一它的的实现和源码 下一篇用它们做一个多语言的demo 这两个是事件的订阅和广播,很强大,但用的时候要小心发生不必要的冲突. 先看一下它的实现思想 在Caliburn.Micro里EventAggregator要以单例的形式出现这样可以做到对广播做到统一的管理 对象实现IHand<T>接口后通过EventAg