quanto è fattibile il porting di un'applicazione C ++ su bytecode Java usando LLVM (immagino LLJVM)?
Il fatto è che attualmente abbiamo un processo scritto in C ++ ma un nuovo client ha reso obbligatorio essere in grado di eseguire il programma in un modo multipiattaforma, utilizzando Java Virtual Machine ovviamente senza codice nativo (senza JNI). L'idea è quella di essere in grado di prendere il vaso generato e copiarlo su sistemi diversi (Linux, Win, 32 bit - 64 bit) e dovrebbe funzionare.
Guardarsi intorno sembra che sia possibile compilare il codice IR da C ++ a LLVM e quindi quel codice in codice byte java. Non è necessario che il codice generato sia leggibile.
Ho provato un po 'con cose simili usando emscripten, questo richiede il codice C ++ e lo compila in JavaScript. Il risultato è JS valido ma totalmente illeggibile (sembra assambler).
- Qualcuno ha fatto una porta di un'applicazione da C ++ a bytecode Java usando questa tecnica?
- Quali problemi potremmo affrontare?
- È un approccio valido per il codice di produzione?
Per rendere più chiaro il mio punto dopo alcuni commenti, forse la porta non è ben utilizzata, di conseguenza non mi aspetto un codice sorgente leggibile, solo jtecode bytecode, quindi non è una "porta" che verrà sviluppata per più, solo che il la piattaforma di destinazione deve essere la JVM java e non l'assamblear nativo.
Nota: sono consapevole che attualmente abbiamo alcune librerie C ++ non standard e sorgenti chiuse, stiamo cercando di rimuovere questo codice non standard e tutte le librerie sorgenti chiuse e utilizzare il software Open Source Free Libre, quindi supponiamo che tutto il codice sia codice C ++ standard con tutto il codice disponibile al momento della compilazione.
Nota2: Non è un'opzione per scrivere codice C ++ portatile e quindi compilarlo sulla piattaforma di destinazione desiderata, il programma compilato deve essere multipiattaforma, quindi l'uso di JVM.
Nota 3: In questo momento non stiamo esaminando soluzioni simili applicate a Python o ad altre lingue, ma vorrei anche sentirne parlare. Con questo intendo che il nostro eseguibile di destinazione deve essere bytecode java ma se ci sono opzioni per compilare C ++ in codice compilato Python valido, vorrei anche sentirne parlare.