Newsgroup: it.comp.java
Titolo: JDK1.2. Compilo ma non eseguo. Perchè ?

Ho scaricato JDK1.2 dalla Sun e l'ho installato sul mio PC a casa,
seguendo le indicazioni. Poi ho iniziato a leggere il tutorial e mi sono
avventurato nel primo esempio. E sono iniziati i miei guai:
il file è "c:\provaj\HelloWorldApp.java"
/**----------------------------------------------------------------
* The HelloWorldApp class implements an application that
* simply displays "Hello World!" to the standard output.
*/
class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); //Display the string.
    }
}
/*----------------------------------------------------------------*/
Ho compilato il file con:
c:\provaj>javac HelloWorldApp.java
ed è andato tutto OK (anche se la compilazione è stata mooolto
lenta rispetto ad un analogo programma in Visual C++, che
tra l'altro deve anche linkare dopo la compilazione !!!).
Almeno il path lo ho configurato correttamente ;-)))
Il bello (eufemismo) è che quando ho provato ad eseguire
la classe con:
c:\provaj>java HelloWorldApp
mi genera il messaggio:
Exception in thread "main" java.lang.NoClassDefFoundError : HelloWorldApp
Avete qualche suggerimento ?
Grazie anticipatamente.

Bene. Mi rispondo da solo ;-)))
Dopo una serata passata a rovistare nella documentazione ho
scoperto che quanto dice la pagina html del download di java (Sul sito
della Sun) č fuorviante. Infatti viene menzionato che la CLASSPATH deve
essere settata solo per chi fa l'upgrade a JDK1.2, mentre io lo
ho installato da zero...allora ho provato con:
c:\provaj>set CLASSPATH=.
ed ha funzionato !!!
Comunque c'č ancora il problema della lentezza. Infatti HelloWorldApp
č circa 300byte. Lo ho confrontato con l'esempio MDIDOCVW del Visual
C++ ottenendo:
HelloWorldApp.java (~250byte) --> javac(1.2) compila in 40 sec.
MDIDOCVW (~30000byte) ---> VC++(5.0) compila in 70 sec. !!!
Qualcuno sa spiegarmi perchč javac č ~65 volte piů lento ?
Saluti e buon lavoro.
Davide.


Stai parlando del compilatore? 
Di compilatori java ce ne sono parecchietti, in giro, ed esitstono
anche implementazioni piu' veloci di quello fornito con il JDK di SUN
(prova ad esempio a scaricarti quello di IBM o quello di Microsoft)
Quello del JDK e' lento principalmente perche':
- e' scritto in java (sun.tools.javac.Compiler) e come tale a runtime
e' interpretato
- per partire e' necessario istanziare una VM
Secondo me, pero', comparare i tempi del compilatore non e' la cosa
piu' intelligente per verificare le performance di un linguaggio.
Ciao,
| --
| Bruno Bossola
| Groupware/Intranet B.U.           Phone:  +39-11-2252211
| ATOS SpA v.Vaninetti 27           Fax:    +39-11-2203182
| I-10148 Torino ITALY              Change NOSPAM in atos to email me!

 Qualcuno sa spiegarmi perchč javac č ~65 volte piů lento ?
A parte che probabilmente hai commesso un errore di battitura (70 o 40
sec)... comunque tieni conto che javac č esso stesso scritto in java
quindi istanzia una JVM. Questo significa che gran parte del tempo viene
impiegato per avviare la JVM, la compilazione vera e propria impiega
ovviamente molto meno (prova anche a lanciare javac senza parametri).
Inoltre tieni conto che il VC fa il "furbetto" (in senso buono) perchč
utilizza gli header precompilati, se esegui una rebuild totale i tempi
si alzano discretamente.

ovviamente molto meno (prova anche a lanciare javac senza parametri).
Si. Anche io ho avuto il sospetto che dietro ci siano dei tempi di start-up
indipendenti dalla dimensione del file da compilare. Ma volevo conoscere
anche il punto di vista di chi ha avuto maggiori esperienze di sviluppo
Java.
In ogni caso, per pura estensione del test, si avrebbe che javac compila
30K all'ora: un tempo improponibile, mi pare.
Ciao.

