Перейти к содержанию

OpenKODE

Материал из Википедии — свободной энциклопедии
Логотип 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 разработан с учётом опыта программирования на языке 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. 1 2 3 Khronos Releases OpenKODE 1.0 Royalty-Free Standard for Mobile Rich-Media and Graphics Application Portability // Khronos Group.
  2. 1 2 3 4 5 OpenKODE Whitepaper // Khronos Group. — February 2008.
  3. 1 2 3 Khronos OpenKODE Registry // Khronos Group.