<div class="gmail_quote">On Wed, Feb 25, 2009 at 7:37 PM, Ben Klein <span dir="ltr"><<a href="mailto:shacklein@gmail.com">shacklein@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div><div></div><div class="Wj3C7c">2009/2/26 King InuYasha <<a href="mailto:ngompa13@gmail.com">ngompa13@gmail.com</a>>:<br>
> On Wed, Feb 25, 2009 at 6:50 PM, Ben Klein <<a href="mailto:shacklein@gmail.com">shacklein@gmail.com</a>> wrote:<br>
>><br>
>> 2009/2/26 King InuYasha <<a href="mailto:ngompa13@gmail.com">ngompa13@gmail.com</a>>:<br>
>> > Now that Nautilus has the desktop file requiring execute bit, I have a<br>
>> > question for all of you to consider. Do JAR files require the +x bit to<br>
>> > load<br>
>> > them, or are they treated like associated files and run through the<br>
>> > interpreter? Really, Windows apps on Linux is basically the same<br>
>> > situation<br>
>> > as Java applications run through the bytecode interpreter.<br>
>><br>
>> You just answered your own question. Java is interpreted and has to be<br>
>> passed through a compatible byte-code interpreter. Wine does not<br>
>> interpret PE files in this fashion, and cannot because it is not and<br>
>> does not have a CPU emulator. So a JAR file should run if passed as an<br>
>> argument to the interpreter, just like what happens with the scripting<br>
>> languages that open the file for reading instead of trying to fork and<br>
>> execute.<br>
>><br>
><br>
> But, doesn't Wine translate Win32 calls into its equivalent calls for Linux?<br>
> GDI to X11, D3D to OpenGL, etc.?<br>
> That sounds like an interpreter to me. It may not necessarily a bytecode<br>
> interpreter, but it still interprets the Win32 API and translates it to the<br>
> appropriate UNIX APIs. Isn't this what makes Wine not an emulator?<br>
<br>
</div></div>It's a compatibility layer. It doesn't actually interpret individual<br>
instructions. As described earlier, Wine sets up an environment<br>
suitable for the Windows apps to run in (which is primarily<br>
*implementations* of win32 calls that "translate" in one way or<br>
another into *nix/X11 calls) and then just lets it do its thing.<br>
Unlike in Java, scripting languages etc, Wine does not read in the<br>
application one instruction at a time and do a mapping/translation<br>
into executable functionality. The assembly components (such as<br>
mathematical operations) run as if it was a native application.<br>
</blockquote></div><br><div>So, in theory, Wine could simply run itself on top of Linux (basically a ReactOS desktop on top of Linux instead of the NT kernel) and work just like Windows because it operates in a native app style? Granted, that probably would require quite a bit of tweaking to get it done, and the devs probably wouldn't want to do it, but because of its design, that would be possible?</div>