Avete qualche suggerimento ?
Hai impostato il CLASSPATH? 
Eliminalo!

 30K all'ora: un tempo improponibile, mi pare.
Infatti javac non č un fulmine ma i tuoi tempi sono fuori dal mondo...

Infatti javac non è un fulmine ma i tuoi tempi sono fuori dal mondo...
Non so dove lavori, ma in giro ci sono ancora un sacco di 486,
P100 ecc...Funzionano benissimo e le aziende non possono
permettersi di buttare nel cesso decine di milioni per fare degli
upgrade ogni due o tre anni.
Ho lavorato in quattro posti diversi da quando ero
tesista e ho sempre trovato macchine piuttosto al di sotto
dell' "entry level". Quindi i MIEI tempi non sono assolutamente
fuori dal mondo. Anche se i tempi assoluti non sono di minimo
interesse in qs. discussione.
Mi dispiace per i lettori del NG se qs. thread è sconfinato
un pò dalle intenzioni iniziali (il CONFRONTO prestazionale),
ma mi premeva precisare delle questioni che, data la
risposta, forse non avevo esposto con sufficiente chiarezza.
Buon lavoro a tutti.

 Qualcuno sa spiegarmi perchè javac è ~65 volte più lento ?
------
Come hai ottenuto (o calcolato) quei 40 e 70 sec e come hai calcolato
che javac è 65 volte più lento? Perdonami ma non ho capito.

che javac è 65 volte più lento? Perdonami ma non ho capito.
Allora: ho compilato 250 byte con javac e lo ho fatto in 40 secondi dal
momento in cui ho premuto ENTER al momento in cui il compilatore
mi ha notificato l'avvenuta compilazione. Discorso analogo per il VC++,
cambia solo la dimensione del file, che è di 30K, e il tempo, che è
di 70 secondi.
Se poi vuoi confrontare le due cose, devi normalizzare in qualche modo,
ad esempio cercando la velocità in byte al secondo:
250 diviso 40 viene fuori 6,25 byte al secondo
30000 diviso 70 viene fuori 428 byte al secondo
quindi 428 diviso 6,25 viene 68. Ovvero abbiamo almeno un
ordine di grandezza tra le prestazioni (apparenti) di java e VC++.
Io ho ulteriormente approssimato a 65 perchè mi piaceva di
più, ma tenuto conto degli errori di approssimazione, avrei
anche potuto dire 50. Infatti ho scritto "~65" e non "65" !
Ciao.
Davide.

 sembrarti assurdo. 
non e' assurdo.
Vi state perdendo in un bicchiere d'acqua,semplicemente avendo solo 16mb ram
win e' costretto a 
swappare pesantemente,risultato:40 sec.
Cmq per dovere di cronaca quando installi Java ti viene chiesto almeno 32mb
ram,
io ne ho 32 e swappa molto da me.
Fatti i conti,64mb ram costano 150k,secondo me vale la pena.
-- 
 Signed: Paolo"Flag"Pisati            Be-Developer#E-17711
 Resistance is not futile.Be.         Born to walk against the wind          
 

30K all'ora: un tempo improponibile, mi pare.
Il progetto a cui sto lavorando attualmente è di 356KB in 63 file: una
"rebuild all" ha impiegato 1 minuto e 20 secondi su un P166MMX.
--
Bye,
  Dario
ICQ: 
http://wwp.mirabilis.com/11871099
Remove anti-spam from e-mail address

HelloWorldApp COMPILA IN 40 SECONDI
Ritengo sia un problema di RAM insufficiente. Hai controllato se
durante la compilazione il disco frulla?


 di 70 secondi.
Mi spiace tornare sempre sulle stesse questioni ma è inevitabile: con
una macchina paragonabile alla tua (un P133) con 64M di ram i tempi sono
fino a 5 volte inferiori. Il tuo problema è che sia javac che VC++ 5.0
installati su una macchina con 16M di ram ci stanno *molto* stretti. Con
32M o 64M il problema non si sarebbe nemmeno posto (se vuoi sapere la
mia opinione, anche una compilazione del genere in C++ che dura 70
secondi mi avrebbe già esasperato... )

Grazie anticipatamente.
Nessun problema.
CIAO
pab...@freemail.it