Fondamentalmente capisco l'idea di codice gestito e nativo e il loro difference. Ma come è tecnicamente possibile per loro comunicare tra loro? Immagina il seguente esempio:Codice misto (nativo, gestito): come interagisce (tecnicamente)?
Ho una libreria C++ statica o dinamica che è compilata per una piattaforma specifica. Ora scrivo un programma Java. All'interno di questo codice chiamo le funzioni della libreria con la parola chiave 'nativa'. Costruisco un file jar con il bytecode e i file della libreria C++ rimarranno separati. Il risultato non sarà più indipendente dalla piattaforma.
Ma come fa il programma java a sapere se esistono i metodi nativi chiamati?
Come viene eseguito l'intero codice durante il runtime? So che il bytecode verrà interpretato o compilato con JIT.
Come tutto questo si inserisce nel paradigma sandboxing? Il codice nativo viene eseguito anche all'interno della sandbox?
Funziona perché sia il codice (java e C++) sia il codice macchina alla fine?
Forse questa è una domanda stupida. Ma mi stavo sempre chiedendo ...
EDIT: Ho ricevuto 3 buone risposte. davvero non riesco a decidere quale mi ha aiutato di più. Ma segnerò questa domanda come risposta per chiudere questo argomento dalla mia parte.