无线二进制运行环境

<image>

无线二进制执行环境（Binary Runtime Environment for Wireless，简称BREW）为2001年美国高通（Qualcomm）公司所设计提出的3G系统最佳平台解决方案，可支援cdmaOne／CDMA2000／GSM／GPRS／UMTS／WCDMA，技术上横跨电信、软件开发、手机厂等三大领域。在程式语言支援方面，BREW可让使用C/C++语言开发的应用拥有更好的运行效能，同时支援其他开发语言包括Java、XML和Flash等。目前有美国Verizon Wireless、中国电信、日本KDDI、韩国KTF、泰国Hutchison cat、澳洲Telstra、墨西哥Iusacell、印度Tata、巴西VIVO、阿根廷Movicom、以色列Pelephone、委内瑞拉的Telcel、乌拉圭的Movicom……等数十家电信业者采用。

## 开发技术

BREW的执行环境称为BREW AEE（Application Execution Environment），这是一个中间层的应用，具有高效、低成本、可扩展性。一般所见到的BREW例子都是用C写的，不过BREW开发是完全支持C++语言的，2003年宣布支援Java语言。2002年7月份于San Diego举行的BREW开发商大会上，IBM和Insignia展示了BREW环境下的JAVA virtual machine（JVM）。HP也将其MicrochaiVM平台转向了BREW。IBM将在WebSphere Studio Device Developer产品中提供一个BREW开发套件。

BREW SDK至今已发行多套版本，1.0, 1.1, 2.0, 2.1, 3.1, 4.0.4，并且向下相容（backward compatible），目前最新的版本为4.0.4版。SDK是BREW所提供的是一组API函式集合，OEM开发厂商可以利用BREW建立用于无线装置（现是无线电话）的应用软件。

对手机领域来说，BREW是一种轻型客户端（thin client），大约占用150K左右的内存空间，介于应用程序软件和底层系统软件（Application Specific Integrated Circuit，ASIC）之间。因此，开发厂商可以于不相关装置电路（device's chipset）或无线界面（air interface）的情况下，独立开发BREW应用程序。CDMA（Code Division Multiple Access）chipsets是QUALCOMM公司的专利（specialty），但是BREW一样可以执行在使用其他无线界面标准的手机上。

BREW SDK是免费提供的，但开发者仍须安装Microsoft Visual C++ 6.0或其后续版本Visual C++.NET，方可使用由SDK提供的BREW Simulator来开发和测试应用程序。BREW Simulator是一支Windows程式，可以类比电话上的AEE（Application Execution Environment）。应用程序可以DLL的形式执行于BREW Simulator中。因为DLL只能用于Windows平台，BREW Simulator可以执行这个DLL。目前市面上的手机大部分采用ARM kernel，非关于DLL档。

BREW的应用程序执行环境（AEE）是一个精巧的软件界面层。设备厂商将它集成在各自的软件中，以支援BREW API和执行环境。在一个新终端设备中提供AEE要求设备厂商只要移植AEE即可。此外，BREW Emulator中提供了一个AEE的Windows port，所以BREW Emulator可以执行针对Windows的小程式。由于AEE占用的随机内存和闪存极小，适用于低端（low end）主流机型。

除了向应用程序提供BREW API服务，AEE同时管理著应用程序的执行，及时回应用户和一些紧急事件，比如说，一个正在执行的BREW应用当有来电呼入时，可以自动立即暂停（suspend）；并在通话完毕之后，再自动恢复（resume）工作。

在BREW环境中，Module是基本的组织单位。发展一个BREW 应用程序可以从三个部分来解读，Module, Applet，以及Extension。一个Module可以包含一个以上的Applet，也可以包含一个以上的Extension，如下图所示，Module A拥有一个Applet A, Applet A再引用Extension X；而Module X仅拥有一个Extension；至于Module B则拥有两个Applets，以及一个Extension。有些Module是出厂时的code space（OEM Module image），也有Module是通过下载方式（download）储存于档案系统；这些Module依性质可区分为静态（static）和动态（dynamic），主要包括：dynamic Module（Applet），static Module（Applet）和dynamic extension class（Module）。

## BREW的优点

下列是 BREW 与 J2ME的比较。brew 有绝对的实力来对抗 j2me，从游戏软件的开发角度来看，BREW有许多的优点。

