Wine

Wine är programvara som låter en användare köra program för Microsoft Windows under andra, unixliknande, operativsystem. Exempelvis kan man med hjälp av Wine köra Microsofts kontorsprogram i Linux. Wine emulerar inte hårdvaran och programmen måste alltså köras på den typ av dator (datorarkitektur) de är kompilerade för. Eftersom program för Windows i allmänhet bara stöder x86 och AMD64 (x86-64) har Wine inte heller portats till andra datortyper.

Wine erbjuder också ett programbibliotek under namnet Winelib i vilket programmerare kan kompilera Windows-applikationer för Unixliknande system, för att underlätta portning.

Den första stabila utgåvan (version 1.0) av Wine släpptes den 17 juni 2008, efter 15 år av utveckling. Wine är fri programvara under GNU Lesser General Public License.

Ingen emulator 

Namnet Wine kommer från en rekursiv akronym; Wine Is Not an Emulator (Wine Är Inte en Emulator). 

En egentlig emulator emulerar själva datorhårdvaran, Wine emulerar inte processorn. Wine kan köras på en ARM processor. Wine nöjer sig i allmänhet med att förbereda programmets miljö (minnesrymden) så att den till behövliga delar följer konventionerna under Windows och så att anrop till programbibliotek och operativsystem sker via Wine och Winelib. Wine räknas dock som en emulator i den meningen att den erbjuder program en miljö som ser ut att vara, "emulerar", Windows.

Till den del ett program använder kod som distribueras med programmet kan det köra under vilket operativsystem som helst, förutsatt att datorn är av rätt typ (datorarkitektur, till exempel AMD64). Ett program som Wine behövs när tillämpningsprogrammet anropar operativsystemkärnan eller programbibliotek som distribueras med operativsystemet, då programmet tar sig för stora friheter eller då programmet förväntar sig att omgivningen skall följa konventioner som inte gäller på andra operativsystem.

Emulering av hårdvara kräver ofta mycket stora datorresurser och därför är detta, att Wine inte är en emulator, väsentlig för prestandan. De programbibliotek som Wine erbjuder är inte nödvändigtvis långsammare än de som kommer med Windows (också DLL-filer från Windows kan användas under Wine); omskrivning av anropen så att de motsvarar vad som krävs under Unix-system kräver för det mesta marginella resurser. De flesta program blir ändå något långsammare under Wine, dels för att Wine-koden ännu inte är optimerad för snabbhet, dels för att programrutiner skrivna att utnyttja windows-funktioner på optimalt sätt inte nödvändigtvis är optimala i den främmande miljön. En del program kan också ha bättre prestanda under Wine än i Windows. Ett benchmarktest visade till och med att Mozilla Firefox för Windows som kördes med hjälp av Wine var snabbare än Firefox:s Linux-version. En oviss förklaring kan vara långsammare kod när Firefox kompileras med GCC kompilatorn.

Funktion 
 Då man kör ett Windows-program under Wine startar man i själva verket Wine med upplysning om vilket program som skall köras. Wine skapar en Windows-lik miljö för programmet och startar en Wine-server, som bland annat sköter kommunikation mellan Windows-processer. Därefter laddas programmet och de programbibliotek det behöver. Wine-kod sköter om kopplingen mellan wines .so-bibliotek och de efterfrågade DLL-biblioteken.

Då funktionaliteten i programbibliotek eller systemanrop under Windows och Linux motsvarar varandra, är Wine-bibliotekens uppgift i första hand att skriva om anropen så att de blir korrekta under Linux. I de fall där Windows erbjuder ytterligare funktionalitet sköts denna genom extra kod, för systemanrop inom ramen för Wine-servern. Då funktionaliteten i Windows skiljer sig mycket från den i Linux implementeras den helt genom Wine-kod, detta var till exempel fallet med trådar tills trådimplementationen under Linux blev tillräckligt bra. 

Wine har till stor del skrivits med hjälp av omvänd ingenjörskonst som inte kräver kunskap om inre konstruktion eller källkod från Windows.

Program kan även skrivas direkt för Wine eller portas med hjälp av Winelib. Sådana program kan vid sidan av Wine använda normala Linux-programbibliotek (.so) och Linux-systemanrop, utom vad gäller viss funktionalitet, där samspelet mellan Wine och Linux är alltför komplicerat och känsligt, såsom implementationen av trådar.

