sorry,最近忙着学校的事情,很少来论坛
虽说都叫Java手机游戏,但也有着不同的实现标准
例如日本的DoCoMo就不是使用J2ME规范
而在国内,中国移动的百宝箱采用的是标准的J2ME,
联通则推出了自己的UniJava规范,
我没有开发UniJava程序的经验,无法详细解释,
你可以去查阅相关资料
即便都使用标准的J2ME,也存在着不兼容的问题,为什么呢?
因为各个厂商对设备的实现有很多差异,J2ME为了做到跨平台性
只提供了一个“可预见的最大公分母”,即由J2ME专家组认定所有手机上都应该具备的功能
可想而知,这些功能一定是十分基础的,为了弥补这一不足
又在这个基础上提出了很多可选包(OP),它包含了一些部分手机具备的能力
例如对于篮牙的支持等等,如果你的手机程序使用了某些可选包
那么它就无法在没有该可选包支持的手机上正常运行
此外,手机厂商针对不同的手机也推出了自己的扩展包,用来提供一些底层功能
例如Nokia的UI API,索爱的SE API,
尤其是Motorola,提供了大量的扩展API,极大丰富的手机的功能
且提供了Java一些系统级访问的能力
但是,显而易见,
使用这些API会让你开发的程序无法在不同厂商的手机上运行
如果我开发的程序既没有使用J2ME OP,也没有用厂商提供的扩展API
就可以做到跨平台了吗?也不是。
刚才提到J2ME提供了一个基础,但这个"基础"也有不同的版本
分别是CLDC1.0和CLDC1.1,MIDP1.0和MIDP2.0
它们是无法向上兼容的,这意味着MIDP2.0开发的程序无法在只支持MIDP1.0的手机上运行
除了上面种种,我还没有说到手机屏幕、内存等硬件基础上的差异性
你想想,
一个176*208的手机定制的游戏,它该怎么运行在128*128分辨率的手机上?
(尽管J2ME专家组正在制定SVG规范,但我想它的作用也很有限)
所以,Sun承诺的CORA在移动领域还远远没有达到
(所以现在Sun已经把口号改成了“Java无处不在”)
当然,我认为这不完全是Sun的问题
比如手机内存限制,我们在开发桌面或企业级应用程序时
只会提出一个建议内存大小,如果用户的内存不够,可以去扩充
然而手机不同,它的内存从出厂就定死了
现在Java手机的堆内存从200K到3M甚至是动态分配
即使J2ME规范制定的再完美,也无法让一个需要300K内存的程序运行在只有200K内存的设备上。
但是,我想J2ME仍然是可以信赖的,毕竟它已经开了个好头
目前支持Java的手机有几亿部,尽管支持程度参差不齐
但至少它们使用同一种语言
比起在Symbian和Mobile操作系统上开发的差异性来说
Java仍然是跨平台的首选工具
(对于将来广泛应用的手机网络应用程序,跨平台的重要性可想而知,毕竟手机操作系统不是哪一家的天下,就算是,也不会是M$

)
一口气写了这么多,希望对你有所帮助