J2ME学习之一:移动开发技术基础
3G(4G)时代的到来为无线移动技术的发展提供了前所未有的机遇
一 移动设备操作系统PK
市面上现有的手机操作系统,主要有Symbian、WindowsMobile、Linux、Palm、Balckberry和OSX六种。其中Palm资历虽老,但是在Palm公司出售PalmSource且在Treo700w选用WindowsMobile后,Palm已经成为昨日黄花,风光不在。RIM的Blackberry和Apple为iPhone量身定做的OSX属于专用系统,也不具备成为主流操作系统的能力。因此,手机主流操作系统,目前为 Symbian、Windows Mobile和Linux三足鼎立之势。
那么这三者,谁可以成为未来的主流操作系统呢?
Symbian是目前手机操作系统领域当之无愧的领头羊,根据CIDC 2006年12月的统计数据,截至2006年10月,中国智能手机市场,Symbian为63.2%、Linux为30.3%、WindowsMobile为5.4%。Symbian由几家大型移动通讯设备商共同出资组建,其股东包括诺基亚、索爱、松下、三星等主流手机厂商,由于Symbian从诞生之初,就定位为手机专用的操作系统,因此在对GSM、GPRS、CDMA等移动通信协议的支持上具有得天独厚的优势,技术稳定而成熟,目前诺基亚所有智能手机和索爱大多数智能手机,都采用了Symbian系统,可谓拥有“天时”。
而WindowsMobile作为软件巨头微软的掌上版本操作系统,在与桌面PC和Office办公的兼容性方面具有诸多的优势,得益于微软在PC操作系统和办公软件领域一统天下的气势,WindowsMobile可谓拥有“地利”。
至于Linux,由于具有良好的开放性,支持大多数主流处理器,具有天生的多用户多任务特点,能够降低手机厂商的成本,允许手机商根据实际情况,有针对性地开发适合自己的Linux操作系统,给与手机商更大的自由度,因此受到许多手机厂商的欢迎,摩托罗拉已经宣布未来手机将主要采用Linux系统,拥有越来越高人气的Linux,可谓拥有“人和”。
那么在三者鼎立的市场格局下,未来谁将成为最主要的赢家,拥有最大的市场份额呢? 智能手机市场还属于培育和快速发展阶段,产业链上参与的厂商还在不断丰富,充满变数。要想在市场上站稳脚跟,最终还是取决于市场,取决于应用,取决于来自产业链上各环节包括手机厂商、软件开发商、运营商的支持。可以预测的是,Symbian由于具有诺基亚和索爱等几家手机巨头的支持,凭借这些手机厂商的技术优势和市场经验,在未来的三年内Symbian仍然能够保持在手机操作系统的优势地位。但是,其市场份额会呈现逐渐下滑的趋势,Linux和WindowsMobile将会逐渐不断侵蚀Symbian现有的市场份额。
三者之中,Linux发展迅速。从产业链角度而言,Linux最大的优势是适合运营商整合终端的需求。在移动产业链领域,运营商是不容置疑的核心,在数字业务迅速发展的今天,运营商需要通过对终端的整合来更好地提供业务支持,以满足用户的多样化需求。欧美日韩等已经提供3G服务的国家,3G手机大都采用了运营商定制的方式。为了对终端拥有更强的控制能力,运营商迫切需要像Linux这样具有开放性的操作系统软件。诺基亚和微软对Symbian和WindowsMobile的强大影响和绝对控制力,将不可避免地与运营商的利益发生抵触,如果任由他们做大,这可能“挟天子以令诸侯”,影响运营商对终端的控制力,因此,Linux手机操作系统将会为运营商所推崇。
对于Linux而言,最大的威胁来自于内部,而到目前为止,还没有形成一个统一的被多方接受的手机Linux标准,一场争夺手机Linux主导权的角力正在如火如荼地进行,遗憾的是,至今还没有定论。
二 移动开发基础之PK
高通的BREW平台是一种为无线设备提供开放式标准平台的瘦应用程序执行环境,是无线应用程序开发、设备配置、应用程序发布以及计费和支付的完整端到端解决方案的一部分。完整的BREW解决方案包括面向开发者的BREW SDK (tm)(软件开发包)、面向设备制造商的BREW应用程序平台和移植工具以及由运营商控制和管理的BREW分发系统(BDS)。利用该系统,他们可以轻松地将开发者开发的应用程序投入市场并协调计费和支付过程。利用运营商基于BREW的服务,用户可以通过从运营商的应用程序下载服务器上无线下载应用程序来自定义手持设备。
BREW是一种独立于空中接口的技术,可以运行在诸多网络中。但目前来讲,由于 CDMA2000 1X的技术在现有的技术标准中是在商业运行中最为稳定和成功,并经过多次验证。BREW在CDMA2000 1X网络中可以充分利用其高速的数据传输速率,为最终用户带来极具冲击力的用户体验。即:与芯片级电话功能的紧密集成,更高地展现声音和动画功能,用C/C++编写的应用程序,运行起来速度更快,BREW扩展技术支持用Java和Flash等制作的应用程序端对端的商业模式提供透明的计费和支付纪录,并可通达全球市场开发商,可以通过联通博路无线技术有限公司从高通和联通获得支持。
由于BREW平台是独立于空中接口的技术,所以BREW与任何网络的结合都非常平滑。同时,它又是一个端到端的解决方案,特别注重满足整个价值链的所有要求。BREW平台包括针对运营商的BREW分发系统,针对开发商的SDK(软件开发工具包),针对终端厂商的移植工具包,和BREW计费系统。BREW使中国联通能够为其用户提供不断丰富的应用。到目前为止,中国联通基于BREW平台所开发的商用程序包括: Adventure(环球历险记)、Any Flash (安凯软件)、 City Online(都市在线)、 E4E Stock(股票)、 Hit Submarine(决战四大洋)、 Instant Weather(天气快报)、 Mobi Escape(莫比大逃亡)、 Suc Esc(星际生存)、Yao Ming Basketball(姚明篮球)等。
为了应对移动数据的发展,推进无线电子商务等业务的发展,J2ME(Java 2 Micro Edition)即用于嵌入式系统的Java被引入无线领域。随着J2ME的应用,它为移动互联引入了一种新的模型,即允许手机可以从互联网上下载各种应用程序,并在手机创造可执行环境离线运行这些程序。由于定义了可执行程序下载的标准,并在手机上创立了可执行环境和程序开发语言,由此,在移动通信业第一次为软件开发商创造了巨大的商业机会,手机用户在得到丰富应用体验的同时,也大大提高了运营商的网络流量。
J2ME的出现实际上是Java技术的回归,作为Java 2平台的一部分,J2ME与J2SE、J2EE一道,为无线应用的客户端和服务器端建立了完整的开发、部署环境。由于专门针对多样化的嵌入设备和消费电子设备,J2ME的结构与传统的编程序语言和规范有很大的不同,它是由配置(Configuration)、概要(Profile)和可选包(Optional Package)三要素构成。J2ME技术由一个虚拟机和一组API组成,这组API适合于为消费和嵌入式电子设备提供经过剪裁的运行环境。J2ME主要有两种组件:配置(configuration)和概要(profile)。J2EE的一个关键优点是它能同时为多种连网的便携机、台式机或其他工作站和服务器提供服务,无论运行在这些客户机上的软件是Java applets 、独立的Java程序、HTML浏览器还是本地的应用程序,它都可以同时支持。利用J2ME,这些企业系统也可以直接与各种电子设备进行通信。
1999年,Sun公司将广为普及的Java技术架构进行了重新定义,J2ME作为Java技术在移动电话等小型设备的版本应运而生,它针对屏幕、电能和内存等资源有限的移动设备进行了优化和定义,为了解决无线设备多样化的矛盾,Sun依照各种设备的资源特性将J2ME技术架构分为Java Virtual Machine(JVM)、配置(configuration)和说明(profile)三层,然后再进一步细分,这使J2ME能够在每一类设备的限制下工作,而同时提供最低限度的Java语言功能性。
Microsoft(r) .NET 是Microsoft XML Web services平台。 XML Web services允许应用程序通过Internet进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。 Microsoft.NET平台提供创建XML Web services 并将这些服务集成在一起之所需。对个人用户的好处是无缝的、吸引人的体验。
.NET体验:.NET体验是相当个性化的,集成的最终用户计算交互,它们通过新型智能设备提供的连接的 XMLWeb 服务来实现。从技术层面上讲,.NET体验就是XML Web服务与(在适当时)本地应用程序代码的结合。
从根本上讲,Microsoft (r) .NET是关于使技术为人们所用,而不是强制个人适应其计算机的限制。利用.NET,无论何时何地,您总能连接到您首选设备上的信息。利用.NET,您可以保护您的个人信息和企业数据,同时允许有您的授权的他人连接到这些信息。
.NET框架:.NET框架是一个用于生成、部署和运行XML Web服务及其他应用程序的环境。它包含三个主要部分:公共语言运行库、框架类和ASP.NET。.NET框架压缩版是伴侣结构,它有一套编程接口,以供开发人员开发面向智能电话和PDA等移动设备的软件。
.NET平台:.NET平台是一组开发工具和操作系统集,用来生成、公开和消费XML Web服务,通过智能设备实现个性化的集成Web。它由四部分组成:.NET框架和 Visual Studio.NET ,服务器结构,构造块服务,智能设备软件.
三 J2ME基础
a) j2me是sun公司专门为开发小型的资源受限的消费型电子设备的应用程序所提供的java版本,虚拟机大小仅仅数百KB,因此又被称为”K-java”。
b) j2se:实现了java开发所有的核心类库
j2ee:除了支持标准的核心类库外,还增加了支持企业应用开发的扩充类库
j2me:支持标准核心类库的子集合,还增加了支持嵌入式系统的扩充类库
四 J2ME技术框架
由于移动设备具有各不相同的硬件配置,无法统一规范,所以定义了一种灵活的层次结构来规范众多的移动设备。
层次:主机操作系统、配置(JVM) 简表 厂商可选包
配置:针对某一类设备的最小的java平台,该层次定义了硬件所必须具备的能力了,定义了核心类库和java虚拟机功能(CVM或者JVM),常用的配置有CDC和CLDC两种。从某种程度上说,一个配置定义了Java 平台功能部件和库的共同性,开发者可以假设这些功能部件和库在属于某一特定类别的所有设备上都是可用的。用户不太会见到这一层,但它对简表(profile)实现者非常重要。
简表:定义了特定系列设备上可用的应用程序编程接口(API)的最小集。简表在一个特定的配置上面实现。应用程序是针对特定的简表编写的,因此可以移植到支持该简表的任何设备上。一个设备可以支持多个简表。用户和应用程序供应商看到最多的就是这一层。(MIDP就属于这层,为移动信息设备简表)
MIDP连同功能较低的CLDC配置一起为开发移动设备应用程序提供了完整的JAVA平台。
厂商可选包 不同的设备经常有一些特殊的功能部件,厂商可选包定义了架构在CLDC之上针对特定部件的API,个人可以认为是对MIDP的扩展和补充,通常是因为硬件具有充分的能力可以完成规格之中所制定的功能。
五 JTWI标准
目前所有标示可以支持Java的手机,所支持的都是MIDP,几乎所有的无线通讯厂商皆采用MIDP作为其开发程序的标准。在MIDP 1.0的时代,由于规格上本身的功能不足,使得许多厂商不得不加入自己专属的API,例如震动、背光、声音等扩充功能(例如:Nokia UI API),以弥补MIDP平台的不足。
到了MIDP 2.0,增加了许多众所期盼的功能,但是,即使规格更清楚了,即使很多新功能都已经由JCP制定成标准的Optional Packages,这些问题依然无解。市面上的MIDP平台仍然处于混乱状态。开发者必须在执行时期侦测各种专属API和Optional Package的存在,这会增加多余的程序代码。平台的混乱会造成在某个装置上可以顺利安装及执行,而到了其它装置时,有可能无法执行,甚至有可能连安装都有问题,所以开发者通常要开发好几种版本的MIDP应用程序供各种厂牌、各种型号的装置使用。
为了解决上述问题,进一步提高MIDP应用程序的可移植性,Sun Microsystems以MIDP 2.0规格为核心,设计了JTWI规格。未来的无线通讯平台,将不会只有符合MIDP 2.0规格,而是必须要符合JTWI规格。这将是J2ME软件在可移植性上的一大突破。JTWI(Java Technology for Wireless Industry)是一个统合性的规格,其目的是为了确保MIDP软件的可移植性。所以JTWI规格除了规范无线通讯平台(特别是手机)所必须支持的 J2ME标准之外,也对既有规格中模糊不清的地方与以加强。所以新款的手机为了加强移植性,都会支持JTWI标准。JTWI只是一个统合性的规范,并没有制定任何新功能,目的只是要统一当前平台混乱的现象,让J2ME应用程序更具可移植性。JTWI主要分成几个部分:
1 .规定平台必须支持的API。
2 .统一的应用程序执行环境。
3 .既有规格的理清与加强。
在规定平台必须支持的API的部分,JTWI规定至少必须支持CLDC 1.0、MIDP 2.0以及WMA 1.1:
所以,只要厂商宣称支持JTWI平台,那么代表一定支持CLDC 1.0、MIDP 2.0以及WMA 1.1规格之中的所有功能。另外,厂商可以根据装置本身的能力,将CLDC 1.0提升成CLDC 1.1,可以加入MMAPI 1.1。因此实际上JTWI平台会有一下几种组合方式:
其中,CLDC 1.1 + MIDP 2.0 + WMA 1.1 + MMAPI 1.1是最完整、功能最强平台。
在统一应用程序执行环境方面,过去让J2ME应用程序开发者最为头大的问题有以下几项:
● 应用程序的大小可以多大?
● 执行时期的内存有多少可以使用?
● 有多少内存空间可以作为永久储存之用?
由于规范中对于J2ME应用程序本身的大小和执行环境没有很详细地规范,使得每家厂商都有自己的规范,比方说Nokia限制应用程序最大只能30 KB,Motorola则可以支持50 KB以上的应用程序。这些规范都严重地困扰着开发人员。这些问题在JTWI之中都获得改善。
JTWI 定义了应用程序的标准大小(Standard-size Application)。JTWI规定,可以执行J2ME应用程序的行动通讯装置,至少可以容许大小为64 KB以上的程序主体(JAR文件)、5 KB以上的应用程序描述文件(JAD文件)、以及30 KB以上的永续储存空间、执行时期的内存(Heap Memory)为256 KB。上述大小只是底线,厂商可以视装置的实际能力支持更大的内存空间。标准应用程序大小(Standard-size Application)将成为一个计算用的单位,举例来说,厂商会说这个装置可以安装20个标准应用程序,开发者所撰写的程序可以说这个程序需要占掉3 个标准应用程序的空间。
至于对既有规格的理清与加强的部分,我们将在往后章节一一说明。最重要的一点是,JTWI规定,该装置所支持的任何媒体格式(例如图片、声音、影像等)都应该能够使用HTTP 1.1获取,也就是说,存取这些媒体时所使用的URL都必须能够接受http作为存取的通讯协议。
六 J2ME之学习要点
(1)打好java基础,面向对象编程,事件处理,线程等 这是本质
J2ME中使用到的Java基础知识:
1、Java语法基础:包括基本数据类型、关键字、运算符等等
2、面向对象的思想:类和对象的概念,继承和多态等等。
3、异常处理
4、多线程
J2ME中没有用到的Java基础知识:
1、JDK中javac和java命令的使用
2、Java基础中的很多类在J2ME中没有,或者类中的方法做了大量的精简。所以建议在J2ME中熟悉类库。
3、Applet、AWT、Swing这些知识在J2ME中根本使用不到。
(2)了解WTK与厂商SDK的区别
对于J2ME爱好者来说,基本上大家都是从SUN的WTK(J2ME Wireless Toolkit)开始的,但是对于实际应用来说,仅仅使用WTK是远远不够的,所以在学习过程中,必须完成从WTK到SDK的跨越。
厂商SDK最简单的理解就是在WTK的基础上增加了自己的模拟器和自己的扩展API。也就是说,你在使用厂商的SDK时,可以使用厂商的扩展类库,例如Nokia的UI类库,和厂商自己的模拟器而已。每个厂商的扩展API都不多,而且不尽相同。
厂商SDK的下载地址?
·Nokia
Nokia不愧为手机行业的老大,对于j2me的支持也是一流的,有专门的网站提供SDK和各种文档说明。
网址是:http://forum.nokia.com.cn/sch/index.html
·Siemens
Siemens对于J2ME的支持也不错,它提供了SDK,模拟器需要独立安装。下载地址如下:
https://communication-market.siemens.de/portal/main.aspx?LangID=0&MainMenuID=2&LeftID=2&pid=1&cid=0&tid=3000&xid=0
·SonyEricsson
SonyEricsson SDK以及自己的模拟器,下载地址为:
http://developer.sonyericsson.com/site/global/docstools/java/p_java.jsp
http://mobilityworld.ericsson.com.cn/development/download_hit.asp
·Motorola
Motorola提供了专门的SDK,内部包含模拟器,下载地址为:
http://www.motocoder.com/motorola/pcsHome.jsp
·SamSung
SamSung也提供了专门的SDK和模拟器,下载地址为:
http://developer.samsungmobile.com/eng/front_zone/bbs/bbs_main.jsp?p_menu_id=1500
·NEC:
NEC也提供了集成模拟器的SDK,下载地址为:
http://www.nec-mfriend.com/cn
(3)强调最后的真机测试
来自:http://blog.csdn.net/cz_hyf/archive/2007/10/12/1821465.aspx