Библиотека Qt портирована для работы внутри web-браузера

18 декабря 2009 года

Мортен Сорвиг (Morten Sorvig) из компании Nokia сообщил об успешном опыте портирования библиотеки Qt для работы под управлением фреймворка Google Native Client и запуске первых тестовых qt-виджетов в окне web-браузера. Например, продемонстрирован запуск небольшой игры, написанной с задействованием классов QWindowSurface и QGraphicsSystem. При создании порта использован представленный в октябре инструментарий Lighthouse, созданный с целью значительного упрощения переноса Qt на новые платформы.

В текущем состоянии Qt порт для Native Client находится на стадии, позволяющей скомпилировать модули QtCore и QtGui, работают таймеры, ввод данных через клавиатуру и мышь. Так как Native Client не поддерживает загрузку внешних шрифтов Qt может использовать лишь базовый системный шрифт. С небольшими ограничениями поддерживается работа виджетов, написанных с использованием классов QGraphicsView, QPainter, QThread. Из нерешенных пока проблем отмечается 100% загрузка CPU при выполнении Qt программ, что связано с поддержкой в Native Client только модели обработки событий через поллинг. Для того, чтобы оценить новый порт в действии достаточно установить Native Client и собрать Qt из специальной ветки в Git-репозитории (git://gitorious.org/qt-labs/nacl.git), следуя подготовленному руководству.

Фреймворк Native Client позволяет выполнять в окне web-браузера обычные бинарные приложения, ограниченные в специальном изолированном окружении. В отличии от похожих проектов инструкции при работе программы в Native Client не преобразуются в байткод виртуальной машины, а выполняются как есть, с максимально возможной производительностью (потеря производительности не более 5%). Безопасность в Native Client достигается через изоляцию системных вызовов и прерываний - разрешено выполнение 46 системных вызовов, остальное либо запрещено, либо эмулируется специальным runtime кодом. Сетевые и дисковые функции, а также операции для работы с памятью, обрабатываются специальной подсистемой. Обращение за пределы дозволенных областей памяти блокируются через задействования системы обработки исключений CPU.

С точки зрения разработчика окружение Native Client выглядит как небольшая операционная система со своим, основанным на GCC, инструментарием для кросс-компиляции, частичной поддержкой POSIX и базовым мультимедийным API, который можно использовать для работы с аудио и видео, обрабатываться события от мыши и клавиатуры. Также доступен ряд свойственных web-приложениям функций, таких как загрузка внешней страницы. В этом плане Native Client позволяет организовать выполнение тех же функций, что может обычное web-приложение на JavaScript.

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Библиотека Qt портирована для работы внутри web-браузера», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.