Isn't the difference between Windows apps and Linux apps just libraries asked by applications running? (see previous question) How is possible then to make Windows applications running on a Linux system by software which is "not an emulator"!
5 Answers
From here (archived version, because that Wiki page is currently missing)
Wine's not that kind of emulator
When users think of emulators, they think of programs like Dosbox or zsnes. These applications run as virtual machines and are slow, having to emulate each processor instruction. Wine does not do any CPU emulation - hence the name "Wine Is Not an Emulator."
Some people argue that since Wine introduces an extra layer above the system a Windows application will run slowly. While technically true, Wine is no different from any other software library in this regard; even newer versions of Windows must load extra resources to support older applications.
Importantly, the combination of Wine and Unix can sometimes be faster than Windows itself. This is especially true when the system has good drivers and the application isn't exposing any Performance Related Bugs.
An emulator acts completely like something else. These applications normally contain everything the original application or platform contains.
Wine however acts as a translator, by implementing only the required features of Windows and also translating these into instructions which can be understood by X-Windows.
A more practical example would be a virtual machine. When running Windows on Linux using a virtual machine, the virtual machine emulates Windows, as the complete OS is loaded and there is no direct interaction with the host.
However Wine talks to X-Windows for certain instructions directly when and if required, which is why it takes a period of time for applications to work in Wine.
More can be found at Wikipedia here.
- 20,879
Wine is not emulating Windows, but rather is the (or wrapper for ) win32 API for non-windows OS.
- 2,281
For practical purposes Wine is an emulator, or at least it does what most people would expect an emulator to do, even if technically it isn't just an emulator. See the FAQ for a good explanation. This also follows great traditions in Unix naming, cf. GNU's Not Unix. :-)
- 5,940
Wine is runtimable for Linux. ( exe + dll on Linux ) Cygwin,Mingw, MSYS2 or WSL1/2 is runtimable for Windows ( ./configure, sh ld etc ) Darling is runtimable for Linux ( app + dylib on Linux )
Karton is runtimable on macOS ( sh, without extension of applications and so on macOS )
CoLinux is not runtimable just emulator for Windows like Qemu or VMWare Player
Parallel Desktop is emulator for macOS like Qemu.