当前位置:主页   - 电脑 - 程序设计 - JAVA
Java ME 技术:手机市场开发者所需要的一切
来源:网络   作者:   更新时间:2012-06-09
收藏此页】    【字号    】    【打印】    【关闭

  在介绍如何学习 Java ME 技术之前,有必要说明为什么能够从学习此项技术中获益。面对无数的技术选择,是什么使 Java ME 成为一项很好的投资?有三个显而易见的理由:

  经济因素:移动设备和 Java ME 均是不断发展的市场。

  入门费用低:对于在线阅读者,入门的成本为零。

  学习曲线短:Java ME 比其他 Java 平台小;因此,它的类和方法相对较少,一个开发者即可全部掌握。

  接下来,我们将逐一探讨这些理由。

  经济因素

  移动手持设备市场非常庞大并且在不断发展壮大。2007 年,该市场的年销售量首次突破十亿部,这意味着每天 270 多万部。

  下图显示了制造商从 1998 年到 2007 年的销售量(以千为单位)。数据来自 Gartner Group 公司站点公布的新闻简报。

  Java ME 技术:手机市场开发者所需要的一切

  某些观察数据以 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 亿美元的潜在市场中您能获得多少收益?下表列出了不同复合市场渗透水平下的收益。

  收益项目

  

有效的 Java ME 的比率销售渗透率收益(美元)注释
100.1100,000保守的
150.5750,000有吸引力的
251.02,500,000乐观的
352.07,000,000非常乐观,不再属于尾部。

  在此市场中,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 应用程序)跷尴叩绶绞讲渴稹?/p>

  更严谨的开发者可以采用 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 JSR描述
JSR 139 CLDC 1.1java.io各种 I/O 流
java.lang基本类型的包装器
java.lang.refReference 和 WeakReference 类
java.util日期和时间类,容器类
javax.microedition.io通用连接框架 (GCF)
JSR 118 MIDP 2.1java.lang应用程序资源文件
java.utilTimer 和 TimerTask 类
javax.microedition.io针对 http、https、ssl、TCP 和 UDP 套接字、串行端口和 Push Registry 的 GCF
javax.microedition.lcdui用户界面
javax.microedition.lcdui.game游戏用户界面
javax.microedition.media音频回放和媒体控制支持
javax.microedition.media.control同媒体播放器一起使用的控件
javax.microedition.midletMIDlet 执行环境
javax.microedition.pki安全连接的认证管理
javax.microedition.rms用于持久性存储的记录管理系统(Record Management System)
JSR 238 Mobile i18njavax.microedition.global本地特定内容、资源检索、文本字符串排序的格式化
JSR 75 PIM and Filejavax.microedition.io.file访问设备上的即时文件系统
javax.microedition.pim联系人,事件/日历和行程计划
JSR 82 Bluetoothjavax.bluetooth蓝牙客户机和服务器访问
javax.obex蓝牙对象交换
JSR 135 Mobile Mediajavax.microedition.media媒体播放器和控件
javax.microedition.media.control特定媒体控件
javax.microedition.media.protocol媒体流内容类型
JSR 172 Web Servicesjavax.xml.parsersJAXP Subset API
org.xml.saxJAXP Subset API
org.xml.sax.helpersJAXP Subset API
java.rmiJAX-RPC Subset
javax.xml.rpcJAX-RPC Subset Core API
JSR 177 SATSAjava.lang需要从 Java SE 平台得到的两个异常
java.rmiJava SE 平台的子集 —— 远程接口
java.security加密公钥对的生成和存储,大量可输出的加密操作。
java.security.spec密钥规范和算法参数
javacard.frameworkJava Card API 异常
javacard.framework.serviceJava Card API 异常
javacard.securityJava Card API 异常
javax.crypto加密操作
javax.crypto.spec密钥规范和算法参数
javax.microedition.apdu智能卡设备的 APDU 协议处理程序
javax.microedition.ioAPDU 和 Java Card RMI 的 GCF
javax.microedition.jcrmiJava Card RMI 连接的类和接口
javax.microedition.pki支持基础用户认证管理的类
javax.mimcroedition.securityservice生成应用程序级别的数字签名的类
JSR 179 Locationjavax.microedition.location包括地址、坐标、地标、位置和方位在内的位置类。
JSR 180 SIPjavax.microedition.sip会话发起协议管理
JSR 184 3D Graphicsjavax.miroedition.m3g包括场景图形和外部文件格式的 3D 所用的 API
JSR 205 Wireless Messagingjavax.microedition.ioSMS 和 MMS 连接所用的 GCF
javax.wireless.messaging消息创建、发送和接收
JSR 211 CHAPIjavax.microedition.content通过 URL、内容类型、内容处理 id 调用应用程序
JSR 226 SVGjavax.microedition.m2gSVG 图象和动画设计器
org.w3c.dom文档、元素和节点类
org.w3c.dom.events事件处理
org.w3c.dom.svg带 SVG 文档树的基本 SVG 数据类型和元素
JSR 229 Paymentjavax.microedition.payment金融事务管理
JSR 234 Mobile Media Suppjavax.microedition.ammsGlobalManager 和 Spectator 类、媒体、效果和模块接口。
javax.microedition.amms.control媒体管理的特定控制
javax.microedition.amms.control.audio3d3D 音频效果控制
javax.microedition.amms.control.audioeffect音频控件的效果控制
javax.microedition.amms.control.cameraCamera 控件
javax.microedition.amms.control.imageeffect视频和静态图象的效果控制
javax.microedition.amms.control.tuner无线电控制
JSR 248 MSA对所包含的 JSR的阐释

  结束语

  本文总结了学习和支持 Java ME 技术的商业原因,希望能启发您在不断发展的手机与嵌入式市场中进行探索和实践。

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明