有几个想学j2me的朋友问过我这个问题。我想这个问题可以有两个答案。
j2me是简单的。
说其简单,更主要的原因是j2me开发使用的是java,离开平台技术范畴(j2se,j2me,j2ee),java语言本身是简单的,或者说“简洁”更为强大。比起c++的程序代码来说,java code让人看起来更舒服,也更直观。
另一方面,j2me的sdk十分丰富,配置也非常简单,如果再借助强大的ide(如jb和eclipse,不过在j2me开发方面,我更倾向于jb),那么有一定的java基础,j2me上手实在不是难事。
j2me并不简单。
更多人说j2me简单是因为它“小”,所谓的“小”主要是针对其api少。“两三个星期就学完了”,有人如是说。但这个见解我实在不敢苟同。其实恰恰因为它提供的api少,才使得j2me变得比传统的编程更具挑战。相对于提供了丰富的api的j2se和j2ee来说,我们需要“自力更生”的范畴要大的多。仅有的api提供给我们了最最基础的功能,剩下的就要靠程序员自己去探索。如果你所需要的各种功能都已经被现成的api实现,那么我们不再需要学习和研究,只要一本api手册就够了。
j2me的第二个难点在于限制大,当然这也是所有基于移动设备的开发所共同面临的问题。内存的限制,处理速度的限制让我们不得不抛弃很多美好的东西,为每一行代码做尽可能的优化,优化再优化,在内存使用和性能之间寻找平衡点..在j2me中我们不仅要减少对象的创建,即便是对象的引用也要做到能少则少。在这样的前提下开发出来的优秀的应有、游戏、软件,可以说比桌面平台上的开发更具备含金量。
第三一个,同样是移动开发面临的公共问题:多机型适配难度大。与桌面平台不同,移动设备之间的差异十分巨大,从硬件方面的屏幕分辨率,内存,处理器到底层的kvm实现,到支持j2me规范的程度,都不尽而同,这使得“一次编译,到处运行”的承诺在几乎成为笑柄。然而,无论如何,j2me仍然是移动领域跨平台的最佳选择。因为无论是智能手机还是传统手机,无论采用什么样的系统,它们都支持java,即便需要为多种进行做出更改,其代价也要小得多。同时,也考验编程人员的设计能力,一款设计良好的程序可以把适配的成本减低到最少。
最后一点问题是:kvm的bug多,不过这一点sun公司似乎没有什么责任。大家都知道java的发展分为两步走:规范和实现。sun和众多厂商制定规范,再由各个厂商根据自己的设备进行实现。然而,不知道是不是厂商的设计水平有限,目前很多机型的kvm实现都不能让人满意,bug简直是多如牛毛,比如最经典的nokia 6600,真正为它做过开发的人都应该深有体会。这又从另一个方面增加了开发者做多机型适配的难度。这些bug可以充分考验编程人员调试能力:)不过随着时间的推移,相信这一点会得到改进,nokia也一直在推出s60机型的软件升级版本以修正这些bug。不过对于采用封闭式操作系统s40机型,就无法可想了(事实上s40的bug也要少得多)。
综上,j2me并不像大多数人想象的那么“简单”,或者说,j2me的入门是简单的,但如要做到“精通”,还需要掌握各种具有移动开发特色的程序设计、调试技巧,并非一蹴而就之功。
闽公网安备 35060202000074号