Byte Code Java

di il
7 risposte

Byte Code Java

Ciao a tutti
per fare le cose per bene sto studiando dall'inizio il Java e volevo sapere da voi se il mio ragionamento è corretto:
alla Sun Microsystem ed al signor James Gosling serviva un compilatore veloce perchè i loro clienti non volevano investire troppo in compilazione.
Per cui hanno ideato il Byte Code che altro non è che la traduzione del codice binario in codice esadecimale. Praticamente il codice sorgente è compilato tutto in codice esadecimale che altro non è che un insieme di istruzioni in byte cioè ogni istruzione corrisponde ad un insieme di 8 bit. Il che vuol dire che per ogni elemento del codice ASCII corrisponde un comando dell ' interprete cioè la Java Virtual Machine che cosi' lavora in modo molto snello e veloce Ho capito qualche cosa o non ci ho capito niente? Grazie

7 Risposte

  • Re: Byte Code Java

    Ragionamento sballato.
    Non hai capito nulla.
    Leggiti wikipedia!
  • Re: Byte Code Java

    Riporto da wikipedia: Jump to search
    "In informatica, il bytecode è un linguaggio intermedio più astratto tra il linguaggio macchina e il linguaggio di programmazione, usato per descrivere le operazioni che costituiscono un programma. È così chiamato perché spesso le operazioni hanno un codice che occupa un solo byte, anche se la lunghezza dell'intera istruzione può variare perché ogni operazione ha un numero specifico di parametri su cui operare. I parametri di queste operazioni possono consistere di registri o indirizzi di memoria, un po' come accade per il linguaggio macchina." Quindi vuol dire che per velocizzare l'interpretazione si sono inventati che il compilatore traduce tutto in comandi di un solo byte a comando. Quindi i simboli del codice ASCII e siccome i simboli sono pochi per la Java Virtual Machine è un gioco da ragazzi interpretare. Scusa mi puoi spiegare meglio vorrei capire bene cosa succede quando do un comando compilo e eseguo
  • Re: Byte Code Java

    Ma tu hai detto questo:

    Lorena ha scritto:


    Per cui hanno ideato il Byte Code che altro non è che la traduzione del codice binario in codice esadecimale
    wikipedia dice "il bytecode è un linguaggio intermedio più astratto tra il linguaggio macchina e il linguaggio di programmazione"
  • Re: Byte Code Java

    Lorena ha scritto:


    Ho capito qualche cosa o non ci ho capito niente?
    La seconda, purtroppo.

    Lorena ha scritto:


    Quindi i simboli del codice ASCII e siccome i simboli sono pochi per la Java Virtual Machine è un gioco da ragazzi interpretare. Scusa mi puoi spiegare meglio vorrei capire bene cosa succede quando do un comando compilo e eseguo
    Non c'entra nulla il codice ASCII.

    Ripartiamo da (quasi) zero: "bytecode" innanzitutto è un termine che viene spesso usato anche in generale. Denota un linguaggio che ha un suo set di istruzioni e che non è più codice "sorgente" (quindi NON è un file di testo intelleggibile) e inoltre, attenzione, NON è nemmeno codice "macchina", cioè il codice eseguibile direttamente da un certo processore (es. gli x86 di Intel/AMD).
    E' un qualcosa quindi di "intermedio". Quale è il vantaggio? Il principale vantaggio è uno: la portabilità. Se prendi per esempio Windows, sai che il codice eseguibile sta nei .exe e .dll. Dentro questi file c'è solo (oltre a "dati" vari, naturalmente) codice macchina nativo del processore. Quindi nei .exe/.dll ci sono istruzioni dei processori x86. E quindi un .exe per gli x86 non lo puoi certo far girare "nativamente" su un processore Arm o un PowerPC.

    Java ha un suo bytecode (inventato da Sun) e una apposita virtual machine, che è in grado di interpretare/eseguire il bytecode. Anche la piattaforma .NET di Microsoft ha un equivalente. Ha un suo "bytecode" (sicuramente radicalmente diverso da quello di Java) e una "macchina virtuale" che è in grado di eseguire quel bytecode. C'è molta similitudine in questo tra la piattaforma Java e quella .NET.

    Il concetto di portabilità in questo contesto è molto semplice: Avendo N piattaforme differenti (per processore/hardware e sistema operativo), se su ciascuna di esse c'è una infrastruttura di "runtime" (la macchina virtuale più altro) apposita, allora è possibile eseguire quel bytecode, senza alcuna modifica al bytecode stesso. E questa è appunto la "portabilità".
  • Re: Byte Code Java

    Grazie mille Grazie della spiegazione Praticamente siccome non volevano mettere un compilatore dentro il frigorifero perché costava troppo si sono inventati un compilatore virtuale loro
  • Re: Byte Code Java

    Peggio : rendendosi conto che il frigorifero era comunque troppo lento, si sono inventati jit
  • Re: Byte Code Java

    Ahahah
Devi accedere o registrarti per scrivere nel forum
7 risposte