|
||
Проект был основан Бобом Амштадтом (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 не заставит себя долго ждать. |
||