I basically understand the idea of managed and native code and their difference. But how is it technically possible for them to communicate with each other? Imagine the following example:
I got some static or dynamic c++ library which is compiled for a specific platform. Now I write a Java Programm. Inside this code I call the library functions with the 'native' keyword. I build a jar file with the bytecode and the c++ library files will stay separate. The result will no longer be platform-independent.
- But how does the java programm know if the called native methods exists? 
- How is the whole programmcode executed during runtime? I know that the bytecode will be interpreted or compiled with JIT. 
- How does this all fit in the sandboxing paradigm? Is the native code also executed inside the sandbox? 
- Does it work because both (java and c++) code is machine code in the end? 
Maybe this is a dumb question. But I was always wondering...
EDIT: I got 3 good answers. really can't decide which helped me the most. But i will mark this question as answered to close this topic from my side.
 
     
     
     
    