我的J2ME学习历程2

 

    J2ME也是JAVA,所以《think in java》就是不二法门了(幸亏偶已经拜读过了)。

    J2ME中的虚拟机VM和J2SE,J2EE不一样di,在J2SE ,J2EE 之中,是Classic VM和HotSpot VM,而J2ME中是KVM和CVM,KVM(K virtual machine)执行低级硬件程序,而CVM(C virtual machine)执行高级硬件程序。还有个SMART CARD,呵呵,慢慢来吧。(其实不知道为什么sun这样命名,c,k什么意思啊)

    什么是JINI,我一直久仰大名,原来他是将J2EE,J2SE,J2ME不同版本的java程序连接在一起的东东,好东东啊。。。

    What’s? CLDC & CDC? Connected Limited Device Configuration(CLDC);Connected Device Configuration(CDC);CLDC包含于CDC,呵呵,就是一个连接配置

     MIDP?这个东西看着很很很很重要,是什么东东?Mobile Information Device Profile,是CLDC的两种配置之一,另一个是PDAProfile,是针对PDA的配置,现在流行MIDP了,还是2.0了,因为是我们编写手机游戏少不了的,是我们开发游戏的设备配置标准。

    MIDlet 也会看到,其实就是MIDP应用程序 MIDP application.。

     我们先来看看MIDP的硬件标准

    MIDP:

    RAM和ROM: 至少要512K

    电源:通常是使用电池,所以电源有限

    网络连接能力:具有低频宽的无线通讯能力

    要有额外的RAM或ROM 供应程序执行并存储资料

    

    我们就来好好看看MIDP吧。(找到一份NOKIA的MIDP2.0英文资料)

    MIDP的限制:

    MIDP就是为手机这类移动设备设定的标准,所以限制少不了了。

1.CLDC1.0不支持浮点运算,如float和double,如果要用到浮点运算,只可以存为string或者integer数组

2.MIDP中没有设计class loader,需要手动加载类

3.不存在回收Finalization,对象必须手动在删除前释放

4.不存在 Java Native Interface (JNI),不过没什么意思,因为J2ME的代码一般都不会和J2SE,J2EE代码打交道

5.不支持映射 Reflection,也不支持RMI和对象的序列化object serialization。

6.错误处理很浪费资源,所以在J2ME中只存在3个错误类:java.lang.Error,

java.lang.OutOfMemoryError, java.lang.VirtualMachineError.

7.SWING AWT这样的大型界面很笨重,所以MIDP提供了专门的高层用户界面High-level user interfaces

8.没有提供设备文件系统的持续型文件的读写接口,而使用the Record Management System (RMS)代替。

9.MIDP支持多线程,但是不支持线程组Thread group和守护线程 daemon thread,可以在应用层使用集合存储线程对象来代替线程组。

    

    MIDP可以实现的功能:

    

1.     MIDP的核心java类库由两个部分组成,一部分是从J2SE,一部分是为J2ME单独设计的。

在类库中,除了object外,java.lang中Class,Runnable,String,System,Thread,Throwable,负责运算的math中的abs,min,max,数据类型除了浮点运算的数据类型,java.util中的Stack,Vector,Hashtable,,Random,Enumeration(没有保留Iterator),java.io中的大部分都可以在J2ME中找到。

2.    MIDP有一个特殊的Display对象,用来控制输入设备和显示设备的连接,Display对象同一时间只允许一个。Displayable是一个提供所有用户可视界面的容器,有两个子类,Canvas和Screen。Canvas控制象素显示和低层次接口特性,Screen提供象选择菜单和数据表单等高层次接口特性。

3.     高层用户接口High-level user interfaces

Form是继承了Screen类,放置界面的容器,其实大家用过Swing就知道是什么东西了吧,Form似乎是从delphi借鉴过来的名字。界面组件有:?ChoiceGroup,?TextField, ?DateField, ?Gauge, Image,MIDP2.0新增加了Spacer, StringItem, CustomItem等等,顾名思义的东东,大家自己看看帮助文档就ok了。

4.     画布Canvas

     用以控制底层来显示游戏中的移动和动态的图像,可以与Screen互换。Canvas类必须继承调用,他提供了一个paint()方法用来绘制或刷新,而且提供了其他很多方法来绘制图形,文本等,支持png格式的图像。

    游戏开发的时候会发现一个改进的GameCanvas类,从Canvas继承而来,提供了很多开发游戏时有用的方法。

