OpenKODE

OpenKODE (сокращение от Open Khronos Development Environment) — открытый, не требующий лицензионных отчислений стандарт программных интерфейсов (API), разработанный консорциумом Khronos Group для создания переносимых мультимедийных и графических приложений, прежде всего для мобильных и встраиваемых устройств. Стандарт был официально опубликован 11 февраля 2008 года. Его основная цель — уменьшить фрагментацию программных платформ и упростить перенос приложений между устройствами с различными операционными системами и аппаратными компонентами.[1]
OpenKODE объединяет программные интерфейсы для графики, звука и обработки мультимедийных данных, определяя правила их совместного использования. Обязательной частью любой совместимой реализации является OpenKODE Core — платформенно-независимый API, предоставляющий приложениям доступ к основным системным ресурсам. Стандарт разработан таким образом, чтобы его можно было реализовать на различных мобильных операционных системах и встраиваемых платформах.[2]
История
[править | править код]Работа над OpenKODE велась в рамках Khronos Group в середине 2000-х годов. Предварительная версия спецификации OpenKODE 1.0 была опубликована в апреле 2007 года. 11 февраля 2008 года организация объявила о выпуске окончательной версии OpenKODE 1.0 на выставке Mobile World Congress в Барселоне. Одновременно были представлены средства проверки соответствия стандарту и инструменты разработки; несколько участников Khronos Group продемонстрировали совместимые реализации.[1]
В дальнейшем выпускались обновлённые редакции спецификации. Версия 1.0.1 вышла 16 июня 2008 года, версия 1.0.2 — 23 февраля 2009 года, а версия 1.0.3 — 20 мая 2009 года. Документация и заголовочные файлы этих редакций доступны в официальном реестре Khronos Group.[3]
Архитектура
[править | править код]OpenKODE представляет собой набор взаимосвязанных API, предназначенных для совместной работы в мультимедийных приложениях. Стандарт определяет обязательные системные интерфейсы и требования к взаимодействию графических и других мультимедийных компонентов. При этом конкретная реализация может включать только те дополнительные мультимедийные API, которые поддерживаются соответствующей платформой и необходимы для её задач.[2]
OpenKODE Core
[править | править код]OpenKODE Core — обязательный компонент стандарта, обеспечивающий переносимый доступ к системным ресурсам. Его интерфейсы охватывают основные операции, необходимые приложениям, включая:
- управление потоками выполнения и обработку событий;
- работу с файлами и вводом-выводом; управление памятью;
- операции со строками и математические функции;
- работу со временем и таймерами;
- сетевые функции;
- взаимодействие с оконной системой и средствами пользовательского ввода.
Интерфейс OpenKODE Core разработан с учётом опыта программирования на языке C и использования интерфейсов, близких по назначению к POSIX. Благодаря этому значительная часть системно-зависимого кода может быть заменена стандартными вызовами OpenKODE, что упрощает адаптацию программ для разных операционных систем.[2]
Графика и мультимедиа
[править | править код]OpenKODE использует другие стандарты Khronos Group для реализации графических и мультимедийных функций:
OpenGL ES — программный интерфейс для аппаратно-ускоренной трёхмерной графики на мобильных и встраиваемых устройствах. OpenVG — интерфейс для аппаратного ускорения двумерной векторной графики. EGL — интерфейс взаимодействия графических API с оконной системой, управления поверхностями рендеринга и графическими контекстами. OpenMAX — набор интерфейсов для обработки и передачи мультимедийных данных. OpenSL ES — интерфейс для работы со звуком на мобильных и встраиваемых платформах. В первоначальной версии OpenKODE 1.0 особое внимание уделялось совместной работе OpenGL ES 1.1 и OpenVG 1.0 посредством EGL 1.3 и соответствующих расширений. Это позволяло использовать общие графические поверхности для двумерной векторной и трёхмерной графики. Интеграция других мультимедийных интерфейсов предусматривалась архитектурой стандарта и последующими расширениями.[2][3]
Переносимость и совместимость
[править | править код]Основная задача OpenKODE — сократить объём изменений исходного кода при переносе мультимедийных приложений между различными платформами. Для этого стандарт предоставляет единый системный API и определяет требования к взаимодействию используемых графических и мультимедийных интерфейсов.
Соответствие стандарту проверяется с помощью специальных тестов. Помимо проверки отдельных API, OpenKODE предусматривает тестирование взаимодействия между компонентами, чтобы обеспечить их совместную работу в рамках одной реализации. При этом стандарт не требует, чтобы все компоненты поставлялись одним производителем: совместимая реализация может объединять программные компоненты от разных поставщиков.[1][2]
OpenKODE предназначался для применения на различных мобильных и встраиваемых платформах, в том числе Linux, Symbian, Windows CE и системах реального времени. Однако наличие спецификации само по себе не гарантирует поддержку стандарта конкретным устройством или операционной системой: для этого необходима соответствующая реализация.
Статус
[править | править код]Спецификации OpenKODE и связанные с ними заголовочные файлы опубликованы в открытом доступе в реестре Khronos Group. В реестре также размещены дополнительные расширения API и ссылки на связанные графические стандарты. По информации самой Khronos Group, активная разработка OpenKODE прекращена.[3]
Примечания
[править | править код]- 1 2 3 Khronos Releases OpenKODE 1.0 Royalty-Free Standard for Mobile Rich-Media and Graphics Application Portability // Khronos Group.
- 1 2 3 4 5 OpenKODE Whitepaper // Khronos Group. — February 2008.
- 1 2 3 Khronos OpenKODE Registry // Khronos Group.
Ссылки
[править | править код]- Сайт группы Khronos Архивная копия от 5 января 2009 на Wayback Machine
- Сайт OpenKODE Архивная копия от 9 мая 2008 на Wayback Machine
- Freekode Архивная копия от 15 февраля 2008 на Wayback Machine открытая кросс-платформенная реализация OpenKODE
- Реестр спецификаций OpenKODE
- OpenKODE Whitepaper (PDF)