# Wine

Wine, ursprünglich ein rekursives Akronym und zugleich Apronym für „Wine is not an emulator“ (englisch für „Wine ist kein Emulator“), ist eine Windows-kompatible Laufzeitumgebung für POSIX-kompatible Betriebssysteme.

## Eigenschaften

Mit Wine ist es möglich, viele Programme, die für die Microsoft-Windows-Betriebssysteme kompiliert wurden, auch unter Unix mit dem X Window System auszuführen.
Wine kann ohne Windows-Installation verwendet werden. Einige Programmbibliotheken sind noch nicht vollständig implementiert, aber Wine kann DLLs einer vorhandenen Windows-Version verwenden, um die Kompatibilität zu Windows-Anwendungen zu verbessern.
Einige, auch vielgenutzte, Windows-Anwendungen werden nicht in ihrer gesamten Funktionalität unterstützt; besonders bei Multimedia und 3D-Grafik gibt es Inkompatibilitäten. Die OpenGL-Implementierung ist allerdings fortgeschritten, sodass auch einige bekanntere 3D-Spiele mit einem kleineren Leistungsunterschied laufen. Auch einige Probleme mit kopiergeschützten Programmen und Spielen sind behoben worden.
Auf der offiziellen Wine-Website gibt es eine Liste mit Anwendungen, die unter Wine laufen.
Neben der Laufzeitumgebung und Anwendungsprogrammierschnittstelle, welche die Basis von Wine bilden, werden auch Windows-Komponenten wie der Dateiverwalter Windows-Explorer und der Webbrowser Internet Explorer nachgebaut.

### Verfügbarkeit

Im Gegensatz zur im Closed Source entwickelten Windows-API ist der Quelltext von Wine und die Dokumentation mit Beispielen öffentlich zugänglich und darf unter den Bedingungen der GNU Lesser General Public License (LGPL) frei eingesetzt, modifiziert und (auch in modifiziertem Zustand) verbreitet werden.
Wine ist auf POSIX-Betriebssystemen wie Linux, Solaris und den verschiedenen BSD-Varianten lauffähig. Es existieren fertige Programmpakete für die gängigen Linux-Distributionen, einige BSD-Derivate und macOS (auf Intel-Hardware), die von der Wine-Projektseite bezogen werden können. Da der Wine-Quellcode frei verfügbar ist, kann das Programm auch auf Linux-/Unix-Systemen installiert werden, für die es keine fertigen Pakete gibt. Bei den populären Linux-Distributionen kann es direkt aus den Standard-Paketquellen installiert werden.

## Geschichte

Bob Amstadt, der ursprüngliche Koordinator des Wine-Projektes, und Eric Youngdale initiierten das Wine-Projekt 1993. Als besonderer Ansporn galten den Entwicklern damals die Erfolge von Sun Microsystems mit Wabi, das bei der Ausführung von Windows-Programmen unter Solaris eine höhere Leistung aufwies als unter einer nativen Windows-3.x-Umgebung. Die ursprüngliche Zielsetzung war, Programme für Windows 3.x (16 Bit) voll zu unterstützen. Zurzeit liegt der Fokus der Entwicklung aber bei den mittlerweile dominierenden Win32-Anwendungen. Seit Juni 1994 leitet Alexandre Julliard das Projekt.
Ursprünglich wurde Wine unter der MIT-Lizenz veröffentlicht. Aber nach Streitigkeiten um Cedega, eine proprietäre Abspaltung von Wine, die ihre Weiterentwicklungen nicht an Wine zurückgab, steht Wine seit März 2002 unter der GNU Lesser General Public License (LGPL).
Mitte 2002 umfasste der in C geschriebene Quellcode mehr als eine Million Zeilen, Ende 2007 waren es bereits knapp zwei Millionen Zeilen. An dem Projekt sind über 1000 Hobby- und Profiprogrammierer beteiligt, die in der ganzen Welt verstreut sind. Zurzeit (Stand: August 2011) werden etwa 90 Prozent der Systemaufrufe unterstützt, wodurch eine Vielzahl von Programmen unter Wine lauffähig sind. Die zurzeit noch nicht unterstützten Systemaufrufe führen, insbesondere bei spezialisierteren Anwendungen wie beispielsweise Computerspielen, zu Problemen. Wine ist nach über 15 Jahren noch immer im Entwicklungsstadium, etwa alle zwei Wochen steht eine neue Version zum Herunterladen bereit. Am 25. Oktober 2005 erschien die erste Beta-Version, die die Versionsnummer 0.9 erhielt. Am 17. Juni 2008 wurde die Version 1.0 veröffentlicht, eine vollständige Umsetzung der Windows-API stellt dies jedoch nicht dar. Die hauptsächlichen Kriterien für die Version 1.0 waren die Unterstützung von Adobe Photoshop 9.0 (CS2) und den Viewern von Microsoft Excel, Word, und PowerPoint der Versionen 97 und 2003. Die Version 1.4 wurde am 7. März 2012 freigegeben und bietet Unterstützung für u. a. Microsoft Office 2010.
Wine wird hauptsächlich für und unter Linux entwickelt, kann aber ebenso gut für andere unixoide Systeme wie macOS, Solaris oder BSD und sogar für nicht unixoide Systeme wie OpenVMS kompiliert werden. Außerdem wurde ein Großteil der Wine-Bibliotheken der Windows-API in das Betriebssystem ReactOS integriert.
Anfang Februar 2014 wurde bekannt, dass es Bemühungen gibt, Wine auf Android, das auf Linux basiert, lauffähig zu machen. Diese Entwicklung befindet sich immer noch in einem frühen Stadium.

