CardViewer系列之准备篇--J2ME vs .netCF

如果您还没有阅读本系列开篇《CardViewer项目体会系列文章》,建议花些时间了解一下。

废话:博客园的标语是“专注于.Net技术”,相信这儿类聚的几乎都是.net阵营的志士们,但这不影响我们选择.net前、后仍然关注J2ME,通过比较找出你所掌握和使用的技术之优势与不足,以及限制,可以避免盲从,保持清醒。软件是为人服务的。甲方追求物美价廉,乙方追求低本高利。该项目中我兼具着甲乙双方的角色。所以,在需求分析和设计前期,我们相对自由,没有任何限制,造成这种自由除了兼具甲乙角色的原因之外,另一方面是因为公司在嵌入式的经验是零值,同时该项目的功能需求相对简单、工期也不着急,所以我没有选择“外包”,而是从零开始,边学边用。从零开始的第一步当时是选择平台与设备。

--J2ME vs .net CF
背景:时下的嵌入式市场几乎被J2ME(Sun’s Java 2 Platform Micro Edition)和.netcf割剧,所以这道题也就简单到“二选一”。google一下J2ME vs .netCF可以得到不少文章,我的del.icio.us中的j2me_vs_netCF标签收集了几篇评价客观的文章,如果你对这个话题感兴趣的话建议认真阅读,如果只想简单了解或懒得读英文,那么以下我整理了一点摘录:

  • 平台(platform)支持为简化说明可以把OS分为windows和非windows操作系统。在非windows操作系统中,手机上最为流行的是Symbian, iDen, Brew 和 vendor-specific,PDA和嵌入式设备上最为流行的是Palm OS 和RTOS (real-time operating system)。 .netCF只能运行在Windows,虽然支持winCE和基于pocketPC的低端设备超过200多种。然而更多设备是运行在非windows系统上的,JAVA的标语"Write one, Run Everywhere"显示了它势必掌握低设备软件开发的大部分主动权,包括windows在内的几乎所有平台都可以成为J2ME的舞台。所以很显然,在平台支持方面J2ME远优于.netCF
  • 语言支持:塞翁得马,焉知非祸,由于平台对比的优势,J2ME的开发者陷入标准化的困惑,他们经常要应付各种厂家提出的不同标准和插件,如multimedia playback和SMS(Short Message Service),甚至J2ME平台本身的MIDP也会被不同厂家以不同的方式实现。.netCF的开发者相对幸运的多,应该还算是以人为本,因为开发者不必再去学习新的技术,当然你应该具备.net开发经验,不管使用的Visual Basic .Ne还是c#。
  • 数据库支持:目前主要数据库解决方案providers包括:Microsoft公司的SQL Server Compact Edtion:主要支持.net cf,相信这是这个坛子里对它最为熟悉;Sybase公司的iAnywhere Solutions:最为流行,支持.net cf和j2me,它拥有出色的UltraLite mobile 数据库技术,它可以通过MobiLink与IBM DB 2, Oracle 9i and SQL Server同步;IBM公司的DB2 Everywhere:支持JDBC和ODBC APIs;Oracle公司的Oracle 9i Lite:支持JDBC和ODBC APIs。
    然而这些数据库的功能是不够完备的,通常需要与企业后台数据库进行同步与合并。.netcf支持ADO.net的一个大子集。关系性数据库在j2me上的存取是通过JDBC的,相比之下,支持J2ME的数据库更多。
  • Web Services:微软阵营中,Web Services类很早就与移动设备集成,完全支持SOAP。相比之下,SOAP通过J2ME Web Services API (JWSA)被标准化的时间不长。
  • 开发工具:选择何种mobile平台的决定因素在于开发者已掌握的知识和开发工具。.netCF的开发工具Visual Studio2005这里就不用多介绍了,大家都比我熟。适合J2ME的平台和设备种类繁多的优势使得可选的开发工具也就数不胜数,如JBuilder with MobileSet,jVise(Eclipse的模块),Metrowerks CodeWarrior Wireless Studio,以及初学者熟悉的Sun J2ME Wireless Toolkit。当然这并不完全可以当作一个优势,主要矛盾还是集中在标准化不够统一的问题上,因为不同厂家都有自己的SDK,编辑工具以及设备仿真器(emulators),掌握这些工具和测试仿真器是一件单调乏味而困难的事。
  • 结论:选择何种平台完全取决于你的商业和开发需求。J2ME和.netCF都是开发mobile应用程序的优秀平台。从跨平台性、设备支持、数据库支持、开发工具等因素上讲,J2ME在低端设备上mobile解决方案具有明显优势。然而在J2ME平台开发和布曙应用程序是兼具挑战性和乏味的。而.netCF更适合低水平开发者的,它能有效地节约成本和缩短学习周期,而且它是到目前为止开发运行在windows平台上的高端PDA的最好选择。

我选择:.netCF。以上参考使我们选择开发环境和设备变得容易。尽管如此,当时我的选择经历也是通过一段时间的摸索(-选择-试用-选择-),总结一下我们选择.netCF的原因:

  • Visual studio2005开发环境容易上手:当时只有使用Jbuild和Eclipse编程环境的经历,尽管曾经多少使用过Visual studio 6.0,所以转到Visual Studio是下了一定的决定的,不过没想到上手极快,而且在GUI方面效率远远高于我以前使用的任何开发环境。
  • C#语言轻松搞定:在南开学的是C++和Java,相比之下更喜欢java,然而有了这两种编程语言的基础,C#的学习还是很轻松的。
  • Sql server  mobile Editon可以快速入门:使用Oracle9i已经四年多了,但是Sql server 2005的使用比起oracle的企业管理器要方面得多,所以学习sql server mobile Edition花了几个小时就入门了。
  • 环境搭建相对简单:不象Eclipse和JBuild那样要去搜集那么多的model(比如WTK、UML),有时为了一个需求要去试用n个公司的模块,着实很烦人,我是个懒人,所以当我轻松的搭建完.netCF的环境时,觉得爽极了。
  • 我们的产品不需要跨平台:这个项目功能简单,也不可能会把软件移植到其他设备上去,最大可能也就是更新不同型号的PocketPC,只要windows mobile 一直发展,CardViewer就可以持续发展。

预告:介绍设备选择、环境搭建以及资源链接


CardViewer系列之准备篇     本系列文章目录      下一篇

posted on 2006-11-20 01:10  apan  阅读(3241)  评论(6编辑  收藏  举报

导航