无线二进制运行环境

無線二進位執行環境（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語言BREW一旦偵測到user需要JVM，就會下載一個JVM for BREW。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 
 BREW Gaming 
 Brew Test Unit - a unit testing framework for the Brew platform. 

 主要发布商 
 Digital Orchid 
 EA Mobile
 Glu 
 NIM 
 Namco Wireless

 应用程序开发公司 
 Advanced Mobile Applications 
 Econz 
 Remoba Inc 
 RiffWare 
 Rocket Mobile
 Comprehensive List

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

Category:移动通信标准