在介绍如何学习 Java ME 技术之前,有必要说明为什么能够从学习此项技术中获益。面对无数的技术选择,是什么使 Java ME 成为一项很好的投资?有三个显而易见的理由: 经济因素:移动设备和 Java ME 均是不断发展的市场。 入门费用低:对于在线阅读者,入门的成本为零。 学习曲线短:Java ME 比其他 Java 平台小;因此,它的类和方法相对较少,一个开发者即可全部掌握。 接下来,我们将逐一探讨这些理由。 经济因素 移动手持设备市场非常庞大并且在不断发展壮大。2007 年,该市场的年销售量首次突破十亿部,这意味着每天 270 多万部。 下图显示了制造商从 1998 年到 2007 年的销售量(以千为单位)。数据来自 Gartner Group 公司站点公布的新闻简报。
某些观察数据以 2001 年作为参考年份。2007 年市场的总销量比 2001 年增加了 2.89 倍。这意味着从 2001 年以来,年复合增长率超过 18%。在 2007 年,只 Nokia 一家的销售量就超过了整个行业在 2001 和 2002 两年的销售量之和。至少可以认为,从销售量的观点来看,移动电话市场是一个高速成长的市场。 在“长尾理论” 中,Chris Anderson 阐明了互联网经济中的金钱从何而来。Anderson 的一个观点是 80/20 法则的变易。他发现在细分市场上,小部分供应商集中了大部分的销售量。然而这个观点并不意外,真正深刻的见解在于 Anderson 的深入研究:他继续调查在一个足够大的市场中,80/20 法则的另一方面(20/80 这一方面或者说尾部)发生了什么。尾部被利基(Niche)应用和内容所占据。例如,苹果公司计划在 2008 年占据手机销售市场 1% 的份额。这 1% 代表 1 千万部 iPhone 或大约 45 亿美元的营业收入,仅凭此一项就足以进入 世界财富 500 强。Anderson 的建议是识别利基、为之创建服务和内容、使自己容易被找到、并让支付和配送尽可能的高效。 当手机价格达到市场平均售价时,手机软件市场要比手机市场小,但拥有如此巨大的手机数量,即使是最保守的销售收益也能够快速积累。关于收益的一个简单模型: 收益 = 销售量 x 有效的 Java ME 的比率 x 销售渗透率 x 每部手机的收益 此处“有效的 Java ME 的比率”表示售出的所有手机中能够使用您的 Java ME 应用程序的手机所占的比率,“销售渗透率”是指在有效的 Java ME 设备中已经购买了您的应用程序的手机比率。假设售出的手机是 10 亿部,每部的收益是 1 美元,则公式变为: 收益 = $1,000,000,000 x 有效的 Java ME 的比率 x 销售渗透率 公式计算出:在 10 亿美元的潜在市场中您能获得多少收益?下表列出了不同复合市场渗透水平下的收益。 收益项目
在此市场中,1% 的 1% 代表 10 万美元的收益,这足以吸引对服务利基市场(即长尾中的某处)有兴趣的小型开发团队的注意。收益:由于 Java ME 市场的总体规模非常大,所以在长尾中的潜在收益非常可观。挑战是为利基市场识别并创造应用程序、帮助利基市场找到应用程序(搜索 = Google 及其他)以及尽可能地参与多个利基。 入门的成本 进入 Java ME 开发者世界的成本是零。您还期望什么样的与众不同呢?备受赞誉的 NetBeans IDE 可以从 netbeans.org 上与移动程序包一起获得。主要设备生产商都提供了免费的开发工具和文档,但是其中有一些是需要注册的。 在开始学习之前,您将需要一个 Windows 或 Linux 环境(真实或虚拟的),以便运行带移动程序包的 NetBeans IDE 和 Web 服务器,最好使用有效的 WebDAV(基于 HTTP 的 XML)为应用程序提供无线电方式 (OTA) 部署。如果没有自己的 Web 服务器,可以使用一些 Java ME 应用程序托管站点 —— GetJar.com、HostJ2ME.com 和 JuegosEnMovil.com 这三个站点通过 Google 可以很容易找到。这些站点允许开发者将自己的应用程序上传到配置好的服务器上,以实现 MIDlets(MIDP 应用程序)的无线电方式部署。 更严谨的开发者可以采用 CVS、Subversion 或 Mercurial 等源代码管理(source code management, SCM)系统——所有这些都是免费的并且集成在了 NetBeans IDE 中。 对于那些寻求更简化的开发环境的开发者,Sun 为 CLDC(连接受限设备配置)提供了 Sun Java 无线工具包(有时称作 WTK 或 无线工具包)。WTK 提供了相同的 JSR(Java 请求规范)集和 NetBeans 模拟器,所以可生成应用程序的广度没有任何变化。不同之处在于 IDE 或 WTK 被描述成一个工具栏 —— 它不包括选项左置的集成编辑器。它包括管理项目、提供自动生成、以及执行和调试环境。 学习曲线 如果您是六百万 Java 开发者中的一员,那么您已经具备了 Java ME 平台开发的知识。事实上,要在 Java ME 平台进行开发,你还需要将一些学过的东西忘掉。 Java ME 平台最初从删除了内存计算密集型类和方法的 Java 2 Standard Edition 1.3.1 演变而来。那些与 Java ME 的目标市场无关的类也被去除了。一个关于如何为 Java ME 平台而修改类 JDK 1.3.1的例子可以参考类 java.util.Date。在 JDK 1.3.1 中,java.util.Date 包含 6 个构造函数 (constructor) 和 28 个方法 (method),在 CLDC 1.1 规范中,相同的类已将构造函数和方法分别减至 2 个和 5 个。 从 Java SE 到 Java ME 环境,最大的变化是用户界面 (UI)。Java SE 为 UI 包含了 AWT(Abstract Window Toolkit,抽象窗口工具包)和 Swing 包,而 Java ME 环境包括了javax.microedtion.lcdui (LCDUI)。LCDUI 是一个更加简化的 UI 工具包 —— 它去掉了布局管理,并拥有更少的小部件。 Java ME 技术平台包括 83 个 JSR,其中大约一半已经获得了 Java 社区组织 (JCP) 的审核批准。每个设备都支持许多的 JSR。问题是并非所有的 JSR 都会获得全部平台的支持。那么开发者会问: 哪些 JSR 可以认为是当前有效的? 检测到的特定 JSR 是否有效? 如果需要的 JSR 当前无效怎么办? 问得好。 从 2006 年 12 月开始,诸如“学习什么?”之类问题的答案都汇集在《JSR 248 Mobile Services Architecture》(MSA) 中。 MSA 是一个伞状标准,它定义了一套 JSR 集合,而这个集合定义了一个足以开发可视的、高技术含量应用程序的先进平台。 Sun Developer Network (SDN) 有一个 MSA Overview,其中包含着到那些包名、系统属性和技术文章里含有”JSR”的相关页面的链接。主要的制造商目前都提供 MSA 设备,并且每时每刻都有新的制造商加入此行列。 下表定义了所有在 MSA 设备上可用的包,以及关于每个包的作用和内容的简短描述。 MSA 包和类
结束语 本文总结了学习和支持 Java ME 技术的商业原因,希望能启发您在不断发展的手机与嵌入式市场中进行探索和实践。 (责任编辑:admin) |