编者按:当语言技术走向前台,成为通信应用“解决方案”的一种时,Java与BREW之争也日益明显。今年初,中国移动联合移动设备商、SP等举办了Java大赛,并且正在或将要举办类似活动,以大力推广Java在手机、互联网等通信领域的应用。另一方面,从10月15日开始,中国联通和美国高通公司合资成立的联通博路公司在全国推广基于BREW的应用大赛,此举吸引了包括媒体在内的多方力量的关注。
针对这一形势,《计算机世界》组织了一个小型专题,就Java和BREW在通信领域应用的趋势探讨。当Java和BREW都有理由宣扬自己的阵营已经确立时,虽然我们还不知道这一场较量谁会更占优势,但关于技术的讨论,本身就是一个必要。在这两篇针锋相对的文章背后,不仅是两个作者的工作差异,更多是两大开发群体之间的对垒。
在经历了互联网和电子商务的淘金时代后,Java已经准备好向通信领域发展,而且巨大的商业利益已经显现出来。据Ovum研究公司预测,到明年初,Java技术将应用于2.67多亿部移动设备,而Java手机目前已然在北美和欧洲大行其道。更有分析公司预测,到2007年,几乎100%的手机都将采用Java技术,Java已经回归到嵌入式无线通信领域。
Java在嵌入式通信领域的应用与发展颇具传奇色彩。1991年出现的Oak(Java语言前身)技术,最初的设想是在冰箱、电视等信息家电产品中嵌入可编程通信控制平台,以实现这些设备间的数据通信。然而在当时,Oak并没有受到开发者所希望的欢迎,整个市场对这一新技术语言的重视远远不够。
1995年后全球爆发的互联网络信息革命为Java带来机会,Java成为众多编程语言和编程技术中的黑马,迅速成为全球各大IT厂商应用开发平台的新贵,不仅一跃成为桌面应用(J2SE)平台,更在很短的时间内成为企业级应用(J2EE)开发平台。
如今, Java已经回归到嵌入式无线通信领域,并且这次是有备而来。
从Sun到与Sun无关
在1999年的JavaOne大会上,Sun Microsystems 介绍了第一个袖珍版 Java和第一个 KVM以及相关的类库,并于同年6月向Java团体宣布了Java的第一个Java 2 Micro Edition(J2ME)版本,为开发者提供了一个无线开发工具包Wireless Toolkit(WTK),WTK可以让开发者编译(compile)、打包(package)、部署(deploy)和执行(execute)J2ME应用,这一工具包还包括一个仿真测试环境,该环境用于在资源受限的设备上对J2ME应用进行模拟运行,这些仿真模拟器可以被当做插件向通信设备厂商提供,同时由这些设备商向消费者提供,例如摩托罗拉、诺基亚等。
遗憾的是,WTK中并不包含IDE开发环境和Debug调试环境,笔者认为,之所以出现这样的结果,主要原因不是Sun或JCP缺乏设计优良IDE环境的能力,而是Sun发布J2ME平台规范后,全球各软件工具开发商“百家争鸣”推出各自的IDE开发环境,虽然这样防止了IDE技术的企业垄断,却也忽略了市场和用户的个性需求。况且,自Java问世以来也没有正式提供IDE开发环境的先例。这样做的不利在于多版本差异,但也有好处,没有正式的IDE开发环境,并不意味着开发者没有开发环境,相反,专业开发者有更大的选择余地来选择合适的IDE,甚至从Opensource中获得免费的Wireless IDE工具,当前一些主流Java开发工具已经都有相关插件支持无线开发环境,例如Sun ONE Studio、JBuild、Oracle9i JDeveloper等。
从Sun发布袖珍版的Java技术标准,到IDE多种类局面出现,Java正走着一条整个产业化前进的道路。
Java技术的典型代表J2ME
Sun 将 J2ME 定义为“一种以广泛的、以消费性产品为目标的、高度优化的 Java 运行环境,这些环境包括寻呼机、移动电话、可视电话、数字机顶盒和汽车导航系统等。”但由此也可以明显看出,要为所有这些设备定义一种最优化、或者接近最优化的单一技术是不可能的,因为这些设备的处理器能源、内存、固定存储器和用户界面的差异都非常之大。为解决这一问题,Sun 公司将适合 J2ME 的设备的配置分成各个部分,然后再进一步细分,其他品牌的Java技术也采用了大体相同的方式。
在第一步的划分中,Sun 将各种设备按照处理性能、内存和存储能力划分成CDC和CDLC两大类,需要说明的是,这一分类方法并没有考虑应用者最终的使用目的。在这一基础之上,Sun定义了 Java 语言的一个剥离版本,它能够在每一类设备的限制下工作,也包括通信设备,同时提供最低限度的 Java 语言功能性,这一点,对于作为消费类产品的终端通信设备而言,非常重要。
移动信息设备简表(MIDP)是J2ME补充CLDC配置的Java API集合,也是基于CDC和CDLC的最上层。MIDP为开发者提供了计时器、简单固定存储器、通过 HTTP 的连网等常用API,开发者可以通过MIDP提供的界面快速开发UI元素来构造J2ME应用,这些元素包括常用的:Alert 用于通过屏幕向用户显示有关异常情况或错误的信息;Choice 用于实现从既定数量的选项中进行选择;ChoiceGroup 可提供一组相关选项;Form 作为其他UI 元素的容器;List 提供选项列表;StringItem 提供只显示(display-only)字符串功能;TextBox 允许用户输入和编辑文本的屏幕显示;TextField 允许用户输入和编辑文本,多个 TextField 可放到一个 Form 中;DateField 作为可编辑组件,用于表示日期和时间信息,DateField 可以放到 Form 中;Ticker 用于文本的可滚动显示等。
当开发者对界面控制有较高要求时,可以使用Canvas技术来实现图形化的界面输出,利用Double buffering技术实现流畅的动画处理效果。MIDP还提供了记录管理系统RMS(Record Management System),RMS的记录管理系统存取数据到移动设备中。在CLDC中提供一个通用的连接框架(Connection Framework),我们可以使用该连接框架从Web端发送和接收数据,这一连接框架实现Http1.1协议。在企业级应用开发中,HttpConnection或Socekt经常会和Threads技术应用在一起,以提供高性能的企业数据连接。熟悉Java Serverlet的开发者在编写J2ME程序时并不会感觉环境的陌生,因为J2ME为每个应用提供了类似于Serverlet的有生命周期管理的MIDlet,每个J2ME应用都必须扩展MIDlet类,以便能够让应用系统控制它。Model-View-Controller,(MVC,Model为维护应用模型的状态,View指通过图形或非图形模式表现Model,Controller接收外部指令更新Model或View)J2ME的开发者必须参照MVC设计模式,因为整个设计需要在完成最后UI步骤之前完全测试通过商业逻辑部分,以保证在仿真运行环境下的联调焦点放在UI控制上。
Java之于GPRS
GPRS是按欧洲电信协会GSM标准定义的封包交换协议,可快速接入数据网络。它在移动终端和网络之间实现了“永远在线”的连接,而网络容量只有在实际进行传输时才被占用。现在,我们已经习惯将移动通信分为三代。第一代是模拟的无线网络; 第二代是数字通信,包括GSM、CDMA等;第三代是分组型的移动业务,称为3G,TD-SCDMA、WCDMA和CDMA2000的所谓3G之争,已经为常人所熟悉。
GPRS是通用无线分组业务的缩写(General Packet Radio System),作为介于第二代和第三代之间的通信技术,通常也被当成2.5G,目前正通过升级GSM网络实现它。
为了推动GPRS,爱立信、PALM、IBM、Oracle和Symbian于1999年10月成立GPRS Application Alliance,即GAA。J2ME技术让移动设备拥有了自动下载、部署和运行Java应用的环境平台,将复杂的程序处理从传统的PC系统搬到轻巧、随身携带的便携移动设备中,更为关键的是,J2ME的推出引发了手机等无线终端的增值业务,既而逐渐培育出一个利润丰厚的无线应用行业。由于技术开放、标准容易统一的特性,使得Java技术的上下游技术以及设备提供商都能够准确找到共同的利润点,并加以放大,Java为全球无线增值业务提供了一个绿色的生态链。
目前,Java结合成熟的GPRS通信网络,已经开发出多种增值无线应用,同时也成为普及GPRS网络的关键应用技术。分析当今主流的应用成果,大致可归纳为娱乐游戏、位置服务、信息点播、电子商务、公共设施、企业应用、开发工具等几大类。
游戏娱乐类 这是当前应用已经比较普遍、应用种类也较繁多的一种应用。通过GRPS网络,可以让支持Java的手机用户下载各种小游戏、视频、图片、电子小说等电子消费类J2ME应用,成为电信运营商推动增值服务的核心业务。
位置服务类 这一类服务的本质是,利用J2ME的图形处理能力绘制全球定位系统并反馈位置数据,从而为特殊行业用户提供可视位置服务。
信息点播类 通过Http连接服务,以J2ME应用实现新闻、证券消息、天气预报、生活等信息资讯的点播服务,这一类服务也成为运营商下一阶段大力推广的业务模式。
电子商务类 通过J2ME提供的信息安全、传输技术实现手机银行、无线交易、股票查询等应用系统,当前,无论是使用Java还是Brew的电子商务类应用都还没有广泛推广开来,这与整个消费市场信用度有关,同时,在涉及到银行与通信两个领域的合作时,有很多的问题还有待进一步解决,有些还会涉及到法律层面的认可问题。
公众设施类 通过GPRS网络连接到数据服务中心,对数据进行无线远程操作,这类系统较为常见的有交通车辆信息查询系统、身份证查询系统等。
企业级应用类 结合企业内部业务管理系统实现无线办公环境,这类系统主要针对企业用户,应用需求比较分散,常见的有接入到企业内部办公系统数据库的无线办公自动化系统(例如炎黄盈动的iWork/OA)、业务信息处理系统,就市场发展来看,基于Java技术的企业级应用也会在未来成为中国移动运营商重要的收入来源之一。
开发工具类 为实现J2ME应用而单独提供的各种中间件、数据库、Framework等,例如Sybase、Oracle的J2ME数据库、XML解析器。
J2SE、J2EE和J2ME作为Java在三个不同方向的开发平台,运行在资源受限设备上的J2ME平台可以方便地与J2SE、J2EE应用进行通信,甚至可以共享J2EE或J2SE应用的类程序,这降低了传统Java程序向无线通信领域移植的难度,同时遍布全球的上百万Java程序员及积累了近10年的Java技术资源,也降低了J2ME的入门难度,成为J2ME的支持者。从2003年的JavaOne大会可以看出,包括Sun在内的众多公司正将业务瞄准J2ME市场,例如Sun就推出了新的Sun开发商网络移动项目(Sun Developer Network Mobility Program),为项目成员提供完整的资源包,用于创建、测试和验证基于J2ME技术的应用,并将这些应用通过市场提供给消费者和企业,一旦具备市场环境条件,Java开发者大军将会迅速向J2ME挺进。
正是这些因素的影响,使得目前中国移动当前推动的各种手机应用和中国联通与美国高通公司联合推动的Brew平台形成对垒局面。无论掌声来自何方,受益的将会是我们大众消费者。
相关链接
CLDC
J2ME平台定义了两个底层配置CDC和CLDC。其中,CDC(Connect Device Configuration,连接设备配置)规范用于比PC机小、但同时具有多于 512K内存的设备,这一类设备包括互联网络电视系统、机顶盒、POS系统、汽车导航以及娱乐系统,这些应用被运行在JVM虚拟机中。
CLDC(Connected Limited Device Configuration ,有限连接设备配置)规范应用于内存128K到 512K之间的消费类电子设备, 这一类别中典型的代表设备包含呼叫器、移动电话、个人数字助理PDA和POS终端等。这些应用通常在移动设备的KVM虚拟机中运行。
从J2ME类库发展来看,CDC配置的类库包含了J2SE1.3应用程序接口类库的一个子集,并针对资源受限设备做了扩展。由于应用于CLDC配置的设备资源更受限制的原因,CLDC配置类库实际上完全是CDC类库的子集。
针对这一形势,《计算机世界》组织了一个小型专题,就Java和BREW在通信领域应用的趋势探讨。当Java和BREW都有理由宣扬自己的阵营已经确立时,虽然我们还不知道这一场较量谁会更占优势,但关于技术的讨论,本身就是一个必要。在这两篇针锋相对的文章背后,不仅是两个作者的工作差异,更多是两大开发群体之间的对垒。
在经历了互联网和电子商务的淘金时代后,Java已经准备好向通信领域发展,而且巨大的商业利益已经显现出来。据Ovum研究公司预测,到明年初,Java技术将应用于2.67多亿部移动设备,而Java手机目前已然在北美和欧洲大行其道。更有分析公司预测,到2007年,几乎100%的手机都将采用Java技术,Java已经回归到嵌入式无线通信领域。
Java在嵌入式通信领域的应用与发展颇具传奇色彩。1991年出现的Oak(Java语言前身)技术,最初的设想是在冰箱、电视等信息家电产品中嵌入可编程通信控制平台,以实现这些设备间的数据通信。然而在当时,Oak并没有受到开发者所希望的欢迎,整个市场对这一新技术语言的重视远远不够。
1995年后全球爆发的互联网络信息革命为Java带来机会,Java成为众多编程语言和编程技术中的黑马,迅速成为全球各大IT厂商应用开发平台的新贵,不仅一跃成为桌面应用(J2SE)平台,更在很短的时间内成为企业级应用(J2EE)开发平台。
如今, Java已经回归到嵌入式无线通信领域,并且这次是有备而来。
从Sun到与Sun无关
在1999年的JavaOne大会上,Sun Microsystems 介绍了第一个袖珍版 Java和第一个 KVM以及相关的类库,并于同年6月向Java团体宣布了Java的第一个Java 2 Micro Edition(J2ME)版本,为开发者提供了一个无线开发工具包Wireless Toolkit(WTK),WTK可以让开发者编译(compile)、打包(package)、部署(deploy)和执行(execute)J2ME应用,这一工具包还包括一个仿真测试环境,该环境用于在资源受限的设备上对J2ME应用进行模拟运行,这些仿真模拟器可以被当做插件向通信设备厂商提供,同时由这些设备商向消费者提供,例如摩托罗拉、诺基亚等。
遗憾的是,WTK中并不包含IDE开发环境和Debug调试环境,笔者认为,之所以出现这样的结果,主要原因不是Sun或JCP缺乏设计优良IDE环境的能力,而是Sun发布J2ME平台规范后,全球各软件工具开发商“百家争鸣”推出各自的IDE开发环境,虽然这样防止了IDE技术的企业垄断,却也忽略了市场和用户的个性需求。况且,自Java问世以来也没有正式提供IDE开发环境的先例。这样做的不利在于多版本差异,但也有好处,没有正式的IDE开发环境,并不意味着开发者没有开发环境,相反,专业开发者有更大的选择余地来选择合适的IDE,甚至从Opensource中获得免费的Wireless IDE工具,当前一些主流Java开发工具已经都有相关插件支持无线开发环境,例如Sun ONE Studio、JBuild、Oracle9i JDeveloper等。
从Sun发布袖珍版的Java技术标准,到IDE多种类局面出现,Java正走着一条整个产业化前进的道路。
Java技术的典型代表J2ME
Sun 将 J2ME 定义为“一种以广泛的、以消费性产品为目标的、高度优化的 Java 运行环境,这些环境包括寻呼机、移动电话、可视电话、数字机顶盒和汽车导航系统等。”但由此也可以明显看出,要为所有这些设备定义一种最优化、或者接近最优化的单一技术是不可能的,因为这些设备的处理器能源、内存、固定存储器和用户界面的差异都非常之大。为解决这一问题,Sun 公司将适合 J2ME 的设备的配置分成各个部分,然后再进一步细分,其他品牌的Java技术也采用了大体相同的方式。
在第一步的划分中,Sun 将各种设备按照处理性能、内存和存储能力划分成CDC和CDLC两大类,需要说明的是,这一分类方法并没有考虑应用者最终的使用目的。在这一基础之上,Sun定义了 Java 语言的一个剥离版本,它能够在每一类设备的限制下工作,也包括通信设备,同时提供最低限度的 Java 语言功能性,这一点,对于作为消费类产品的终端通信设备而言,非常重要。
移动信息设备简表(MIDP)是J2ME补充CLDC配置的Java API集合,也是基于CDC和CDLC的最上层。MIDP为开发者提供了计时器、简单固定存储器、通过 HTTP 的连网等常用API,开发者可以通过MIDP提供的界面快速开发UI元素来构造J2ME应用,这些元素包括常用的:Alert 用于通过屏幕向用户显示有关异常情况或错误的信息;Choice 用于实现从既定数量的选项中进行选择;ChoiceGroup 可提供一组相关选项;Form 作为其他UI 元素的容器;List 提供选项列表;StringItem 提供只显示(display-only)字符串功能;TextBox 允许用户输入和编辑文本的屏幕显示;TextField 允许用户输入和编辑文本,多个 TextField 可放到一个 Form 中;DateField 作为可编辑组件,用于表示日期和时间信息,DateField 可以放到 Form 中;Ticker 用于文本的可滚动显示等。
当开发者对界面控制有较高要求时,可以使用Canvas技术来实现图形化的界面输出,利用Double buffering技术实现流畅的动画处理效果。MIDP还提供了记录管理系统RMS(Record Management System),RMS的记录管理系统存取数据到移动设备中。在CLDC中提供一个通用的连接框架(Connection Framework),我们可以使用该连接框架从Web端发送和接收数据,这一连接框架实现Http1.1协议。在企业级应用开发中,HttpConnection或Socekt经常会和Threads技术应用在一起,以提供高性能的企业数据连接。熟悉Java Serverlet的开发者在编写J2ME程序时并不会感觉环境的陌生,因为J2ME为每个应用提供了类似于Serverlet的有生命周期管理的MIDlet,每个J2ME应用都必须扩展MIDlet类,以便能够让应用系统控制它。Model-View-Controller,(MVC,Model为维护应用模型的状态,View指通过图形或非图形模式表现Model,Controller接收外部指令更新Model或View)J2ME的开发者必须参照MVC设计模式,因为整个设计需要在完成最后UI步骤之前完全测试通过商业逻辑部分,以保证在仿真运行环境下的联调焦点放在UI控制上。
Java之于GPRS
GPRS是按欧洲电信协会GSM标准定义的封包交换协议,可快速接入数据网络。它在移动终端和网络之间实现了“永远在线”的连接,而网络容量只有在实际进行传输时才被占用。现在,我们已经习惯将移动通信分为三代。第一代是模拟的无线网络; 第二代是数字通信,包括GSM、CDMA等;第三代是分组型的移动业务,称为3G,TD-SCDMA、WCDMA和CDMA2000的所谓3G之争,已经为常人所熟悉。
GPRS是通用无线分组业务的缩写(General Packet Radio System),作为介于第二代和第三代之间的通信技术,通常也被当成2.5G,目前正通过升级GSM网络实现它。
为了推动GPRS,爱立信、PALM、IBM、Oracle和Symbian于1999年10月成立GPRS Application Alliance,即GAA。J2ME技术让移动设备拥有了自动下载、部署和运行Java应用的环境平台,将复杂的程序处理从传统的PC系统搬到轻巧、随身携带的便携移动设备中,更为关键的是,J2ME的推出引发了手机等无线终端的增值业务,既而逐渐培育出一个利润丰厚的无线应用行业。由于技术开放、标准容易统一的特性,使得Java技术的上下游技术以及设备提供商都能够准确找到共同的利润点,并加以放大,Java为全球无线增值业务提供了一个绿色的生态链。
目前,Java结合成熟的GPRS通信网络,已经开发出多种增值无线应用,同时也成为普及GPRS网络的关键应用技术。分析当今主流的应用成果,大致可归纳为娱乐游戏、位置服务、信息点播、电子商务、公共设施、企业应用、开发工具等几大类。
游戏娱乐类 这是当前应用已经比较普遍、应用种类也较繁多的一种应用。通过GRPS网络,可以让支持Java的手机用户下载各种小游戏、视频、图片、电子小说等电子消费类J2ME应用,成为电信运营商推动增值服务的核心业务。
位置服务类 这一类服务的本质是,利用J2ME的图形处理能力绘制全球定位系统并反馈位置数据,从而为特殊行业用户提供可视位置服务。
信息点播类 通过Http连接服务,以J2ME应用实现新闻、证券消息、天气预报、生活等信息资讯的点播服务,这一类服务也成为运营商下一阶段大力推广的业务模式。
电子商务类 通过J2ME提供的信息安全、传输技术实现手机银行、无线交易、股票查询等应用系统,当前,无论是使用Java还是Brew的电子商务类应用都还没有广泛推广开来,这与整个消费市场信用度有关,同时,在涉及到银行与通信两个领域的合作时,有很多的问题还有待进一步解决,有些还会涉及到法律层面的认可问题。
公众设施类 通过GPRS网络连接到数据服务中心,对数据进行无线远程操作,这类系统较为常见的有交通车辆信息查询系统、身份证查询系统等。
企业级应用类 结合企业内部业务管理系统实现无线办公环境,这类系统主要针对企业用户,应用需求比较分散,常见的有接入到企业内部办公系统数据库的无线办公自动化系统(例如炎黄盈动的iWork/OA)、业务信息处理系统,就市场发展来看,基于Java技术的企业级应用也会在未来成为中国移动运营商重要的收入来源之一。
开发工具类 为实现J2ME应用而单独提供的各种中间件、数据库、Framework等,例如Sybase、Oracle的J2ME数据库、XML解析器。
J2SE、J2EE和J2ME作为Java在三个不同方向的开发平台,运行在资源受限设备上的J2ME平台可以方便地与J2SE、J2EE应用进行通信,甚至可以共享J2EE或J2SE应用的类程序,这降低了传统Java程序向无线通信领域移植的难度,同时遍布全球的上百万Java程序员及积累了近10年的Java技术资源,也降低了J2ME的入门难度,成为J2ME的支持者。从2003年的JavaOne大会可以看出,包括Sun在内的众多公司正将业务瞄准J2ME市场,例如Sun就推出了新的Sun开发商网络移动项目(Sun Developer Network Mobility Program),为项目成员提供完整的资源包,用于创建、测试和验证基于J2ME技术的应用,并将这些应用通过市场提供给消费者和企业,一旦具备市场环境条件,Java开发者大军将会迅速向J2ME挺进。
正是这些因素的影响,使得目前中国移动当前推动的各种手机应用和中国联通与美国高通公司联合推动的Brew平台形成对垒局面。无论掌声来自何方,受益的将会是我们大众消费者。
相关链接
CLDC
J2ME平台定义了两个底层配置CDC和CLDC。其中,CDC(Connect Device Configuration,连接设备配置)规范用于比PC机小、但同时具有多于 512K内存的设备,这一类设备包括互联网络电视系统、机顶盒、POS系统、汽车导航以及娱乐系统,这些应用被运行在JVM虚拟机中。
CLDC(Connected Limited Device Configuration ,有限连接设备配置)规范应用于内存128K到 512K之间的消费类电子设备, 这一类别中典型的代表设备包含呼叫器、移动电话、个人数字助理PDA和POS终端等。这些应用通常在移动设备的KVM虚拟机中运行。
从J2ME类库发展来看,CDC配置的类库包含了J2SE1.3应用程序接口类库的一个子集,并针对资源受限设备做了扩展。由于应用于CLDC配置的设备资源更受限制的原因,CLDC配置类库实际上完全是CDC类库的子集。