无线二进制运行环境

高通 BREW 图标
无线二进位执行环境（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所有特性的同步接口。

**注释**

**参见**
 智能电话- 系统平台- 移动应用开发 — How BREW stacks up against the alternatives on mobile platforms.- J2ME- WIPI

**外部连结**
  BREW-  In-depth discussion of BREW and other mobile platforms from European market perspective date=20180701150559 -  BREW Gaming date=20210420194828 -  Brew Test Unit - a unit testing framework for the Brew platform. date=20080916191046 

**主要发布商**
  Digital Orchid date=20201024115529 -  EA Mobile-  Glu date=20210324044939 -  NIM date=20150906054257 -  Namco Wireless

**应用程序开发公司**
  Advanced Mobile Applications date=20130810224101 -  Econz date=20210203150952 -  Remoba Inc date=20210210113814 -  RiffWare date=20201130225721 -  Rocket Mobile-  Comprehensive List

**相关论坛**
  BREW中国开发者讨论组