关于J2ME,应该知道的事

研究J2ME已有2年左右了,期间接触了很多项目,确实每天都在进步。在手机上写代码与在PC上写代码,是如此相

似又如此风格迥异。忙里抽闲,写些东西,希望对那么热爱编程却不知如何开始着手的朋友们给写启发。


如下几条技术都是比较常用的,论坛里也总有人问。这里只是开个头,有空我会分开各部分写些东西。

1.UI

 

我们做出的应用程序能不能得到用户的认可,UI设计是非常重要的一个环节,因为用户能看到的首先就是UI。

J2ME中对UI组件分为低级组件和高级组件。


高级组件的优点是实现简单便捷,(如:建立一个Form容器,再往其中填充高级组件即可)。
高级组件的缺点是现实结构很单一,用户不能对组件进行排版,以及修改颜色等。
所以,我认为高级组件主要用在测试一项功能时候使用,也就是做个小的Demo。

低级组件的优点是用户可以自己设计,组件的外观,颜色,布局都可以按照自己喜好定义。
低级组件的缺点就是实现比较复杂,要通过画布(Canvas)技术来实现。
对于J2ME开发的大型项目,尤其是游戏类,那么几乎是一定要用低级组件实现的。

MIDP2.0 为了弥补高级组件的缺点,添加了一个CustomItem类,用户可以通过扩展该类来实现自己想要的组件。
我印象最深刻的是,对于高级组件中的choiceGroup组件,如果内容比较长,在NOKIA N82上是不能实现折行效果的。但是通过

CustromItem自己绘制的组件就可以实现折行的效果。

SUN推出了LWUIT这个库,效果比较炫,只是这个库文件占用体积过大,我想在正式推出之前,应该会进一步减少体积才行。


2.GCF(The Generic Connection Framework)


J2ME的MIDP在javax.microedition.io程序包中提供了一整套类,统称为通用连接构架(Generic Connection Framework ,GCF)。

GCF使得与其它设备的可编程传输(programmatically transferring)数据变得非常容易。

GCF核心是Connector类,正是Connector类提供的工厂方法屏蔽了底层的实现,这使得GCF使用起来非常方便。Connector类的open()

方法接收一个String类型的参数,这个参数标志了请求的连接类型和连接端点。由于open()方法返回的类型为Connection,因此需要

对返回值进行强制转换。

如:转换成HttpConnection类型。
HttpConnection hc = (HttpConnection)Connector.open(url);

通过GCF可以做的事非常多,发短信,读写本地文件,操作蓝牙等等,这里就不一一举例了,抽空会单独说说GCF的使用。

3.Multiple Thread

 

多线程主要是用来优化系统性能的。
比如说:我们要呈现给用户的界面上有很多图片,但是如果让用户等待图片下载完毕后一起呈现的页面,估计用户早就不耐烦的把我

们的程序关掉了。这里要用多线程。首先可以把文字部分先立刻显示出来,这样用户体验就很好。至于图片下载呢,就start一个线

程在后台运行,下载完毕直接添加到页面上就OK了。很多手机browser都是这么做的!
这当然只是一个简单的实际例子。事实上,所有使用GCF连接框架建立链接的地方都应该使用多线程。我们应该注意到,用模拟器调

试一段代码的时候,如果我们没用多线程建立链接,控制台会提示说我们应该建立一个多线程。

多线程的使用很多学问。线程的同步等技术使用不当,轻则无谓占用系统资源,重则造成死锁,应用程序崩溃。接下来我会重点分析

4.XML

 

如果我们开发的app需要与server端进行信息交互,那么XML技术就是需要掌握的。越是数据量大,就越显现出XML技术的重要性。当

然,如果数据量小的时候,比如包含几个字符的信息交互,那用简单的一条String就可以了。但有哪个大型项目只需要这么少的数据

呢?XML技术不能随便用,这要切记。尤其是开发手机应用程序。由于对于XML处理,需要占用比较多的资不用源,还要引入第三方

API,你要考虑清楚,真的要用它吗?如果不用XML,那你的代码维护性就非常非常之差,并且C/S两端的Developer沟通就非常困难。

这是由于XML是一种标准,所以,我们再项目设计阶段,就可以完全按照这个标准设计出C/S每次交互的数据结构。

5.RMS

 

一句话,就是手机上的database。使用起来有很多需要注意的细节,感觉不是特别方便,本人不太喜欢使用它。但某些场合是必须用

的,比如登陆界面上,点击记住用户名/密码,信息写到哪里好呢?使用RMS要比利用FileConnection写入文件中更合适。而且打开本地文件会涉及到J2ME安全机制,也是个麻烦事。

6.Location

 

常用的可选定位方式有基站定位和GPS定位。

前者实现起来简单一些,后者会相对复杂些。但用基站定位比较粗糙,GPS相对精确些。

同时,又有一个不得忽视的问题,在封闭室内环境,GPS不可用,但基站定位没有这个限制。真是各有利弊,后面慢慢分析吧。

 7.others

还有些技术,一时没想到,如果遗漏以后再补充。

实现同样功能的代码,为什么developer A写的运行的快,developer B写的代码运行起来就跌跌撞撞?

在资源受限的手机上开发代码,每写一行代码,都要想想,能不能优化一下。这就关系到代码优化问题。

移动互联网的时代来临了,除了J2ME还有很多可选语言和开发平台,但我觉得J2ME相对比较简单,也觉得期望投身于手机应用程序开发的朋友们,可以从J2ME开始。

注:纯属个人体会和经验之谈,如果发现博客内容有错误信息,请给予指正。

                                          

 

David Dong

猜你喜欢

转载自blog.csdn.net/fengyud/article/details/4515127