BREW概述
BREW(BinaryRuntimeEnvironmentforWireless,无线二进制运行环境),是高通公司推出CDMA网络"无线互联网发射平台"上增值业务开发运行的基本平台。它提供一个高效、低成本、可扩展和熟悉的应用程序执行环境(AEE),着重开发可无缝植入任何实际手持设备的应用程序。与建立在对内存空间、处理器速度和相关硬件有较高要求的操作系统之上的高端产品不同,BREW在现有的设备类型上运行。传统上,人们热衷于能否利用高速ASIC(特定用途集成电路)技术实现新的应用功能,甚至在低端设备上,要使用更多的功能则需要无缝集成。现在,BREW提供的功能环境就好像PC机上的操作系统一样,可以通过服务提供商下载指定类型的应用程序或游戏来使用。同时,通过BREW接口功能,供应商可以提供成套的完整的资讯、商务、娱乐功能。在将来的版本中,BREW内核类将能提供诸如蓝牙技术、全球定位系统(GPS)和基于数据业务的电话等服务。
BREW提供了一套应用程序接口(API),制造商和开发人员可以随时对运行环境进行扩展,提供应用程序需要的各种附加性能模块,如"无线互联网发射平台"中包含的多媒体、多种连接方式、位置服务、用户界面、网络等功能套件。
开发应用
BREW为应用程序开发者提供了一个功能丰富且使用方便的环境,使其能够利用美国高通公司的移动基站调制解调器(MSM)ASIC的已有及新增的功能开发新的软件,以适应增值业务发展的需要。BREW的面向对象可充分扩展的应用程序执行环境,允许使用C或C++开发小程序和共享模块。同时,它还支持Java和XML等语言。
BREW提供了一套完善的对象技术,使开发者可以非常方便开发基于图形的应用服务:
应用程序服务,支持简单的、基于事件的AEE
内核服务支持,对文件、网络服务、内存和屏幕的访问
增强型服务,例如增强图像性能(互动的游戏)、声音播放器(优质的音乐)、GPS和语音服务
综合服务,使应用程序开发者可以利用诸如浏览器、Outlook所支持的服务
从运行环境和效率上看,BREW提供以下支持:
BREW可有效地利用RAM和持久存储器。BREW可以在需要时加载或卸载使用的对象或内存
BREW应用程序环境支持人们熟悉的与MicrosoftWindows、Macintosh或UNIXX-Windows类似的事件驱动结构
本地化BREW小程序非常方便
所有文本按Unicode处理,并以所选语言可支持的最有效的方式储存。BREW还支持OEM的本地文本格式
业务模块可以在对象代码级集成,便于设备开发商和第三方生产商为BREW平台添加应用模块
BREW提供了内核类可与设备平台进行对接
在应用开发上,BREW为各种手持设备快速、高效、经济地开发和配置新的应用程序提供了方便,BREWSDK开发包提供基于C/C++、Java等编译环境的运行库和面向对象的类结构,包含了各种有效的系统调用、用户接口、多媒体集成和网络套接字等类对象资源,开发者对BREW的开发就好像在Windows平台上编程,有种类繁多、功能强大的库函数调用一样,开发者不必关心低级平台数据结构和设备驱动程序,因为应用程序和设备平台可以完全通过适当定义的类对象进行交互。而且,它还支持在程序中直接使用字符串、图片、声间、对话框等自定义资源,从而达到交互、生动的效果。目前,BREW应用主要集中在移动文本通信(电子邮件、SMS)、信息服务(新闻、天气、影视、搜索等)、定制服务(个性化代理、时尚)、位置服务(M2M、定位导航)、多媒体娱乐(数据流视频、互联网音频)和游戏(离线、在线)等方面。
业务模块开发流程
BREW开发增值业务是以模块为单位,每一模块可能含一个或多个小程序(Applet),模块的调用(以Windows平台为例,以下同)是从module_main入口开始,提供以Windows动态库类型的小程序为运行单位。业务模块的开发可以独立和同时开发,从而最大限度地缩短开发时间,回避复杂的集成问题。
BREW中的每个类或小程序必须拥有一个唯一的ClassID,在BREWSDK中,提供了ClassID编程器---生成后缀为MIF的文件,它包含支持的类、支持的小程序以及小程序标题。启动时,BREW会在设备屏幕上列举MIF文件,并保存从MIF列举收集来的信息,以便在请求类时使用。
创建实例
BREW用于支持小程序和模块创建的机制是ISHELL_CreateInstance方法。该机制是BREW模型的核心,也是BREW支持的最强大的API之一。调用该方法时BREW将在支持的类列表中搜索指定的32位已注册的ClassID。该列表包含内核BREWAPI支持的条目,另外还包含添加到系统的所有类和小程序,系统启动时会通过MIF列举进行检测。
类通过BREW模块支持的IMODULE_CreateInstance方法来创建。BREW将根据需要加载模块,加载后BREW将使用其IModule实例创建请求的类。一个模块的所有对象在创建时必须增加其IModule的引用计数,而在释放时减少IModule的引用计数。模块在该模块IModule类的引用计数变为零之前,模块会保持加载的状态,一旦引用变为零,BREW将自动释放与该模块相关的所有内存。这种方法的象Windows编程中使用COM对象一样;创建实例的过程基本上是统一的,程序员一般必干预此过程,这样有利于开发和运行的效率。
创建和中止小程序
在BREW模型下,小程序是支持IApplet接口方法的类。这样BREW便可以使用相同的简单接口管理所有的小程序。
BREW在两种情况下创建小程序:
应ISHELL_StartApplet方法的要求创建小程序。该方法可以创建小程序,小程序生成以后,将立即发送EVT_APP_START事件,通知小程序已处于激活的状态并可以调用其它用户接口类如绘制屏幕、弹出对话框等
为处理已注册的通知、警报等创建小程序,小程序生成后会立即收到特定的通知事件
中止小程序通过由BREW系统自动调用Release方法完成,只要在Release方法中加入释放自定义的内存和资源即可。
处理小程序事件
事件处理是BREW编程中最重要的过程,来自无线网络、BREW系统、OEM驱动程序、用户接口输入的所有事件将通过ISHELL_SendEvent方法发送给小程序,事件的发送可以同步,也可以异步进行。一般情况,发送给小程序的事件包括键区、对话和控件更改事件。
通常,小程序仅需处理少数事件,这些事件可以是EVT_APP_START、EVT_APP_STOP、EVT_KEY和EVT_COMMAND。如果小程序不处理事件,其HandleEvent方法必须返回FALSE。这样可以使BREW对该事件进行任何必要的特殊处理。
通过对事件的响应,小程序将自动调用对应的方法如绘制屏幕、显示图片、播放MP3、弹出对话框等。通常的处理方法中包含了以下可供调用的类对象:外壳服务、时间/计时器、通知、内存管理、文件管理、数据库管理、网络和套接字、HTTP、下载和结算、显示、图像(显示、转换、动画)、图形、声音播放器(播放MIDI和MP3文件)、声音(产生铃声警告声和播放音频文件)、标准帮助功能库和用户控件如对话框、日期控件、菜单控件、文本编辑控件、时间控件、静态文本控件。
测试
BREWSDK提供了一个电话模拟器,供程序开发人员设计、定制用户界面,配置新设备和测试应用软件,并可以动态监视业务程序的内存使用。它基本上可以模拟真实环境的测试状态和效果。
结束语
综上所述,不管是对于应用软件开发商、设备制造商、移动运营商还是最终用户,BREW平台所提供的功能和应用都是远远超出了传统的增值服务所带来的效应。
韩国KTF于2001年11月开始提供基于BREW平台的商用服务,统计数字表明,市场反响相当强烈,无论是业务内容还是业务质量,在用户眼中的吸引力都不断增强,赢利潜力非常可观。就中国联通而言,一旦全方位地发展中国CDMA的产业布局,其垄断的增值业务客户网络,将对现有GSM或GPRS网络造成巨大的冲击。