2006年9月4日

J2ME 开发上手指南

概述

J2ME 是 Java 2 Micro Edition 的缩写,最新的官方名称是 JavaME(Sun 似乎很喜欢改名字,从 Oak 到 Java,从 Java 到 J2?E,再到现在 Java?E),可 以认为是 Java 为移动设备(手机、PDA 以及其它计算能力和能源供应都受限的设备)剪裁的一套 API。基本上,如果有 J2SE 的开发经验,上手 J2ME 会非常快。除了个别类或方法,J2ME 基本上是 J2SE 的一个子集。Java 在保持语言体验统一性这一点上,做得确实非常好。

J2ME 采用比较混乱的方式来描述自身的版本。整个 J2ME API 被划分为 Configuration 和 Profile。而 Configuration 和 Profile 又各自拥有其版本。关于混乱现象的解释,一两句话难以说清,有兴趣的同学可以随便抓本 J2ME 的书过来,第一章必然有大篇文字解释这些匪夷所思的现象[1]。

J2ME 最吸引人的地方(或者说是吸引我的地方),就在于其针对的平台计算能力有限。这并不是受虐。运算速度、可用内存、以及最终生成字 节码尺寸的限制使得 J2ME 应用通常比较小巧玲珑。以早期支持 J2ME 的设备为例,可用的 Heap不过 200k,最终生成的代码(包含各种资源文件,如图片)不得超过 64k,这就使得面向这种平台开发的 J2ME 应用规模基本上不会超过一个人的能力范围。这样可以有效避免协作、过程等等令人不胜其烦的软件工程概念的引入,从而使开发人员重新回归到编写代码的乐趣中去。

开发环境

抛开感情因素,Windows 是进行 J2ME 开发的首选平台。为什么呢? 首先,开发 J2ME 所必须的开发包,只有 Sun 官方的 WTK(Wireless ToolKit)[2]对 Linux 提供了良好的支持。其它如 Nokia,与 Windows 版本的更新速度来看,其 Linux 版本更新相当慢且陈旧,而其它如 SonyEricsson[3] 和 Motorola[4] 则根本没有 Linux 版本的开发包。 其次,数据线。J2ME 的开发是离不开真机测试的。模拟器上在完美的代码到了真机上还是有可能运行得一塌糊涂。因此开发人员应该要有一个比较便捷的将 J2ME 部署到手机的途径。这些途径当中,数据线显然首选。而众多的数据线中,提供 Linux 支持的几乎没有。

必备软件

必备软件只有一个,那就是开发包。如 Sun 官方的 WTK,Nokia 的 Carbide.J[5],或者其它同类软件。以 WTK 为例,KToolBar 提供了基本的创建项目、编译、运行、调试、打包的环境,而 J2ME 代码,则可以用任何文本编辑器来写。

可选软件

用优秀的 IDE 开发 J2ME 可以事半功倍。目前绝大多数的 J2ME 程序员都使用 eclipse[6],IBM的开源 Java IDE。通过 eclipse 提供基本的 Java IDE 功能(如自动代码提示、重构、build 等等),通过 eclipseme[7] 插件管理众多 WTK,可以很方便将程序在不同的模拟器上进行测试。

另外,Sun 主推的 Netbeans[8] 也有很多人说好用。可惜我没有用过,不好妄下结论。不过曾经见过 Netbeans 的截图,甚至可以直接生成 J2ME 项目的页面流图,确实惊艳。需要注意的是 Netbeans(目前稳定版本5.0)也需要另外安装 MobilityPack 才行。最新 的消息刚刚提到,Sun 把 MobilityPack 开源了。

最后,值得一提的是,Java 的字节码很容易被反编译。因此几乎所有发行的 J2ME 应用都需要经过混淆。目前,市面上的非商业混淆器似乎只剩下了一个 ProGuard[9],不过值得欣慰的是,这款开源的混淆器很好用,eclipseme 也对其进行了很好的支持。

常见问题

svn+ssh

eclipse 已经集成了版本控制的能力,其默认集成的是 cvs。当然,subclipse 插件给 eclipse 提供了同样优秀的 svn 集成。通常,使用 eclipse 来进行各种 svn 操作是没有问题的。但是实际使用中发现,svn+ssh 的项目在 windows+eclipse 环境下无法正常工作。


参考资料

[1] SymbianOS J2ME编程指南

[2] Sun J2ME

[3] SonyEricsson Developer World

[4] MOTODEV

[5] Forum NOKIA

[6] Eclipse.org home

[7] EclipseME Home Page

[8] NetBeans Downloads

[9] ProGuard

发表评论