J2ME基本知识:
1) 什么是J2ME?
当JAVA平台发展到JAVA 2的版本以后,为了适应不同级别计算机硬件的开发需要,JAVA平台形成了三个主要分支:
J2SE :Java 2, Standard Edition,是为台式机而设计的,主要运行在Linux, Solaris, 或Microsoft Windows等操作系统上。
J2EE:Java 2, Enterprise Edition,则是一个适合分布式的、多用户、企业级应用系统运转的平台。它以J2SE为基础,增加了处理服务器端计算的功能,用于开发电子商务或企业web应用。
J2ME:Java 2, Micro Edition,和J2SE不同,它既不算是一个软件也不能算是一则规范。准确地说,J2ME是为了支持象PDA(personal digital assistant)、手机等小型的嵌入式或移动设备而推出的一系列的技术和规范的总称。它借用了J2SE类库的一部分,使用了更少的API,而且其J2ME采用的JAVA虚拟机(JVM)比J2SE的JVM也要小得多。
遵循「对於各种不同的装置而造出一个单一的开发系统是没有意义的事」这个基本原则。J2ME 先将所有的嵌入式装置大体上区分为两种 :一种是运算功能有限、电力供应也有限的嵌入式装置(比方说PDA 、手机);另外一种则是运算能力相对较佳、并在
电力供应上相对比较充足的嵌入式装置 (比方说冷气机、电冰箱、电视机顶盒 (set-top box))。因为这两种型态的嵌入式装置,所以Java 引入了一个叫做Configuration 的概念,然後把上述运算功能有限、电力有限的嵌入式装置定义在Connected Limited Device Configuration(CLDC)规格之中;而另外一种装置则规范为 Connected Device Configuration(CDC)规格。也就是说, J2ME 先把所有的嵌入式装置利用Configuration 的概念区隔成两种抽象的型态。
CDC 的应用设备的典型特征为具有一个32位的处理器,超过2MB的存储容器,可连续供电。
CLDC应用设备的典型特征为具有一个16位或32位的处理器,和160KB到512KB的总内存,通常以电池供电,并联入某类网络中。
CDC和CLDC仅仅是对各类设备中最具共性的配置提供了基本的功能集合。但是,实际应用中,不同的设备之前存在着很大的差异。因此,我们在Configuration的基础上,又提出了Profile的概念。Profile规定的内容,是针对某一类设备所制订的规范和API,有了Profile以后,才真正有了可以建立一个可运行J2ME应用程序的完整环境。
移动信息设备描述(Mobile Information Device Profile或MIDP)以CLDC为基础,它是第一个制订完成的Profile,为那些运行在象移动电话和登录级PDA这样的设备上的应用提供完整的J2ME运行时环境。
MIDP致力于解决用户界面,持久存储,联网和应用程序生命周期这样的问题。
MIDLet指那些使用由MIDP和CLDC规范定义的API编写的应用程序。
2) MIDP 2.0的新特性
MIDP出现最早,也发展最快,在此我们也仅讨论J2ME MIDP应用程序的开发。2002年10月,JCP(Java Community Process,参见http://www.jcp.org)推出了MIDP2.0的规范,和MIDP1.0相比,它大大加强了对用户界面、多媒体和游戏功能、网络连接功能的支持,同时将OTA应用程序下载包括到规范中来,另外还为无线信息设备提供了端到端(end-to-end)的安全机制。
为了支持对声音的处理(例如播放WAV文件),MIDP2.0中增加了一个可选包ABB(Audio Building Block)。在以前,ABB只包含在Mobile Media API(MMAPI)中,现在将其纳入到MIDP中来,开发者就可以不用依赖于MMAPI了。当然,如果使用了MMAPI,可以为移动设备开发更多的功能,比如可以在PDA上播放视频流等等。
对J2ME游戏开发的支持可能是开发者和用户都企盼已久的,MIDP2.0提供的游戏API使得游戏本身可以更充分的利用设备自身的图形处理功能。它的出现无疑大大简化了J2ME游戏的开发工作,同时也使得开发者可以更多地控制程序的图形处理性能。
在通信方面,MIDP1.0仅支持HTTP,MIDP2.0则增加了对HTTPS、报文、socket通信以及串口通信的支持。另外,MIDP2.0还支持服务器Push体系架构,这样,你的手机能够收到来自服务器的报警、消息或者广播,根据要求启动手机上的应用程序进行操作。
支持Over-the-air (OTA) Provisioning是MIDP2.0的一个重要的新特点,它使得用户能够动态地部署和更新移动设备上的应用程序。新版的MIDP规范中规定了如何在移动设备上发现、安装、更新和删除MIDlet套件;同时,提供应用程序下载的服务提供商还能够判断该MIDlet套件是否能够运行在申请下载的设备上,并且从设备上获取安装、更新和删除的信息。MIDP OTA provisioning模型为移动服务提供商提供了单一、标准的部署MIDP应用程序的途径。该模型已经被众多技术领先的移动设备制造商和服务提供商所采纳。
自从人类步入网络时代以后,网络安全始终是很一个关键的问题。MIDP2.0增加了强大的“端到端”的安全模型。一方面,MIDP2.0支持HTTPS,可以对传输的数据进行加密;另一方面,MIDP2.0采用了和MIDP1.0不同的安全机制,采用安全域来确保未经授权的MIDlet套件无法访问受权限控制的数据、应用程序以及其他网络和设备资源。
J2ME开发工具
1) J2MEWTK(J2ME wireless toolkit J2ME 无线工具包):由sun公司提供,目前最新版本为J2ME wireless toolkit 2.2 Beta版,该工具仅提供MIDlet项目的运行环境,不包括开发环境。
J2ME wireless toolkit2.1 下载:http://java.sun.com/products/j2mewtoolkit/download-2_1.html
J2ME wireless toolkit2.2 beta下载:
http://java.sun.com/products/j2mewtoolkit/download-2_2.html
(安装J2MEWTK需要先安装J2SE SDK1.4.2及其以上版本,下载时需先注册一个账号)
2) Sun Java Studio Mobility 6:是sun公司提供的一个J2ME 集成开发工具,使用该工具可方便的开发,调试 MIDlet程序。
下载:http://developers.sun.com/prodtech/javatools/jsmobility/downloads/index.html
3) Borland Jbuilder
搭建这个平台,我们必需要安装:JBUILDER 7 或 JBUILDER 8 ,BORLAND 的 MOBILESET 3.1。
4) Java communith Edition 集成开发环境:Forte
(本人没有找到该工具的下载地址)
本人学习J2ME主要使用的是前两个sun公司提供的工具,其他的都没有涉及。
如果开发的MIDlet程序需要和J2EE关联则可能还需要安装 j2SDKEE1.3.1或其更高版本,或TOMCAT,WEBLOGIC,Apache Web等服务器工具。
j2SDKEE1.3.1下载:http://java.sun.com/j2ee/download.html
tomcat 下载:http://jakarta.apache.org/site/binindex.cgi
J2ME编程入门:
1)在移动设备上执行的MIDLet程序的都必须继承于MIDlet类,继承了该类的用户类是主程序,可在该程序可调用其他用户类。在Sun Java Studio Mobility 6中,新建一个MIDlet类时会自动生成如下代码:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Test extends MIDlet
{
public void startApp() { }
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }
}
3) 一般的MIDlet程序还需要相应按键命令操作,这是还需要继承 CommandListener接口,继承了该接口后,就必须在类中实现public void commandAction(Command c, Displayable s)方法。下面给出一个一般的通用结构:
public class TestMIDlet extends MIDlet implements CommandListener {
private Display mDisplay;
private Form mMainForm;
private StringItem mMessageItem;
private Command mExitCommand, mConnectCommand;
public TestMIDlet() {
mMainForm = new Form("HitMIDlet");
mMessageItem = new StringItem(null, "");
mExitCommand = new Command("Exit", Command.EXIT, 0);
mConnectCommand = new Command("Connect",Command.SCREEN, 0);
mMainForm.append(mMessageItem);
mMainForm.addCommand(mExitCommand);
mMainForm.addCommand(mConnectCommand);
mMainForm.setCommandListener(this);
}
public void startApp() {
mDisplay = Display.getDisplay(this);
mDisplay.setCurrent(mMainForm);
}
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }
public void commandAction(Command c, Displayable s) {
if (c == mExitCommand)
notifyDestroyed();
else if (c == mConnectCommand) {
.. .. .. ..
}
}
Display对象指手机的显示屏,Form对象是显示的窗口,Command对象为命令对象。
startApp()方法是程序的入口。
参见实例http://developers.sun.com/techtopics/mobility/midp/articles/tutorial2/
该实例实现了MIDlet程序和web服务器的servlet连接的功能。
4) 游戏编程
MIDP 2.0包括游戏api, 该api大大简化了2D游戏的编写,位于javax.microedition.lcdui.game包内。该包中包括5个类 :GameCanvas ,Layer ,LayerManager ,Sprite ,TiledLayer,这5个类提供了2个重要的特性:
GameCanvas类提供了在一个游戏循环体内实现重画屏幕和响应输入的功能。
Layer类使得创建复杂画面更高效。
具体使用方法可参看实例:http://developers.sun.com/techtopics/mobility/midp/articles/game/
5) 在上面的两个实例中提供了两种创建线程的方法,关于线程的使用可参看其api ,在java.lang包内。
6) 实例Java Smart Ticket Sample Application提供了j2EE和j2ME的整合,比较复杂但也代表了一个很大应用方向。但还需要很强的j2EE知识。该实例的说明和源代码可在此下载:http://java.sun.com/blueprints/code/index.html
参考文献
1) sun公司提供的网站资料:http://java.sun.com/j2me/index.jsp
2) J2ME的现状与发展:http://dev.csdn.net/develop/article/18/18870.shtm
相关推荐
J2ME高级用户界面的学习代码,在ktoolbar下运行,是学习J2ME的好助手.这里包括 List,MIDlet,MultiThread,NewThread,Spacer,StringItemApperance
在这个“J2ME_study_java_图像处理_”的资料包中,我们关注的是在J2ME环境中进行文本和图像处理的编程实践。 在J2ME中,图像处理主要通过` javax.microedition.lcdui.Image`类来实现。这个类提供了创建、加载和操作...
文件名"Study"可能包含的是学习J2ME动画编程的相关资料,比如源代码示例、教程文档或者是一些实用技巧。通过学习这些资料,开发者可以深入理解如何在J2ME环境中创建复杂的动画效果,包括物体的移动、旋转、淡入淡出...
* 修改例 1-1 程序,使其输出的字符串为“I’d like to study Java !”,并在 DOS 命令行环境下编译与运行该程序。 七、Java 基础知识点总结 * 机器语言程序、高级语言程序以及可表示成 Java 字节码的程序之间的...
- 常量:合法的常量包括整数(如4)、浮点数(如6.5、5.6E03)、字符(如'ch')、字符串(如"I’d like to study Java !")和十六进制数(如0x14)。 - 数据类型:int占4字节,取值范围-2^31到2^31-1;char占2字节...
CP教学法是指Case Study和Project-based学习,强调学生通过实际案例和项目学习来获得知识和技能。 当前JAVA课程教学中存在四个主要问题。首先,知识体系方面,高校往往集中在J2SE方面,忽视了J2EE和J2ME的教学。...
修改程序以输出"I’d like to study Java !",需要创建一个类,包含main方法,并在其中使用`System.out.println()`打印指定字符串。 以上就是从给定的文件中提取出的Java相关知识点,涵盖了Java的历史、软件概念、...
此外,书中还提到了Sun Microsystems及其子品牌的一些著名商标,例如J2ME、J2EE、JavaCard等。 #### 六、免责声明 本书提供的所有信息均以“现状”为基础,并未提供任何形式的保证,无论是明确还是暗示的。作者和...
合法的常量包括整数(如2、4、6.5、0x14)、浮点数(如5.6E03)、字符串(如"I’d like to study Java !")等。非法的常量包括以字母开头的数字(如2M、8I)、包含非法字符的表达(如\t、–90)等。 - **变量命名*...
Java技术体系包括核心的Java平台,分为标准版(J2SE)、企业版(J2EE)和微型版(J2ME),涵盖了从服务器端应用到嵌入式设备的各种开发需求。 Java运行环境JRE(Java Runtime Environment)是执行Java程序所必需的...
Study the External Peripherals ...................................................................... 53 Initialize the Hardware ..........................................................................
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...