Введение
Платформа разработки приложений Binary Runtime Environment for Wireless (Brew MP, Brew, Qualcomm BREW, или BREW) — платформа разработки приложений, созданная компанией Qualcomm, изначально для мобильных телефонов с технологией множественного доступа с кодовым разделением (CDMA), поддерживающая сторонние приложения, такие как мобильные игры. Она предлагалась в некоторых кнопочных телефонах (в основном с характеристиками, сопоставимыми с телефонами среднего и высокого класса), но не в смартфонах. Разработка платформы началась в 1999 году, а дебют состоялся в сентябре 2001 года. Brew MP представляла собой программную платформу, способную загружать и запускать небольшие программы для игр, отправки сообщений и обмена фотографиями. Главным преимуществом Brew MP было то, что разработчики приложений могли легко портировать свои приложения на все устройства Brew MP, используя стандартизированный набор интерфейсов программирования приложений (API). Программное обеспечение для устройств с поддержкой Brew MP можно было разрабатывать на языках C или C++ с использованием свободно распространяемого комплекта разработки программного обеспечения Brew MP (SDK). Библиотека BREW Runtime Library являлась частью прошивки чипа или операционной системы беспроводного устройства, позволяя программистам разрабатывать приложения без необходимости программировать системный интерфейс или разбираться в особенностях беспроводных технологий. BREW описывается как псевдооперационная система, но не полноценная мобильная операционная система. BREW не была виртуальной машиной, подобно Java ME, так как выполняла код непосредственно на аппаратном обеспечении.
Binary Runtime Environment for Wireless (Brew MP, Brew, Qualcomm BREW, or BREW) was an application development platform created by Qualcomm, originally for code division multiple access (CDMA) mobile phones, featuring third party applications such as mobile games. It was offered in some feature phones (mostly with specifications similar to those of mid to high end mobile phones) but not in smartphones. First developed in 1999, as a platform for wireless applications on CDMA based mobile phones, it debuted in September 2001. As a software platform that can download and run small programs for playing games, sending messages, and sharing photos, the main advantage of Brew MP was that the application developers can easily port their applications among all Brew MP devices by providing a standardized set of application programming interfaces. Software for Brew MP enabled handsets can be developed in C or C++ using the freely downloadable Brew MP software development kit (SDK). The BREW runtime library is part of the wireless device on chip firmware or operating system to allow programmers to develop applications without needing to code for system interface or understand wireless applications. BREW is described as a pseudo operating system, but not a true mobile operating system. BREW was not a virtual machine such as Java ME, as it runs code natively.
Программное обеспечение
Для разработчиков программного обеспечения Brew MP представлял собой полный набор интерфейсов прикладного программирования (API), позволяющий создавать программное обеспечение и приложения на C, C++, Java и поддерживался специализированной интегральной схемой (ASIC). Его объем занимаемой памяти составляет около 15 900 КБ (15,9 МБ). В версиях 1.x – 2.x (до 2004 года) он занимал около 60 КБ памяти. BREW также обеспечивал прямой доступ к аппаратному обеспечению. Версии, предшествовавшие Brew MP, работали на базе REX OS (собственной RTOS компании Qualcomm), а Brew MP использовал Brew RTOS (другую RTOS для функциональных телефонов с расширенными возможностями). Помимо использования неинтерпретируемого кода, BREW также опирался на собственное мобильное оборудование.
BREW 1.0 / 1.1 (20012003)
Дебютировав в 2001 году, это была первая полноценная версия BREW. Изначально она была разработана для Kyocera QCP 3035 (первого коммерчески доступного телефона с поддержкой BREW) и Sharp Z 800. В ней использовались функции, характерные для персональных цифровых помощников (в основном для отдельных приложений и возможности запуска BREW-приложений). Однако в ней отсутствовали расширенные мультимедийные возможности и поддержка Java ME, которые появились в более поздних версиях. Это была единственная версия BREW, поддерживающая монохромные экраны, поскольку поддержка монохромных экранов была исключена в BREW 2.0. BREW 1.1 стала первой версией BREW, способной запускать приложения Java ME. Она была доступна на некоторых телефонах с поддержкой BREW в 2002 и начале 2003 года.
BREW 2.0 / 2.1 (20022009)
Выпущенный в середине 2002 года, он устанавливался на большинство телефонов с поддержкой BREW с конца 2002 года по конец 2009 года. Он обеспечивает поддержку расширенного воспроизведения мультимедиа (возможность воспроизведения видео- и аудиофайлов, а также поддержка мультимедийных форматов 3GPP), подключение к EV-DO и поддержку Bluetooth, а также заставки на экран и другие улучшения. Он также поддерживает MIDP 2.0 на BREW 2.1 и обратно совместим с приложениями BREW 1.x. Он был установлен на большинство кнопочных телефонов в Индонезии, Китае и других странах, начиная с 2004 года, и поддерживался некоторыми операторами связи до 2017 года.
BREW 3.0 / 3.1 (20042012)
Выпущенный в середине 2002 года, он устанавливался на большинство телефонов с поддержкой BREW с конца 2004 года до начала 2012 года. Это была первая версия BREW, содержащая значительные изменения, и она включала в себя большинство функций для мобильных телефонов, таких как подключение к WiFi, OpenGL ES 1.0, поддержка 3G, GPS, QWERTY-клавиатуры и экраны с разрешением более 176x220. Она обратно совместима с приложениями BREW 2.x, но не с приложениями BREW 1.x. Это также первая версия BREW, поддерживающая 3D-рендеринг графики, хотя использовался только программный рендеринг (с поддержкой JSR 184 для игр Java ME). Аппаратное ускорение также поддерживалось нативно через OpenGL ES 1.0 при наличии 3D-ускорителя. Он был установлен на большинстве кнопочных телефонов в Соединенных Штатах и других странах, начиная с 2005 года, и до сих пор поддерживается некоторыми операторами.
BREW 4.0.1 - 4.0.2 (20072011)
Выпущенный в 2007 году и поддерживавшийся до 2011 года, он был интегрирован лишь в небольшое количество мобильных телефонов (например, LG enV Touch и LG Versa). Он получил незначительные улучшения и впоследствии был заменен Brew MP. В нем реализованы дополнительные функции, которые также присутствуют в Brew MP, такие как поддержка акселерометра и другие изменения. Он также использовался в игровой консоли Zeebo в Мексике и Бразилии.
Brew MP 1.0.1 - 1.0.4 (20092021)
Brew 5.0 был выпущен в 2009 году с рядом новых функций (включая поддержку SVG-изображений) и обеспечивал обратную совместимость с BREW 3.x и 4.x. В этой версии некоторые устаревшие API были объявлены неактуальными. Этот релиз также ознаменовал переход на собственное ядро реального времени BREW, вместо использования операционной системы REX OS от Qualcomm. Страница разработчиков Brew MP была закрыта 23 июля 2021 года после восьми лет неактивности.
Разработка приложений BREW
Для тестирования приложений в процессе разработки, SDK включает в себя эмулятор BREW или, начиная с версии BREW 1.1 и выше, BREW Simulator. Среда BREW предусматривает несколько уровней подписей приложений. Одна подпись удостоверяет разработчика, а другая подтверждает, что приложение прошло тестирование True BREW и выдается через Intertek. Отдельные операторы телекоммуникаций настраивают мобильные устройства так, чтобы они либо требовали, либо игнорировали наличие и проверку этой второй подписи. Мобильные устройства с поддержкой BREW имеют тестовый режим, позволяющий приложениям обходить проверку подписи. Qualcomm предоставляет операторам беспроводных сетей, использующим BREW, приложения, прошедшие тестирование. Операторы затем могут выбрать, какие из этих приложений сделать доступными для конечных пользователей в своем каталоге. Собственные подписи BREW защищены электронным серийным номером (ESN) и идентификатором мобильного оборудования (MEID), что предотвращает несанкционированное распространение/установку приложений BREW третьим лицам, а не операторам связи. После загрузки приложения по воздуху (OTA) через оператора связи на базе BREW, файл подписи (sig) автоматически генерирует электронный серийный номер для установленного на устройстве. Эмулятор BREW, называемый BREW Simulator, не эмулирует аппаратное обеспечение мобильного устройства. Вместо этого приложение BREW компилируется в машинный код и связывается с совместимой библиотекой BREW. Из-за этого приложения нельзя протестировать на наличие ошибок платформы, связанных с выравниванием памяти и различными сбоями прошивки, без использования мобильного устройства BREW, работающего в тестовом режиме. Для целей тестирования приложения BREW можно передавать с помощью универсальной последовательной шины (USB) или последовательного кабеля на любое совместимое с BREW устройство, используя BREW App Loader от Qualcomm. Приложение BREW содержит несколько компонентов, отсутствие или недействительность которых приводит к автоматическому удалению приложения при перезагрузке. К ним относятся скомпилированный двоичный файл, файл, описывающий приложение, используемые им функции и запрошенные разрешения, файл, содержащий строковые и графические ресурсы (при необходимости), и файл, содержащий цифровую подпись приложения. Приложения BREW могут быть выгружены с потребительского устройства для экономии памяти. Это называется "Отключить/Восстановить" и является требованием процесса True BREW Test. Сохраненные файлы остаются нетронутыми при использовании функции "Отключить/Восстановить", и приложение можно повторно загрузить без повторной оплаты. В состоянии "Отключить" все файлы bar, mod и sig удаляются с устройства, в то время как остальные файлы остаются на своих местах. Во время операции "Восстановить" файлы bar, mod и sig загружаются из мобильного магазина оператора, и ранее отключенное приложение восстановит полную функциональность. Процесс "Отключить/Восстановить" доступен потребителям только после заполнения памяти устройства. 28 мая 2008 года Qualcomm и Adobe объявили о партнерстве по интеграции Adobe Flash Lite в качестве поддерживаемого пользовательского интерфейса в BREW. С марта 2006 года самый дешевый пакет цифровых подписей для разработчиков стоит 400 долларов США за 100 отправленных приложений.
Влияние бизнес-модели/доступность
Строго говоря, время выхода на рынок может быть больше для BREW, чем для Java ME, из-за строгих требований к сертификации Qualcomm BREW. Этот процесс сертификации может рассматриваться как преимущество для опытных разработчиков программного обеспечения, поскольку сложности, связанные с тестированием и затратами на разработку, создают высокий порог входа для разработчиков с ограниченным бюджетом и временем, что снижает насыщенность рынка. В частности, разработчики казуальных игр меньше рискуют столкнуться с конкуренцией со стороны бесплатных аналогов, созданных и самостоятельно опубликованных энтузиастами. Однако это обходится потребителю дороже, поскольку снижается конкуренция в разработке оптимального решения по минимальной цене. После написания приложения, каждая итерация тестирования True BREW занимает две недели (каждый раз, когда приложение не проходит тест). Далее начинаются переговоры с операторами связи. Затем (в случае успеха) оператор связи тратит время на повторное тестирование приложения, используя собственные тесты в своей сети. И, наконец, выпуск новой версии означает повторное прохождение всего процесса.
Различия между Java ME и BREW
В настоящее время большинство разработчиков предпочитают поддерживать как Java ME, так и BREW, либо только Java ME. Java ME может предложить меньшие затраты на выход на рынок, поскольку большинство операторов разрешают запуск несертифицированных приложений Java ME на своих телефонах. Доля рынка телефонов с Java ME больше, чем у устройств с поддержкой BREW. Java ME широко используется в Европе, в то время как BREW – преимущественно в США и Японии. Одним из первоначальных преимуществ BREW было то, что Verizon упростила покупку приложений непосредственно с телефона, в то время как большинство операторов Java ME этого не делали. Однако сейчас большинство операторов телефонов Java ME предлагают удобные порталы для покупок. Благодаря различным API, Java ME полагается на виртуальную машину Java (код, интерпретируемый виртуальной машиной), которая технически медленнее, чем BREW, использующий нативный C/C++ и прямой доступ к аппаратному обеспечению (особенно для игр). Java ME имеет ограниченный набор API (как для приложений, так и для игр). Однако существуют сторонние API и реализации (например, MascotCapsule от HI CORPORATION – API для 3D-рендеринга, и DoJa/Star от NTT Docomo), но они не получили широкой популярности и успеха за пределами Японии (особенно в плане внедрения на устройствах). BREW, в свою очередь, использует собственные API и прямой доступ к аппаратному обеспечению. Производительность приложений и игр на Java ME ниже, чем на BREW. Для 3D-игр Java ME использует JSR 184 (M3G), из-за чего 3D-игры, разработанные на Java ME, работают медленнее (что приводит к 10 кадрам в секунду на некоторых/большинстве телефонов) и имеют ограниченные графические возможности, в то время как BREW использует либо программный рендеринг (если в устройстве BREW отсутствует 3D-ускоритель), либо OpenGL ES (который позволяет использовать его преимущества в производительности). В отличие от Java ME, при сбое приложения BREW телефон перезагружается, поскольку BREW не может обработать ошибку и восстановиться. В этом случае в корневой папке создается файл "$SYS.EXCEPT (четырехзначный номер)" в папке "except", после чего телефон автоматически перезагружается. Если приложение Java ME сбоит в среде BREW, Java ME корректно обрабатывает ошибку и предотвращает перезагрузку телефона. Некоторые производители телефонов не разрешают интеграцию виртуальной машины Java ME в свои устройства. В настоящее время существуют коммерческие технологии для полной автоматизации переноса проектов с Java ME на BREW. Это снижает порог входа для разработки приложений для BREW, устраняя необходимость разработки двух версий одного и того же приложения на Java и C/C++.
Неисправность системы
Неисправность системы BREW возникает из-за неправильной работы компонентов, отсутствия файла, необходимого для приложения BREW, сбоя приложения или других ошибок. Система создает файл "$SYS. EXCEPT XXXX" в папке "except" в корневом каталоге. Существует два варианта сбоя системы BREW: ошибка компонента и "смертельная перезагрузка".
Ошибка компонента (пример.c XXXXX)
Ошибка компонента – это ошибка, при которой на экране на 5 секунд появляется черный, белый или синий экран с текстом ошибки, после чего телефон автоматически перезагружается, если компонент перестал работать корректно. Эта ошибка может отличаться в зависимости от выполняемых действий, например:
fs dir. c (ошибка файловой системы)
mdsptask. c (ошибка задачи)
oemheap3x. c (нарушение области памяти)
memory. c (повреждение памяти)
nvm. c (нарушение проверки NVM)
srch mdsp. c (ошибка индекса)
callheap. c (ошибка вызова)
mdsptask. c (task error)
oemheap3x. c (heap violation)
memory. c (memory corruption)
nvm. c (NVM check violation)
srch mdsp. c (index error)
callheap. c (call error)
Вероятность возникновения этой ошибки очень мала, так как чаще встречается "зацикливание перезагрузки" (reboot of death). Вот примеры действий, которые могут вызвать эту ошибку:
Понижение напряжения питания телефона во время его работы, что может привести к повреждению памяти (обычно, если уровень заряда батареи низкий, на современных устройствах предусмотрена защита от пониженного напряжения) (например, LG VX10, LG VX4400 и LG PM225).
Телефон находится в неисправном состоянии. Обычно в этом случае телефон переходит в состояние "зацикливания перезагрузки", а не отображает ошибку компонента. Удалена папка "brew", "nvm" или ".efs private". (fs dir. c или nvm. c)
The phone is at a defective condition. Usually, if this happened, the phone will trigger the reboot of death instead of displaying a component error. "brew", "nvm", or ". efs private" folder is removed. (fs dir. c or nvm. c)
Перезагрузка смерти
Перезагрузка смерти — это ошибка, при которой телефон перезагружается самостоятельно, а не отображает черный, белый или синий экран с текстом. Этот вариант встречается гораздо чаще, чем другие. Вот примеры действий, которые могут вызвать перезагрузку смерти:
Аварийное завершение работы приложения. Извлечение карты R UIM. Неисправность телефона. Некорректный ввод SP-кода. Отсутствие необходимых файлов для работы приложения. Запуск теста исключений в инженерном режиме.
Использование устройства и наличие носителя
Qualcomm BREW используется некоторыми производителями мобильных телефонов и мобильными сетями, однако большинство конечных пользователей об этом не знают, поскольку мобильные телефоны, работающие на BREW, как правило, не имеют фирменной маркировки Qualcomm BREW, а BREW работает в фоновом режиме под пользовательскими интерфейсами (оболочками) производителя телефона или оператора. Qualcomm BREW используется компаниями Sprint Nextel, metroPCS, U.S. Cellular, Verizon, Syringa Wireless, Cricket Wireless и AT&T (в модели HTC Freestyle) в США, KDDI в Японии, KT и SK Telecom в Южной Корее, China Telecom в Китае, MOVILNET и BellSouth Chile в Латинской Америке, Sistema Shyam (ныне MTS) в Индии, а также сетью 3 в большей части Европы, Великобритании и Австралии на многих мобильных телефонах, произведенных специально для их сети. Поскольку BREW предлагается только мобильным сетям, работающим в стандарте CDMA, другие страны (за исключением некоторых регионов Европы, Великобритании и Австралии через сеть 3, Индии, Японии и Китая) не используют BREW, так как у них нет сетей CDMA. Такие производители, как Huawei, INQ Mobile, Amoi, LG, Samsung Mobile, ZTE и HTC, среди прочих, используют Qualcomm BREW в некоторых своих мобильных телефонах, и он представлен в телефонах 3 UK, таких как 3 Skypephone, INQ1, ZTE Z431 и Huawei u7510 (3 Touch). Zeebo от Tectoy – единственная игровая консоль, использующая BREW. Qualcomm BREW также используется в моделях T720 и RAZR V3m от Motorola.