quanto è fattibile portare un codice bytecode in Java bytecode usando LLVM (suppongo LLJVM)?
Il fatto è che al momento abbiamo un processo scritto in C ++ ma un nuovo client ha reso obbligatorio essere in grado di eseguire il programma in modo multipiattaforma, utilizzando la Java Virtual Machine con ovviamente nessun codice (no JNI). L'idea è di essere in grado di prendere il jar generato e di copiare poi su sistemi diversi (Linux, Win, 32 bit - 64 bit) e dovrebbe funzionare.
Guardarsi intorno sembra possibile compilare codice C ++ in LLVM IR e poi quel codice in codice java java. Non è necessario che il codice generato sia leggibile.
Ho provato un po 'con cose simili usando emscripten, questo prende 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 dal bytecode C ++ a Java usando questa tecnica?
- Quali problemi possiamo affrontare?
- È un approccio valido per il codice di produzione?
Per rendere più chiaro il mio punto dopo alcuni commenti, forse la porta non è ben usata, non mi aspetto un codice sorgente leggibile come risultato, solo il bytecode java, quindi non è una 'porta' che sarà sviluppata per più, solo che la piattaforma di destinazione deve essere la JVM java non quella nativa assamblear.
Nota: sono al corrente che al momento abbiamo alcune librerie C ++ non standard e di chiusura, stiamo cercando di rimuovere questo codice non standard e tutte le librerie di sorgenti chiuse e usare il software Free Libre Open Source, quindi supponiamo che tutto il codice sia standard Codice C ++ con tutto il codice disponibile al momento della compilazione.
Nota 2: 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: Al momento non stiamo esaminando soluzioni simili applicate a Python o ad altre basi linguistiche, ma mi piacerebbe anche sentirne parlare. Con questo intendo che il nostro eseguibile di destinazione deve essere un bytecode java, ma se ci sono opzioni per compilare C ++ su codice Python compilato valido vorrei anche sentirmi parlare di loro.