- The BREW API 在支持电话上远超过 J2ME API。
- API较J2ME简洁有力。
- 图形开发更容易，BREW 2.0 可以直接存取萤幕缓冲区。
- J2ME phones 经常有二进制码大小的限制 (128KB is common)。BREW目前无此限制。
- BREW是更底层的技术，加上和CDMA 的完美结合，使BREW拥有了更快的反应速度。
- BREW 应用程序可以是物件导向程式设计（Object-oriented programming）。在 J2ME 里过多的类别会造成档案大小的负担，一般被鼓励以C语言的撰写方式。此外，由于非原始状态的型别（non-primitive types）使得J2ME 的阵列看起来更像类别（classes）。基于这个理由，J2ME仍常使用原始型态（primitive types）的平行阵列。

BREW的开发优势

- 对于运营商而言，BREW技术与网络完全无关。这意味着它可以完全平等地应用于所有领先的无线技术之中。
- 对于设备制造商而言，BREW应用运行环境可以同移动设备闪存和RAM中的处理芯片紧密集成，从而实现广泛适用性、软件开发变得更加顺畅，效率得到提升。
- 对于应用开发商而言，BREW执行平台基于普及型编程语言C/C＋＋，这种语言拥有庞大的用户群，他们只需掌握很少的移动电话知识即可实现BREW支持。
- 3G平台EVDO的推广也为BREW带来了新的机会.
- BREW平台提供了一系列规范的服务接口，简化和规范了基于BREW的应用开发。
- BREW平台版本也在不断的演进1.x->2.x->3.x->4.x->BMP
- BREW平台作为一个承上启下的关键中间层，对上层BREW应用屏蔽了底层提供服务的平台差异。

## BREW的缺点

相较于J2ME之下：

- 在J2ME，来源码跟资源预设是被压缩的。而BREW的码是不被压缩的。
- J2ME 拥有较受欢迎的IDE开发平台或元件，如Eclipse 以及 Netbeans，BREW则否，目前仅能Add-in在Visual C++上操作。

目前大多数的使用者会选择二者兼用，或只用J2ME. J2ME 提供较低廉的成本（无测试成本）。此外，J2ME 在欧洲广泛被使用，BREW 雄霸美国与日本市场。即使在美国，J2ME phones 的市场仍较大。

## 组成

- BREW 模拟器（BREW Emulator）：开发人员可以测试无线应用程序在一系列仿真设备Windows环境下运行的状况。
- BREW MIF编辑器（BREW MIF Editor）：应用模组的讯息档（.mif）必须与该模组的dll文件同名。可以生成一临时class id，等到正式完成时必须向高通申请一正式id。每一个Module都需要有自我标识的MIF档，从BREW 3.1开始已经强制如此，静态（static）Module也需要有相应的MIF。而在BREW3.1之前，对于静态Module是没有单独的MIF档的，但有一个AEEAppInfo的结构体来表示Module的资讯，里面主要包括clsid，app type等资讯，每个静态Module都需要有一个实例化的AEEAppInfo结构体，BREW从此结构中获得必要的Module资讯。
- BREW资源编辑器（BREW Resource Editor）：用于创建应用程序的资源，包括字串、图档等。编译时将bri档转成bar档。

## 版本

BREW 1.0：BREW SDK版本1.0 不支持静音插入。BREW 1.0 中，当剩余使用次数为0 时，用户将无法启动应用程序（Applet）。

BREW 1.1：使用 AEESoundTone AEE_TONE_SILENCE 插入一段静音。BREW 1.0、1.1 和2.0 版本不支持播放WAV 档。BREW 1.1 以上版本提供的 PureVoice Convertor Utility Tool 可以将 .WAV档转成 .QCP。

BREW 2.0：不对应使用QVGA液晶的装置。

BREW 2.1

BREW 3.0：支援可插式储存媒体（USB），并能让使用者更容易于将支援BREW的手机连接到键盘及个人电脑等装置的序列界面（Serial Interface），用来读取音乐播放档或相片档，可提升移动电话的多媒体功能。关于UI方面全新的BREW UI Toolkit（BUIT, BUIW）推出。

BREW 3.1：高通于加州圣地亚哥举行的BREW2004开发者大会上发布，新版本提出UiOne的构想，扩展了对手机用户UI的开发支持，如Menu Control、E-Mail等。

BREW SDK 4.0.4：目前最新版本。为OME厂商和第三方开发者提供一种环境去开发运行BREW 4.0.4上运行的设备和程序。这个版本的SDK具有一种新的对于通话记录、信息、日历、和电话本以及BREW 4.0.3所有特性的同步接口。

## 外部链接

- BREW
- In-depth discussion of BREW and other mobile platforms from European market perspective
- BREW Gaming
- Brew Test Unit - a unit testing framework for the Brew platform.