日期:2014-05-20  浏览次数:20861 次

关于j2me跨平台的一些疑惑
1.kvm:不同的操作系统有不同的kvm;不同制造商生产的手机安装同样的操作系统对虚拟机的要求是不是不一样?
2.profile:现在的j2me程序针对configuration各profile编程;
经常听到需要设备支持xxprofile,profile需要硬件支持吗?
如果是软件支持,是不是由制造商提供实现?
如果有一针对cdc和pp开发的程序2me程序能正常运行在wce上,
现如果把他移值到linux系统上需要做些什么事或注意些什么事?
如果把他移值到另一装有wce上的手机,需要做或者注意些什么事?

------解决方案--------------------
所谓的跨平台是指在不同的系统上存在不同的kvm,来解释同样的class文件
对于程序员来说,编写一次就可以在不同的系统上的不同的kvm上解释得到相同的结果
这就是所谓的跨平台
------解决方案--------------------
1、KVM其实只是一个规范罢了,规定必须实现那些功能。不同的厂商有不同的实现,即使是同一个厂商,在不同系列的手机上实现也存在区别。
2、profile也是一个规范,比如针对手机的MIDP,对于硬件和软件都有要求
------解决方案--------------------
SUN定义了一个最小集合,是虚拟机厂商在开发时需要支持的,否则不能通过sun的认可,但是这就造成了有些虚拟机对某些功能支持,某些不支持。

虚拟机你可以这么理解,他可能是用不同语言写的,但是功能确是相近的,比如必须可以解释class文件,但是内部数据结构怎么定义完全可以不一样。就像2个接口完全一致的类但是内部实现确完全不同。而你要做的就是调用接口而已,不关心它内部的实现。

不可避免的内部实现上肯定有好坏,效率肯定有高低,甚至有些虚拟机还有bug。
这就是为什么你的程序在nokia上快,moto上慢的一个原因(和机器本身的CPU等等也有关)。因为它们虚拟机的实现不同。

------解决方案--------------------
如果有一针对cdc和pp开发的程序2me程序能正常运行在wce上,
现如果把他移值到linux系统上需要做些什么事或注意些什么事?--注意LINUX与WCE的差异(比如默认编码类型、文件系统差异等等)。
如果把他移值到另一装有wce上的手机,需要做或者注意些什么事?--注意这两款手机的差异程度和WCE的版本差异程度。