Newsgroup: it.comp.java
Titolo: Sorgenti e Byecode

Le ottimizzazioni non sono straordinarie e i disasemblatori a volte 
falliscono, o scrivono while invece di for. Spesso un'occhiata al 
disassemblato permette di correggere facilmente i punti in cui il 
decompilatore si č incartato.


 wrote in news:X2mE9.51365$
744.1...@news1.tin.it
:

Semplicemente perchč il bytecode dovendo essere portabile su qualsiasi jvm 
non č ottimizzato, java non č certo famoso per le performance :)

 non č ottimizzato, java non č certo famoso per le performance :)
...faccio presente che il processo di ottimizzazione trasforma un blocco di
codice in un'altro blocco di codice piu' efficiente ma "semanticamente
equivalente"!
Il fatto che il codice Java sia piu' o meno ottimizzato non ha nulla a che
vedere con la jvm sottostante e con il requisito di portabilita'.
Anche se Java avesse un ottimo ottimizzatore, questo non avrebbe alcun
impatto sulla jvm che si troverebbe ad eseguire soltanto un blocco di codice
piu' efficiente ma con la stessa semantica del blocco originale.
Ciao

 Anche se Java avesse un ottimo ottimizzatore, questo non avrebbe alcun
<SNIP>
Non è assolutamente vero, è proprio per il fatto che il bytecode deve 
essere eseguibile su qualsiasi jvm che non può essere ottimizzato!
Un qualsiasi programma compilato su una macchina, effettua le dovute 
ottimizzazioni per quella architettura.
Altrimenti secondo te perchè molti amministratori di sistema scaricano i 
sorgenti delle distro Linux, per ricompilarli, invece di utilizzare 
tranquillamente i binari disponibili?
Perchè ricompilandoli sulla propria macchina gauadagnano in performance.
Ciao

ottimizzazioni per quella architettura.
Appunto.
In questo caso l'architettura *č* la JVM.
Ovviamente ne esistono implementazioni piů o meno performanti, ma non 
dipende dal bytecode.
-- 
Ciao
	Fabrizio C.

 ha scritto nel messaggio
news:MPG.184c61094...@news.cis.dfn.de...

Pienamente d'accordo con Fabrizio C!
Il discorso va riferito allo stack di RTS (Run-Time Support)
Le ottimizzazione dipendendi dalla piattaforma hardware-software in Java non
esistono!! Il codice Java viene compilato PER la jvm ed il bytecode ottenuto
viene INTERPRETATO e non compilato. Il codice che viene compilato per la
piattaforma HW e' il codice della jvm che si interfaccia direttamente con la
piattaforma hw-sw della macchina ospite.
(I codici per Linux che si scaricano per essere ricompilati in genere non
sono scritti in Java  ;-)    )
Faccio una digressione, giusto per essere completi, il codice C# ad esempio
viene compilato nel codice MSIL della Virtual Machine di .NET (simile al
bytecode code di Java): questo codice pero', anziche' essere interpretato
(come in Java), viene compilato in fase d'esecuzione nel codice nativo della
piattaforma hw-sw della macchina sottostante ed e' in questo caso che si
hanno delle ottimizzazione platform-dependend.
Ciao,
   orlando

 essere eseguibile su qualsiasi jvm che non puň essere ottimizzato!
Uh? La JVM e' un'architettura di processore, esattamente come le altre.  
Perche' mai non dovrebbe consentire ottimizzazioni?
Se ti preoccupa il fatto che non sia implementata in hardware, e' vero, ma 
questo implica che c'e' un secondo layer di "ottimizzabilita'" quando il 
bytecode viene eseguito su una particolare architettura fisica - che e' in 
sfruttato sia dal compilatore che compila la JVM, sia dai compilatori JIT 
che analizzano e ricompilano al volo bytecode in codice nativo.
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

 ha scritto nel messaggio
news:MPG.184c61094...@news.cis.dfn.de...


hanno delle ottimizzazione platform-dependend.
Allo stato attuale (AFAIK) credo sia piů corretto dire "si possono avere".
Il discorso sarebbe lungo, un po' OT nonostante le analogie con Java. E io 
non mi sento la persona adatta ;-)
-- 
Ciao
	Fabrizio C.

 dipende dal bytecode.
Credo di essermi spiegato male, intendevo dire che è più semplice 
risalire al codice Java originale appunto perchè è la JVM ad ottimizzare 
il codice, è non è il bytecode stesso ad essere ottimizzato.
Ciao


....ma perche' non vuoi che il bytecode sia ottimizzato?   ;-)
Come ho detto in un post precedente, ho scritto il codice Java:
public static void main(){
      int x = 0;
      if(true)
           x = 1;
      else
           x = 2;
 }
compilato in bytecode e decompilato ed ho ottenuto:
public static void main()
    {
        boolean flag = false;
        flag = true;
    }
ora (tralasciando discussioni sui tipi piu' o meno conformi a quelli
originali), come puoi vedere l' "if-then-else" e' scomparso: questa *e'*
un'ottimizzazione; Java ha subito dal compilatore un processo di
ottimizzazione producendo bytecode ottimizzato!
Ciao

 wrote in news:GD%E9.789
$
2W2....@news2.tin.it
:

Mi rispiego meglio :))
è ottimizzato per quanto riguarda il codice, come tu stesso hai 
dimostrato ma non per quanto riguarda l'architettura.
Cosa che puoi constatare leggendo le specifiche della sun.
Ciao Ciao

 dimostrato ma non per quanto riguarda l'architettura.
..aggiungerei: ...non per quanto riguarda l'architettura hw.
...ok, comunque penso di aver capito cosa volevi dire ;-)
Ciao

 wrote in news:XM1F9.1965
$
2W2....@news2.tin.it
:

Capisco di essere stato un po "criptico" :)