Что такое Wine

 
 

Проект был основан Бобом Амштадтом (Bob Amstadt) в 1993 году как средство запуска 16-битных приложений Windows 3.1 в системе GNU/Linux. С 1994 г. лидером проекта стал Александр Жульярд (Alexandre Julliard). Изначально Wine был выпущен под лицензией MIT, но в марте 2002 г. она была заменена на GNU LGPL.  Текущая версия Wine (апрель 2008) -

Wine делает возможным запуск и работу Windows приложений непосредственно в  среде Unix – подобных операционных систем и в частности Linux. Что же представляет собой Wine? Wine – это альтернативная реализация Windows Application Programming Interface (API) библиотеки, действующая как мост между Windows-программами и Linux. Когда  Windows-программа выполняет какую-либо функцию или операцию непонятную Linux, Wine преводит эту программную инструкцию  в понятный для системы вид. Таким образом  Wine позволяет выполнять в среде Linux многие программы написанные для Microsoft  Windows.

Название Wine является рекурсивным акронимом и расшифровывается  как «Wine Is Not an Emulator» — «Wine это не эмулятор» (имеется в виду, что Wine не является эмулятором операционной системы, то есть он не создаёт изолированной среды для выполнения и не обеспечивает доступ к низкоуровневым системным ресурсам, таким как непосредственный доступ к оборудованию).

Хотелось бы отметить, что любые программы Wine выполняются в непривилегированном режиме и не требует никакой модификации ядра операционной системы (в том числе динамически загружаемых модулей). Отсюда следует простой вывод относительно безопасности: любые проблемы, которые могут быть вызваны запуском win-приложений, будут ограничены правами доступа того пользователя, который запустил Wine. В результате win-приложения будут подчиняться политике доступа UNIX-системы и не смогут её нарушать.

У данного ограничения есть и другая практическая сторона, в Wine нет поддержки низкоуровневого обращения к оборудованию (драйверов оборудования, прямой работы с USB-устройствами). Всё периферийное оборудование следует подключать и настраивать в host-системе. Для win-приложений эти устройства могут быть доступны стандартным способом через файловую систему или другие стандартные интерфейсы (например, TWAIN для сканеров, который реализован в Wine как обёртка над библиотекой SANE).

Wine состоит из нескольких компонент:

libwine - библиотека, предоставляющая все функции WinAPI для win-приложений.

Wine - среда для исполнения двоичных win-приложений, предоставляет программам окружение, неотличимое от Windows. Это окружение помимо Win API включает реестр, стандартные каталоги и файлы. Реестр является единственной изменяемой информацией, необходимой для работы Wine и win-приложений в нём.

стандартные программы - некоторые типичные win-приложения: текстовый редактор (блокнот), файловый браузер и т. п.

средства разработки - средства компиляции и отладки: имеются заголовочные файлы, которые описывают доступное API, компилятор winegcc, представляющий собой обёртку над gcc, отладчик winedbg и прочие вспомогательные утилиты.

Успешность и корректность работы win-приложений в Wine естественно определяется тем, насколько среда Wine неотличима от Windows с точки зрения win-приложения. Иначе говоря, вопрос в том, насколько полно Win API и другие стандартные компоненты и процедуры Windows реализованы в Wine. Текущая оценка полноты реализации конкретных функций публикуется на сайте разработчиков Wine. В Wine реализованы функции практически всех динамических библиотек (DLL), входящих в Windows: начиная от 16-разрядных и заканчивая появляющейся поддержкой 64-битного режима. На хорошем уровне находится поддержка OLE, MSI и DirectX.

Если говорить об общей оценке полноты реализации, то на сегодняшний день разработчики называют цифру 90%. Однако относиться к этой цифре нужно не совсем так, как к обычному процентному соотношению. Дело в том, что с точки зрения успешной разработки Wine, Win API должно быть таким, каким его хотят видеть программы. Полных и безошибочных спецификаций Win API в публичном доступе нет (и никогда не было) и это во многом определило характер разработки на платформе Win. Большинство разработчиков win-приложений используют только незначительную часть стандартных функций API, а остальные необходимые функции реализуют самостоятельно и поставляют вместе с программой. В последние годы подмножество широко используемых функций API в широкой массе win-приложений уже стабилизировалось и практически не меняется. Для Wine это значит, что цифра 90% означает стабильную работу большинства win-приложений в Wine даже больше, чем в 90% случаев.

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