Newsgroup: it.comp.java
Titolo: jvm cuisotià

Salve a tutti
la JVM è una macchina virtuale, che interpreta il bytecode, ma durante 
l'interpretazione, in che modo interverrà il processore della macchina 
fisica?
Alla fine tutte le istruzioni devono essere tradotte negli opcode del 
processore fisico giusto?
O nel caso della JVM c'e' qualcosa di differente?
grazie

 fisica?
La "Java Virtual Machine" in realtà è solo una specifica tecnica, che  
descrive
formalmente quali istruzioni e quali servizi debba fornire una macchina  
virtuale
per essere in grado di eseguire i Java ByteCodes (un tipo "Intermediate  
Language");
esistono moltissime implementazioni della JVM, proprietarie, open,  
software,
hardware, ibride etc... quel componente software che normalmente viene  
chiamato
"java virtual machine" è in realtà solo l'implementazione fornita della  
SUN.
i bytecodes sono delle istruzioni in "formato standard" (quello descritto
dalla specifica tecnica della JVM) e sono diretti alla jvm "reale", che ne
fornisce una implementazione specifica per il sistema su cui gira...
come si fa ad "eseguire" i bytecodes ? ci sono due modalità di  
funzionamento:
  - possono essere "interpretati:
    la JVM funziona come un grosso "oggetto" che fornisce le implementazioni
    in linguaggio macchina di tutti i possibili bytecodes. Il codice java  
verrà
    quindi letto un bytecode alla volta, ed i relativi "metodi" invocati  
sulla JVM,
    che scatenerà tutte le operazioni necessarie sul sistema sottostante.
- possono essere "compilati al volo":
   in questo caso, usato per motivi di performance e non so che altro, la  
JVM
   funziona come un compilatore (compilazione "just in time"): quando le si  
comanda
   di eseguire del codice java, lo legge, lo compila in linguaggio macchina  
e poi lo
   fa eseguire direttamente al sistema...
Spero di esermi spiegato... è un poco complesso e non sono un buon oratore  
;)
-- 
----------------------------------------------------------------------------------
        /)/)             La mia vita è tutta rose e fiori...
       ( '.')
     o(('')('')                          ... ma io sono allergico !!!

il 21/04/2009 21.24, Scrive STB_Caos 43644872:

Giusto per completezza, esiste una terza possibilita'. Il compilatore 
"just in time" di solito non tiene traccia di cio' che ha compilato, 
quindi avviando una nuova jvm il compilatore torna a compilare le classi 
che aveva compilato in precedenza. Esistono compilatori che conservano 
il compilato in stretta corrispondenza con le classi eseguite in 
precedenza.
Che sappia io, questo tipo di compilazione veniva adottata dalla JVM di 
IBM per OS/2 ed e' attualmente adottata dalla JVM IBM per OS400.
-- 
Dr.Ugo Gagliardelli,Modena,ItalyCertifiedUindoscrasherAñejoAlcoolInside
Spaccamaroni andate a cagare/Spammers not welcome/Spammers vão à merda
Spamers iros a la mierda/Spamers allez vous faire foutre/Spammers loop
schijten/Spammers macht Euch vom Acker/Spamerzy wypierdalac'

 hardware, ibride etc... quel componente software che normalmente viene 
Ne avevo perse le tracce delle jvm hardware, ci sono delle 
'implementazioni' valide?
-- 
bye
DKano

 ha  
scritto:

onestamente non seguo più quel settore da molto... le ultime notizie
che avevo riguardavano ARM ed il supporto ibrido (parte hardware, parte
software) a java... sai per via degli smartphones


 come il gcj.
beh si, questo in realtà è un sottocaso del secondo però... invece
di essere la jvm a lanciare il compilatore, lo fai direttamente tu...
non ho mai provato ad usarlo... si ottiene codice decente, con un
reale vantaggio ?
