Компания 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, но ни с кем этой библиотекой не поделились».