虽然索爱的机子的质量一直是个问题,不过用到现在,感觉还可以。
电池900mh的小了点,我充一次电一般能用两天左右,感觉还是短了点。
自动对焦的功能使用效果不是很好,只能谈一般。
可惜不支持操作系统
现在我们来谈谈和我们有关系的,对java的支持。
支持java MIDP 2.0
j2me的一些感念:
J2ME,即Java 2 Micro Edition,是SUN公司推出的在移动设备上运行的微型版Java平台,常见的移动设备有手机,PDA,电子词典,以及各式各样的信息终端如机顶盒等等。
由于移动终端的类型成千上万,而且计算能力差异非常大,不可能像桌面系统那样仅仅两三个版本的JVM即可满足Windows,Linux和Unix系统,因此,J2ME不是一个简单的微型版的JVM。为了满足千差万别的移动设备的需求,SUN定义了一系列的针对不同类型设备的规范,因此,J2ME平台便是由许多的规范组成的集合。
最重要的移动终端当然是手机了,因此,我们主要讨论手机相关的J2ME规范。
Configuration
SUN把不同的设备按照计算能力分为CLDC(Connected Limited Device Configuration)和CDC(Connected Device Configuration)两大类,这两个Configuration是针对设备软硬件环境严格定义的,比如CLDC1.0定义了内存大小为64-512k,任何设备如果支持CLDC1.0,就必须严格满足定义,不能有可选的或者含糊的功能。
CLDC1.0是针对计算能力非常有限的设备定义的,只支持整数运算,不支持浮点运算,早期的Java手机大部分都支持CLDC1.0,如Nokia 3650,Siemens 6688i。
CLDC1.1则增加了浮点运算,因此,在支持CLDC1.1的设备上,可以使用float和double类型的变量。现在的Java手机很多都能支持CLDC1.1,如Nokia 9500,Siemens S65。
CDC则是针对计算能力比较强的设备定义的,如PPC等,CDC平台的JVM基本上和桌面的JVM很接近了,只是可以使用的Package大大少于J2SE的包。支持CDC的非常高端的Java手机也会很快上市。
Profile
和Configuration相比,Profile更多是针对软件接口的定义,Profile有必须实现的,也有可选的功能,因此,Profile更灵活。
最重要的Profile当然是MIDP(Micro Information Device Profile),MIDP定义了能在Java手机上运行的Java程序的规范,包括应用程序生命周期,各种UI界面组件,支持Record存储和Http连接等等,符合MIDP规范的Java小程序被称为MIDlet,可以直接通过无线网络下载到手机并运行。
早期的MIDP1.0规范使我们能在手机上运行有UI界面的Java程序,但是MIDP1.0对游戏的支持不够,必须自己实现许多代码,因此,MIDP2.0规范大大加强了对游戏开发的支持,使开发者能编写更少的代码来创建游戏。
MIDP规范的图形界面基本上都是独立于J2SE的AWT和Swing组件,因为目前手机的计算能力还比较有限,但是,随着手机的CPU越来越快,使得AWT和Swing移植到手机上也将成为可能,因此,基于CDC规范的最新的PBP 1.0(Personal Basic Profile)和PP 1.0(Personal Profile)提供了部分AWT和Swing的支持,目前,部分高端PDA已经可以运行PBP和PP的Java程序了。可以预见,将来大部分的AWT和Swing组件都能移植到手机上。
前面已经说过,和Configuration相比,Profile有许多可选包,比较实用的Profile还有在JSR135定义的MMAPI(Mobile Media API),实现多媒体播放功能;在JSR184定义的M3G API(Mobile 3D Graphics API),实现3D功能;在JSR120定义的WMA(Wireless Messaging API),实现短消息收发。如果你的手机支持某一Profile,如M3G,那么便可以在MIDlet中使用M3G的3D API实现3D游戏。
如果你准备在手机上开发J2ME应用,选择手机时就需要注意厂商支持的CLDC规范,支持MIDP1.0还是2.0,是否支持MMAPI,M3G,WMA等可选包。
Profile虽然定义了Java API接口,但是底层如何实现是由各厂商自己决定的,如M3G定义了3D接口,但是底层实现既可以使用硬件加速,也可以由C程序模拟,或者部分由硬件实现,部分由软件实现。
比J2ME更精简的Java平台被SUN称为JavaCard,运行在信用卡等芯片中,实现电子支付等功能,目前SUN还没有把JavaCard并入J2ME平台。
J2ME(Java2 Platform, Micro Edition) Java2平台微型版
CLDC(Connected, Limited Device Configuration) 连接受限设备配置
CDC(Connected Device Configuration)连接设备配置
MIDP(Mobile Information Device Profile) 移动信息设备描述
KVM(The K Virtual Machine) K虚拟机
J2ME 简表是什么?
如我们在前面提到的,一个简表定义了受支持设备的类型。例如,移动信息设备简表 (MIDP),定义了蜂窝电话的类。它把一些特定于域的类加入J2ME 配置中来定义对类似设备的使用。已经为 J2ME 定义了两个简表:KJava 和 MIDP 。它们都构建在 CLDC 之上。KJava 和 MIDP 都和 CLDC 及小型设备相关联。
简表被构建在配置的顶部。由于简表是特定于运行应用程序的设备的大小(内存的数量),所以,某个简表是与某种特定的配置相关联的。
在纲要简表上,您可以创建自己的简表,这种纲要简表也称为基础表,它对于 CDC 也是可用的。然而,在本教程和本节中,我们将只重点学习建立在 CLDC 上的 KJava 和 MIDP 简表。
简表 1:KJava
KJava 是归 Sun 公司所有的简表,它包含 KJava API。KJava 简表建立在 CLDC 配置的顶部。KJava 虚拟机,KVM,像标准的 J2SE 虚拟机那样接受相同的字节代码和类文件格式。
KJava 包含一个特定于 Sun 的、运行在 Palm 操作系统上的 API。这个 KJava API 和 J2SE 抽象视窗工具包 (AWT) 有很多地方都是相同。然而,由于它不是一个标准的 J2ME 软件包,它的主软件包是 com.sun.kjava。在以后的教程中开发一些示例应用程序时会学到更多关于 KJava API 的知识。
简表 2: MIDP
MIDP 适合诸如蜂窝电话和寻呼机等移动设备。MIDP 和 KJava 一样,也是建立在 CLDC 之上的,并且提供一个标准的运行时环境,允许在终端用户设备上动态地部署新的应用程序和服务。
MIDP 是一个公共的、为移动设备设计的工业标准简表,它不依赖某个特定的商家。对于移动应用程序开发来说,它是一个完整的、受支持的基础。
MIDP 包含下列软件包,前面 3 个是核心 CLDC 软件包,另加 3 个特定于 MIDP 的软件包。我们将在后面的教程中讨论每个软件包:
java.lang
java.io
java.util
javax.microedition.io
javax.microedition.lcdui
javax.microedition.midlet
javax.microedition.rms
MIDP 取代 KJava
正如我们在前面的章节中提及的,KJava 是 Sun 公司所拥有的一个 API。它不作为一种完整的、功能齐全的简表,而是作为一种示范,示范简表如何与 CLDC 一起工作。根据 CLDC 发行说明 (其中包含 CLDC 下载版本):
在软件包 com.sun.kjava 中提供的 GUI 类不是连接限制设备配置 CLDC 的一部分。Java 2 平台袖珍版的正式 GUI 类,将通过 Java Community Process 分别定义并被包含进 J2ME 简表中。
不管这个事实存在与否,KJava 简表已经被早期的采用者广泛使用了。在JavaOne 的开发商会议上,Sun 公司宣称早期 Palm 操作系统的 MIDP 可用性(MID 简表的最初发行版焦点主要集中在无线电话上)。 Palm 操作系统 MIDP 的规格是由 Java Community Process (JCP) 定义的。因此,它是独立于供应商的。当前众多限制中的一个 -- 它将随时间消失 -- 就是 Palm 操作系统的 MIDP 需要最新的 Palm 操作系统,3.5 版。
j2me开发环境:
http://java.sun.com/j2me/download.html
Sun Java Wireless Toolkit 2.3 Beta
- J2ME Wireless Toolkit 2.2
各个手机厂商提供的手机开发工具:
Nokia : http://forum.nokia.com
SonyEricsson : http://www.sonyericsson.com
Sony Clie : http://www.cliedeveloper.com/top.html
Motorola : http://www.motocoder.com/
Nextel : http://developer.nextel.com/
RIM : http://www.blackberry.net/developers/na/index.shtml
Siemens : http://www.siemens-mobile.com/
SprintPCS : http://developer.sprintpcs.com/adp/index.do
Palm : http://www.palmsource.com/developers/
Symbian : http://www.symbian.com/
BellMobility : http://www.developer.bellmobility.ca/
J2ME开发IDE:
Sun One Mobile Edition : http://wwws.sun.com/software/sundev/jde/
Jbuilder Mobile Edition : http://www.borland.com/
Code Warrior Wireless Studio : http://www.metrowerks.com/MW/Develop/Wireless/Wireless_Studio/default.htm
WhiteBoard SDK : http://www.zucotto.com/home/index.html
IBM Studio Device Developer formly know as IBMVisualAge MicroEdition : http://www-3.ibm.com/software/wireless/wsdd/
我们还是喜欢用:
Eclipse
j2me的开发插件:eclipseME
http://sourceforge.net/project/showfiles.php?group_id=86829
我使用SonyEricsson的专用SDK 2.2.3
http://developer.sonyericsson.com/site/global/docstools/java/p_java.jsp