Good day to all! Immediately to the point: in any multitasking OS, before starting any application you need to create a "process" that has its own address space, at least one thread, etc. ... In this "process" the OS will thrust files compiled into machine instructions ( let's say the software was written in C ++), and this process will start execution, that is, the application will work. But how then does the application written in Python work? After all, the interpreter will take over the work there, or Java software where *. "process" JVM will translate a file into machine code? Then it turns out the Python interpreter gradually translates the file into machine commands and it sticks into the "process", does he have no JITter like Java \ C #? I would be very grateful to everyone for enlightenment ...

  • No one in the know? - Vladimir_X
  • Put commas from the noodle, it seems, it turned out a bit more literate, I hope you do not mind. - etki
  • @Fike - I even thank you! - Vladimir_X
  • Maybe someone even throws a literature on this issue? - Vladimir_X

1 answer 1

An application written in an interpreted language (for example, an interpreted Python dialect) is not launched by itself. The operating system is configured so that when the application is started, the interpreter is actually started, which indicates the source text through the parameters, and it starts to execute it.

The same happens for .class : from the point of view of the operating system, it is not the .class itself that is started, but the Java VM, which in turn runs the JIT compiler, and passes the result to execution.

Everything is a bit more complicated with .NET programs: at the beginning of the program there is a stub that loads the mscoree.dll library, which is already responsible for JIT compilation and running the compiled code. More precisely and in detail here .

  • @VladD Thank you very much for the answer ... - Vladimir_X
  • @Vladimir_X: Please! - VladD