Компания SpecOps Labs создала инструментарий для запуска Windows-приложений в Linux
В SpecOps уклоняются от обсуждения деталей реализации своего продукта, названного David. Вместо этого компания проводит так называемые «концептуальные демонстрации» для потенциальных партнеров

Прежде не известная почти никому филиппинская компания представила программный инструментарий, который, по утверждению ее представителей, позволит запускать практически любое Windows-приложение на компьютере под управлением операционной системы Linux. Подробности о том, как работает этот пакет, не раскрываются. В компании SpecOps Labs лишь заявляют, что применили принципиально новый подход к решению известной проблемы, использовав для этого как наработки сообщества Open Source, так и закрытый код, созданный своими силами.

Работа над этим проектом велась с 2002 года. Основатель SpecOps Фред Льюис прежде был одним из руководителей другой филиппинской компании, деятельность которой была связана с телекоммуникационными технологиями. Один из инженеров этой компании и предложил новый способ запуска Windows-приложений в Linux. Вскоре после этого Льюис прочел в прессе об американской компании CodeWeavers, создавшей инструментарий, обеспечивающий работу Microsoft Office в среде Linux. Он обратился к своему инженеру.

«Как только я увидел эту заметку, сразу же решил уточнить, это то же самое, о чем говорил наш программист, или нет. Он ответил ?Ага?, хотя предложенный им подход позволял работать с гораздо большим числом программ», — рассказывает Льюис.

Так началась история SpecOps Labs. Сегодня эта компаниям со штатом в 20 человек собирается достичь того, что в сообществе Linux считалось почти невозможным, — работы большинства Windows-приложений непосредственно в ОС.

«После двух лет работы над программным обеспечением наша компания планирует выпустить его первый бета-релиз в конце года», — заявляет Льюис.

В SpecOps уклоняются от обсуждения деталей реализации своего продукта, названного David. Вместо этого компания проводит так называемые «концептуальные демонстрации» для потенциальных партнеров. В июле David привлек внимание японской компании TurboLinux, которая подписала со SpecOps протокол о намерениях.

«Судя по тому, что мы видели, продукт очень прост в установке и работает в фоновом режиме, — пояснил Майкл Дженнингс, руководитель международного направления развития бизнеса TurboLinux. — Нас это очень привлекает, ведь основные преграды на пути роста популярности настольных версий Linux связаны с отсутствием поддержки Office».

Однако TurboLinux, по словам Дженнингса, пока не собирается покупать David. Опыт работы с представленным программным обеспечением ограничивался его просмотром в офисах SpecOps Labs.

«Мы не видели его в работе у себя в TurboLinux, и наши разработчики не могли протестировать его напрямую», — добавил он.

В David включена одна из технологий, к которым часто прибегают пользователи Linux для запуска кода Windows. Это Wine, программное обеспечение с открытым кодом, используемое также и компанией CodeWeavers. В нем реализованы многие функции, необходимые для работы Windows-программ в Linux. Но в то же время David содержит и собственный закрытый код, включающий ряд API для поддержки функций Windows и компонент виртуализации, схожий с разработками компании VMware. Все это требуется для симуляции присутствия на компьютере различных частей Windows, что в свою очередь позволяет запускать на нем Internet Explorer, приложения Microsoft Office и т. д.

«Мы тоже используем концепцию виртуальной машины, но на уровне компонентов, — отметил Льюис. — Это кардинальным образом отличается от того, что сделано в рамках проекта Wine или разработчиками из CodeWeavers. Пока мы не можем раскрыть, что именно мы делаем. Но все это — единая технология».

По его словам, фактически реинжиниринг кода всех API операционной системы Windows, который проводится в рамках проекта Wine, представляет собой слишком сложную задачу. Поэтому ее решение и продвигается так медленно, здесь же следует искать и причину того, почему в Wine не реализована поддержка новейших API от Microsoft.

«Это затрудняет обеспечение возможности запуска многих современных Windows-приложений непосредственно в Linux, если не делает его вообще невозможным», — заявил Льюис.

Однако с помощью программного обеспечения виртуализации, созданного компанией SpecOps, David можно легко синхронизировать с последними версиями API для Windows. Льюис уверяет, что это также облегчает запуск приложений, зависящих от функций, используемых в Internet Explorer.

«Если бы мы придерживались подхода, выбранного разработчиками Wine, то это заняло бы вечность, — говорит он. — Мы полагаем, что нашли способ сделать это гораздо проще».

Основу David составляют центральное ядро промежуточного слоя и программное обеспечение виртуализации, в которое включен как код Wine, так и собственные модули, применяемые для реализации других программных интерфейсов Windows. По словам Льюиса, одной из групп таких API, имеющейся в David, но отсутствующей в Wine, является набор интерфейсов GDI32.DLL, используемый для реализации двухмерной графики в Windows.

Поверх ядра David будет работать множество Windows-приложений, в том числе инсталлятор программного обеспечения, а также Linux-эквиваленты хорошо известных утилит File Manager и Control Panel. В SpecOps реализовали и несколько других Windows-служб, в том числе буфер обмена, позволяющий переносить объекты между приложениями.

Компания уже вызвала недовольство Linux-сообщества из-за использования открытого кода Wine в качестве основы для закрытого продукта. Разработчики Wine критикуют SpecOps за то, что в компании воспользовались более мягкими условиями лицензии Lesser General Public License, в соответствии с которой распространяется Wine. Лицензия LGPL отличается от стандартного варианта GPL тем, что допускает сочетание открытого кода и закрытого.

«Часть этой проблемы заключается в завесе секретности, окружающей David, — заявил Джереми Уайт, директор CodeWeavers. — Я бы сказал, что тем самым они нарушили правила, пусть и неписаные, создания проектов с открытым кодом».

Уайт также пояснил: «Когда мы пишем динамическую библиотеку, мы делимся ею со всеми, а они написали замечательный аналог GDI32.DLL, но ни с кем этой библиотекой не поделились».