Hai un po' di confusione ....Originariamente inviato da Harlandraka_94
Che voi sappiate c'è un modo per generare codice assembly da un .java/.class/.jar??
In alternativa ho visto che con javap si riesce ad ottenere il bytecode del programma che abbiamo fatto, se non si riuscisse a fare nel primo modo, c'è un modo per avere il codice assembly partendo dal bytecode??
perchè programmo in java e ho bisogno di creare un .exe partendo dal mio programma in java... direte: "ma esiste java2exe, exe4j e altri che fanno l'operazione jar-to-exe"... lo so, ma a me serve creare un exe che non necessiti della jvm mentre con java2exe ed exe4j viene richiamata la jvm dall'exe creato e poi viene eseguito il jar... insomma da un programma java c'è un modo di avere il codice assembly??? magari con un programma simile ad OllyDBG... solo che purtroppo ollydbg con i jar non funge...
Grazie in anticipo!!
Quello che c'è dentro i file .class (a parte header, descrittori vari, ecc...) è il "byte code" java, un codice macchina inventato di sana pianta dalla Sun. Non è un codice macchina per un processore fisico, reale esistente. Semplicemente è un set di istruzioni "inventato" da zero.
Poi per la esecuzione reale del bytecode ci sono 2 strade: la interpretazione pura o la compilazione JIT (just in time) che trasforma il byte code nel codice macchina del processore reale. E quest'ultima cosa è quello che fa di norma una virtual machine per una certa piattaforma, perché chiaramente più efficiente.
Detto questo, c'è da dire che qualcosa esiste per ottenere eseguibili "nativi". Parlo di GCJ (vedi http://en.wikipedia.org/wiki/GCJ ). Ma innanzitutto è per gli Unix-like e poi comunque non credo (almeno così sapevo) che sia completo dal punto delle librerie.
Già perché non è tanto questione di generare del codice macchina per un certo processore fisico .... ma avere nativo tutto il set di librerie del runtime java!!
E comunque ci sarebbe da ragionare su cosa vorrebbe dire (senza avere davvero un JRE) fare operazioni che riguardano la reflection o il caricamento delle "risorse".
Morale: se si ha una applicazione Java, meglio farla "girare" con un JRE apposito. Altrimenti si rischia di darsi la classica zappa sui piedi.

Rispondi quotando