## Funktion

Wine ist kein Emulator, sondern stellt lediglich eine Implementation der Funktionen der Windows-API auf GNU/Linux und anderen Unix-ähnlichen Betriebssystemen zur Verfügung. Die Systemaufrufe werden an Linux beziehungsweise den Unix-Kernel sowie das X Window System weitergereicht und normale CPU Befehle direkt auf der CPU ausgeführt. So ist es möglich, dass die über Wine ausgeführten Programme ähnlich schnell wie unter dem Originalbetriebssystem laufen können. Wäre es ein Emulator würde eine bestimmte CPU emuliert und dadurch müssten alle Assemblerbefehle der auszuführenden Programme nachgebildet werden, was meist langsam wäre.
Wine kann die Win16-, Win32- und Win64-APIs von DOS (MS-DOS), Windows 3.1 bis Windows 10 bereitstellen. Der Grad an Unterstützung für die unterschiedlichen Windows-Anwendungen variiert nach Alter und genutzten API-Teilen: Versionen älter als Windows XP werden gut und nahezu vollständig unterstützt. An einzelnen neueren Funktionen von Windows 7 oder 8 und Direct3D wird von den Entwicklern noch gearbeitet. Da die wenigsten Windows-Anwendungsprogramme alle Funktionen der Windows-API benötigen, sind viele trotz unvollständiger API vollumfänglich nutzbar.
Unterstützung für das klassische .Net-Framework ist dagegen insbesondere für neuere Anwendungen limitiert. Sie kann wahlweise über Mono realisiert werden oder indem das .Net-Framework mit Wine nativ installiert wird. In letzterem Fall sind dann allerdings nur 32-Bit-Anwendungen lauffähig.
Ab Version 1.3.12 nutzt Wine den Emulator DOSBox, um Anwendungen auszuführen, die im DOS-Modus starten. Der Emulator ersetzt dann den Virtual 8086 Mode. Dazu muss jedoch DOSBox ebenfalls installiert sein.

## Varianten

* PlayOnLinux – GUI für Wine
* Lutris – GUI für Spiele unter Linux
* q4wine – GUI für Wine
* Cedega (früher WineX)
* CrossOver
* Darwine (inzwischen WineBottler) – für macOS
* ReactOS – verwendet einen Teil der Wine-Bibliotheken, um doppelte Entwicklungsarbeit zu vermeiden
* ReWind (inzwischen in Cedega aufgegangen)
* Wineskin Winery
* Proton – eine von Valve entwickelte freie Software, welche auf Wine aufbaut

## Ähnliche Anwendungen

* Cygwin ist ein Wine-ähnlicher Wrapper mit einer POSIX-kompatiblen Schnittstelle auf Windows, der so unter anderem Linux-Anwendungen auf Windows lauffähig macht.
* Darling ist eine Laufzeitumgebung, die macOS-Anwendungen auf Linux lauffähig macht.
* Windows-Subsystem für Linux (WSL) ist eine Kompatibilitätsschicht zum Ausführen von Linux-Anwendungen in Windows 10.