Med hjälp av Wines konfigurationsfiler kan man vid behov använda Windows' egna programbibliotek förutsatt att man har tillgång till dem, istället för motsvarande Wine-bibliotek. Normalt används Windows-bibliotek om sådana finns, utom i de fall Wine har en fullgod implementation av biblioteket ifråga eller det är känt att Windows-biblioteket inte fungerar tillsammans med Wine.

Ett eventuellt utsläpps kriterium för framtida Wine är USB-stöd och även AcceptEx stöd har implementerats för att kunna koppla up sig till Battle.net.

Portabelt 
Wine är ett portabelt C-program och finns tillgängligt för GNU/Linux, Mac OS, FreeBSD och eventuellt andra BSD-varianter, OpenSolaris och Solaris.

Olika programtyper 
Wine stöder så väl DOS-program (även om stödet för tillfället inte är särskilt bra), 16 bitars program för tidiga Windows-versioner ("NE") och program för olika 32 bitars Windows-versioner ("PE"). 64 bitars program (AMD64) stöds sedan version 1.2, utgiven 2010. I tidigare versioner var man tvungen att använda 32-bitarsvarianter av programmen. I en konfigurationsfil anges vilken version av Windows som Wine skall utge sig vara, normalt (i version 1.3) Windows XP. Man kan prova ställa in Wine på "Windows 98" eller "Windows 95" för äldre program. Fr.o.m. Wine 1.3.15 testas inte längre Windows 9x beteende. Det går till exempel att installera Microsoft Internet Explorer 6.0 med hjälp av Wine.

DOS-program körs i en emulator. 16-bitars Windows-program, som använder samverkande multikörning, körs som trådar i en gemensam process. 32-bitarsprogram körs som separata Unix-processer.

Winetricks 
Winetricks är ett skript för att till exempel installera grundläggande komponenter som krävs för vissa applikationer som till exempel Adobe Photoshop. Exempel av en ungefärlig installation av Photoshop från en terminalemulator, skriv

 wget http://kegel.com/wine/winetricks

 sh winetricks corefonts vcrun6 msxml6 gdiplus gecko vcrun2005

 wine Setup.exe

Winetricks 20110311 har ett nytt grafiskt användargränssnitt.

Crossover 
CrossOver är en kommersiell version av Wine som marknadsförs och säljs av CodeWeavers. Google anställde CodeWeavers att fixa Wine Picasa som körde tillräckligt bra ska flyttas direkt till Linux, med samma binära som på Windows. Google betalade senare för förbättringar av Wines stöd för Adobe Photoshop CS2. Wine är också en vanlig mottagare av Google's Summer of Code program. CodeWeavers stöder Wine projektet. Crossover Linux stödjer bland annat World of Warcraft och Microsoft Office 2007 utom Access, som inte stöds för tillfället. Microsoft Office 2010 fungerar inte bra i dagsläget.

Källor

Webbkällor 
 Wine HQ officiell webbplats 
 Wine Application Database Lista över applikationer som har testats med Wine - med info om hur det gick samt tips för att få det att fungera.

Se även 

 Cygwin - mjukvara för att köra Unix-program under Windows
 CrossOver Office - en kommersiell variant av Wine med teknisk hjälp och grafisk installation för många vanliga program. Används bland annat av Disney för att köra Photoshop under Linux.
 Cedega - ett kommersiellt program som har sitt ursprung i Wine, men numera är helt fristående. Cedega inriktar sig främst på att köra spel som använder DirectX. Många anser att Wine numera har lika bra eller bättre stöd för DirectX, men det kan vara värt att prova om det inte fungerar med Wine.
 ReactOS - ett försök att implementera ett komplett operativsystem som är kompatibelt med Windows och alltså skulle kunna användas istället. Projektet delar mycket kod och flera utvecklare med Wine.
 Dosbox - är en emulator som emulerar en IBM PC kompatibel dator som kör med MS-DOS
 Darwine

Externa länkar 
 Frank's Corner med information om hur Wine kan användas. 
 PlayOnLinux är en programvara som gör att du enkelt installera och använda många spel och program avsedda att köras med Microsoft Windows. 

Fria emulatorer
Rekursiva akronymer
Windowsprogramkörande program
Programvaror 1993