5.    新的游戏API javax.microedition.lcdui.game.

MDIP2.0的新游戏API中提供了象Sprites这样的Tiled backgrounds游戏中经常用到的方法。Sprite layerl 是游戏中的表层,用于完成图片的动画,而Tilelayer则可以提供游戏的背景层。这些都是由层管理器LayerManage完成,而且这种机制可以实现新层的重绘而旧层变暗的效果。

另外,GameCanvas提供了一个加快速度和实现无闪烁动画的缓冲,FlushGraphics()方法用来将缓冲中的图像拷贝到屏幕,hoho,这样就可以实现双缓冲的无闪烁而不用自己动手写了。

getKeyStates()方法也是新加的,用来判断设备按键,好像可以判断组合键了,又是一福,我们可以做组合大绝招了。

6.     RGB图像

public void drawRGB(int[] rgbData, int offset, int scanlength, int x,

int y, int width, int height, boolean processAlpha)

MDIP2.0支持用户将图像以整数数组形式存取,这样就用这个方法来在象素级别进行图

像变换了。

7.     响应Commands

所有的交互动作都离不开Commands拉,一个按钮表示什么动作,如打开,关闭,退出。。。

给大家看一个代码就知道是什么了。

class myClass implements CommandListener {

public void commandAction(Command c, Displayable s) {

Forum.Noif (c == BACK_CMD) { … }

}

}

    只不过在J2ME中,Command被抽象出来了

Command BACK_CMD = new Command("Back", Command.BACK, 1);

myScreen.addCommand(BACK_CMD);

    

8.    MIDP 2.0 Media API 音效的API javax.microedition.media

    仅仅支持声音,视频和图像都不可支持,一般就是.wav文件了,MIDP 2.0只是规范了对产生音质的的需求

9.     MIDP2.0扩展了网络连接的方式,不仅再是HTTP,增加了secure HTTP (HTTPS),提倡支持User Datagram Protocol (UDP), 直接TCP连接,和串口通讯serial port communication.

CLDC特别提供了一个通用连接平台Generic Connection Framework (GCF), 他将所有外部的数据传输抽象为一个Connector类,例如要打开一个网页Connector.open(http://www.forum.nokia.com);

打开一个socket连接

Connector.open(socket://forum.nokia.com:9001);

    

10.进栈架构 Push architecture

其实就是栈结构,在战棋会合制游戏中很有用,不过还要看设备是否支持。

11.定时器和警报器 Timer&Alerts

Timer类运行为后台线程提供定时器功能,跟J2SE一样

Alert是一个特殊的Screen对象,可以显示文本和图像,并且自动在一段时间后中止。如果时间间隔设定为Forever,设备会自动提供一个方法消除Alert.Alert 一般用于显示错误信息。

12. 记录管理系统Record Management System (RMS)

这个前面提到过,他代替了IO系统中对永久型数据的文件系统来进行数据的读写,比如存取游戏存档,高分排行等。

MIDlets允许以不同文件名建立多个存储记录,并且可以在相同的套件中不同的MIDlets进行记录交换。如果外部条件允许,设置不同套件的MIDlets记录也可以实现交换。

13.终端对终端的安全协议HTTPS? End-to-end security — HTTPS

MIDP2.0除了提供了基于MIDlet层的安全保护,还额外的针对终端用户通过HTTPS (secure HTTP)进行加密通信。HTTPS用于如网络银行服务等领域,通过提供一个专用的HTTP安全通道来实现保护。一般在HTTP协议上使用Transport Layer Security (TLS)或Secure Sockets Layer (SSL) 技术来实现。.

14.托管MIDlet组件

一个标记后的MIDlet组件可以确保用户的MDIlet组件的内容没有被篡改并且MIDlet组件来源是合法或可以认证的。MIDP2.0实现了在设备上可以查证开发商的签名。

似乎这么直说有点绕口,其实就是指MIDP2.0提供了一套正版的验证机制。

    

    我赛,好累,今天收获不小的说,不过很多东西还要慢慢理解,慢慢来了,每天有收获就是最大的收获。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值