标题：手机开发
背景资料
3G时代的到来，使得手机应用日渐热门，由于手机携带方便，并且是生活必带随身用品，而且信号覆盖广，操作便捷，使得人们对其给予了越来越高的期望。大家期待各种常见的或是重要的信息化系统、互联网应用可以被移植到手机上同步使用，使用户无论在何时何地，都可以连线精彩的网络世界，登录信息系统。为此，如何进行手机开发，如何在手机上催生各种多姿多彩的精彩应用，日渐成为整个ICT产业关注的焦点。
手机应用
由于整个市场还处于发轫阶段，目前大众对于手机应用了解并不很多，但其实在这个市场早已是暗流涌动，春潮泛滥，各种各样有趣的应用层出不穷，新奇创意不断，大量原来PC和互联网上的信息化应用、互联网应用均已出现在手机平台上，一些前所未见的新奇应用也开始出现，并日渐增多。下文将介绍一些目前市场上较为流行的精彩应用。
开发难题
1、手机操作系统很多：Android，Mac OS，Symbian S60, UIQ, Windows Mobile, Linux, Brew、 Blackberry……，要想克服不同手机平台的差异，实现应用的统一覆盖异常困难；
2、手机开发很难：开发人员稀缺，成本太高，进度太慢，无线网络太复杂，门槛障碍太多……；
3、软件或互联网公司如果为了实现移动应用，而把精力投入到并非自己所长的领域，无疑将会得不偿失。
4、行业需要专业的角色，来解决开发应用过程中的各种难题，将复杂难题封装简单，把各种异构封装透明，降低大家进入这个市场的门槛。
问题解决方法
经过全行业长达多年的不断探索，业界主张将MKey无线中间件作为标准化的无线开发平台，进行手机开发和手机应用。利用MKey无线中间件进行手机开发，不仅能够解决上述的各方面开发难题，而且在成本控制、开发周期、开发难度等方面，均是目前最为出色的实现方法，整体开发技术水平相较国外无线开发而言，也显得十分突出。
MKey无线中间件屏蔽了各种硬件平台、操作系统、无线网络和数据源的差异，将所有技术难点进行了统一封装，可帮开发者快速、低成本实现移动化开发应用。
MKey无线中间件的特点
开发1次，全终端适用；
2周完成一个项目的开发；
开发费用节省70%；
开发周期缩短80%。
开发模式的比对
1、没有MKey的移动开发
* 手工作坊模式，所有技术从头到尾研究，“自己种棉自己织布”
* 实施一个普通的移动OA项目，需要耗费5-10人/月
* 会手机开发的人才稀少，人员成本高昂
* 多终端覆盖难以实现，综合成本十分巨大
* 一年实施十几个无线项目已是极限
* 技术不成熟、不可控因素多，项目风险高，一旦失败损失巨大
————————————————————————————————————
2、利用MKey进行移动开发
* 工业流水线模式，使用专业工具，快速批量“织布”
* 实施一个普通的移动OA项目，只需0.5-1人/月
* 只需了解Web开发，经过几天培训就能上手使用MKey，人才资源丰富、成本小
* 只需编写一次程序，就能生成适用不同平台的多个安装包，全终端覆盖
* 一年实施几百个项目轻而易举
* 成熟工具、成熟应用，项目实施高度可控，无任何后顾之忧
MKey无线中间件的开发原理
MKey可实现的手机应用
1、企业应用
***CMMB移动电视增值平台
***移动（无线）电子政务平台
***移动电子商务平台
***移动OA
***移动IM
***移动CRM
***移动ERP
***手机业务助理
***移动维保
***移动物流
***移动保险
***移动采编
***移动进销存
***移动直销管理
***移动分销管理
***移动电子商务
***移动执法
***移动税务
***移动统计
***移动警务
***移动城管
***移动工商
***……
2、个人应用
***手机搜索
***手机浏览器
***手机证券
***手机自助服务系统
***手机银行
***手机社区
***手机邮件
***……
开发平台
[1]有三大平台：Symbian、WindowsMobile（以下简称Windows）、Linux。Palm已经完全出局了，不需要再考虑。另外还有两大阵营：J2ME阵营（跨多种操作系统，包括Windows）和ASPCF阵营（只能运行在Windows上，以下简称ASP）。
这些平台上的开发语言包括：
Symbian：C++、Java、Python
Windows：C#、C++、VB、Java
Linux：C++、Java...
J2ME阵营：Java
ASP阵营：C#
手机开发趋势
J2ME相比.NET来说，优势主要在游戏开发方面，但是.NET有着更加广泛的用途。在MIDP2.0中，核心部分所加入的主要是对于3D图形、多媒体、GameAPI的支持，用来支持游戏的开发。因为在制定MIDP2.0规范时时间有限，所以将其他很多重要的功能都放入了可选包中，而不是作为MIDP2.0的核心内容。因此尽管很多手机都声称支持MIDP2.0，但是可能没有安装某个可选包，使得使用了这个可选包的软件在这款手机上无法运行。例如，假如没有安装PDA可选包，就无法访问手机的本地文件系统、无法读取通信录、无法读取信箱中保存的短信。而这些功能是开发个人信息备份/恢复软件所必需的。不过这种情况会随着时间的推移而逐渐好转，新推出的智能手机中都包括了越来越多的可选包，Nokia、Motorola、索爱等大厂商对于J2ME的支持力度是非常大的。除了可选包未安装这个限制之外，J2ME应用运行在严格的沙箱之中，要开发使用除系统内存、显示、声音控制之外的其他资源（例如，本地文件系统、通信录、信箱），所开发的应用必需经过签名，这个开发过程相当的繁琐。
正是因为目前大多数Symbian手机上J2ME版本太老，功能非常有限，所以除非开发游戏类应用，大多数Symbian开发者都选择使用C++做开发，因为C++可以访问系统所有的资源。然而，SymbianC++尽管有很多优点，但是对于开发者却是很不友好的，学习门槛相当高（一大堆的清规戒律，好像是鲁提辖上了五台山），从面向对象设计的角度来看问题也很多（与MFC类似，也许有人认为面向对象在手机开发中并不是很重要）。没有半年时间想成为SymbianC++的高手相当困难，这个巨大的sinklost需要经过慎重的权衡。
在Symbian上使用Python做开发的人还很少，优缺点目前还不大清楚。
顺便说一下，Nokia今年上半年推出了开发工具Carbide，针对SymbianC++和J2ME分成两个版本，这两个版本都是基于Eclipse的。
在Windows上也可以做J2ME开发，如果手机安装了MIDP2.0的支持就可以直接使用，如果没有安装，需要开发者另外安装。Windows上比较好用的是IBM的J9VM，但是J9VM仅包括MIDP2.0的核心部分，而不包括大量的可选包。如果你只是开发游戏，那应该是够用了。
不过Windows开发者首选的还是C#，C#开发效率大大高于C++，性能也很不错。相比Java来说，可以更加容易地访问所需要的资源，因此开发效率也更高。Windows上前几年使用的EmbedVC++、EmbedVB两个工具已经退居二线。
Linux上可以使用C++和Java做开发，笔者对于在Linux上如何做开发没有任何经验，在此略过。
综上所述，目前在手机开发中占据统治地位的是三大语言：C++、Java与C#。
J2ME与.NET两大平台相比，J2ME在游戏开发方面有优势，而.NET在游戏以外其他领域的开发（例如：移动企业应用）更有优势。但是由于J2ME得到了手机一线大厂的力捧，因此前途不可限量。目前销售Windows智能手机的厂商主要还是一些新兴的排名稍靠后的厂商（联想、多普达、夏新...）。
移动智能应用比较发达的国家是日本和美国。在日本是以游戏类应用为主，在美国是以移动企业应用为主。中国将来走的道路，大概会与日本相同。因此在3G上马后，J2ME应用在国内的爆发是可以预期的。