Newsgroup: it.comp.programmare.win32
Titolo: Velocita' programmi C++ e Java

Ciao a tutti
Scusa l'intromissione ma e' da un po' di tempo che mi e' sorta questa
domanda a proposito del Java che e' lento in quanto interpretato.
Se io faccio del codice java, e quindi creo un file.java, poi posso ottenere
un file.class che verra' interpretato dalla Java Virtual Machine per farlo
eseguire al S.O. dove il programma sta girando, giusto?
A questo punto posso pensare di rendere il mio programma piu' veloce,
fregandomene della portabilita', convertendo il mio file.class in puro
file.exe se sono sicuro di eseguirlo solo in ambiente windows.
La mia domanda e' questa:
esiste un tool per convertire un file.class (o un file.java) in eseguibile
che non ha bisogno della JVM?
Questo eseguibile avra' una velocita' paragonabile a un analogo programma
scritto in C++?
Grazie
Maurus

scritto in C++?
No
--
Lawrence Oluyede
rhy...@myself.com

 Lawrence Oluyede
Ciao Lawrence,
avevo pensato infatti che esistesse gia' qualcosa del genere.
Ma il fatto che si limiti a linkare staticamente una libreria, per poi
costringere a portarsi dietro la JVM non mi "sconfinfera".
Stavo pensando a un tool che, fregandosene del fatto della portabilita',
prendesse in input un file.java per produrre in output un file.exe.
Insomma un compilatore Java che mi producesse un bel file.exe pronto per
essere eseguito alla velocita' della luce!
Notare che con lo stesso file.java conservo la portabilita' in quanto se
volessi eseguirlo in ambiente linux, anche se manca questo tool sotto linux,
potrei sempre sfruttare la JVM di linux convertendo il mio file.java in
file.class.
Possibile che nessuno abbia realizzato un tool JavaToExe sotto windows o
sotto Linux che realizzi un eseguibile a velocita'  comparabile a un
eseguibile fatto col C++?
Maurus

eseguibile fatto col C++?
se leggi bene il mio post io ho menzionato "Jet" che è un
tool che potrebbe fare al caso tuo
cmq leggiti prima questo:
http://space.tin.it/computer/csadun/javafaq.html#d1-42
--
Lawrence Oluyede
rhy...@myself.com

 a écrit dans le message news:
oaijaucsaeu2do924...@4ax.com...

Ti ringrazio per il link.
Vedo che non c'e' altro che questo Jet o l'altro Jove dunque.
Quello che non capisco e' come mai uno sia costretto a linkare staticamente
la JVM nel proprio progetto.
Tu mi hai scritto:
"...cmq ti serve un tool tipo Jet che non fa altro che
linkare staticamente la JVM nel tuo eseguibile (producendo
un file di dimensioni elevate)".
Per cui avrei due difetti nel mio eseguibile.
Un file di dimensioni elevate, ed un eseguibile non ottimizzato in velocita'
di esecuzione in quanto c'e' ancora bisogno di passare attraverso la JVM.
Debbo per cui dedurne che ancora non esiste un compilatore Java che mi
traduce un file.java in file.exe "direttamente" (ovvero senza dover
utilizzare la JVM).
E' forse il fatto di utilizzare la JVM che rende questi eseguibili ancora
lenti rispetto a quelli generati dai cugini C e C++ ?
Maurus

che non ha bisogno della JVM?
Mi pare che gcc dalla versione 3.0 compili anche java direttamente in
un eseguibile.
Non so se funziona solo su unix o anche su win (per cui mi pare che
però gcc 3 sia ancora in versione beta).
-- 
Marco Barisione (ICQ 84277092)

lenti rispetto a quelli generati dai cugini C e C++ ?
Esatto
--
Lawrence Oluyede
rhy...@myself.com


Il fatto e' che mi piace sapere che, senza toccare una linea di codice, il
mio file.java puo' essere utilizzato anche su piattaforme linux.
So che anche col C++ standard posso raggiungere lo stesso scopo ma nella
libreria standard C++ mancano diverse cosette pratiche tipo la grafica,
gestione periferiche (tastiera, seriali, parallela, ...), networking,
sockets, multitask ecc...
Indi per cui e' chiaro che il mio linguaggetto dei sogni dovrebbe essere
multipiattaforma (ed il java lo e'), interpretabile o no (nel senso che
posso scegliere se tradurlo in file.class per farlo "lavorare" dalla JVM
oppure, data la piattaforma su cui voglio farlo girare, tradurlo in
eseguibile "veloce", senza JVM tra i piedi, con un tool apposito legato alla
piattaforma: un JavaToExe per windows e un JavaToBin per Linux).
Mi sono spiegato?
Per cui ne' Jet, ne' Jove soddisfano questi requisiti, ne' C++ ne' C li
soddisfano e neppure il Java interpretato.
Se ha ragione Barisone nell'altro post forse e' il gcc che li soddisfa.
Resta da vedere la "bonta'" dell'eseguibile che realizza in termini di
velocita' di esecuzione e in dimensioni.
Se ancora vi sono dubbi su quello che chiedo domandate pure.
Maurus

 che non ha bisogno della JVM?
Un po' di tempo fa avevo provato ad utilizzare towerj. Prova ad andare a
vedere su 
www.towerj.com
 che progressi hanno fatto. Costicchiava.
byez
mirko.

 a écrit dans le message
news: a8elpg$61re$1...@stargate1.inet.it...

Grazie mille Mirko,
sono andato a vedere.
Effettivamente fanno proprio quello che avevo pensato si dovesse fare.
Non sono riuscito a vedere i prezzi, ma penso che sia costoso.
Il mio era solo un interesse a livello hobbystico e non professionale per
quanto riguarda il java.
Attendo fiducioso eventuali analoghi prodotti open source o free.
Maurus

Perchè non usi il Delphi.
E' appena uscito il Kylix che è il Delphi per Linux.
Tu sviluppo con il Delphi sotto windows e poi ricompilando il tutto con il
Kylix sotto linux, dovrebbe funzionare tutto correttamente.
Ricorda però che devi utilizzare la libreria "CLX" nel Delphi per essere
sicuro che il tool da te creato sia portabile.

velocita' di esecuzione e in dimensioni.
Prova
--
Lawrence Oluyede
rhy...@myself.com


Ok, grazie per le risposte, anche se mi modifichi le ipotesi :-)
Maurus

Pyton+Java (il Java utilizza la JVM che rallenta)
Anche Python è + lento di C/C++ ma se vuoi ottimizzarlo crei
il codice lento con C e lo integri in Python
--
Lawrence Oluyede
rhy...@myself.com

un installer...
E` importante precisare che py2exe *non* è un compilatore.


E` importante precisare che py2exe *non* è un compilatore.
mai detto....scusa per l'imprecisione comunque
--
Lawrence Oluyede
rhy...@myself.com


Scusate ma se la velocità non è dovuta alla compilazione allora a cosa è
dovuta l'enorem lentezza di Java ??? se ho ben capito i compilatori JIT
compilano il file class solo nell'istante in cui lo si chiama così se anche
si perde un po di tempo all'inizio poi la velocià di esecuzione megliora
notevolemente.Che i compilatori JIT migliorino la situazione è certo come è
però certo che Java è di una lentezza disarmante!Anche senza tentare un
confronto con programmi C/C++ che sono pensati per prestazioni super, basta
un confronto con Vb che non è certo un campione in quanto a prestazioni per
capire che Java è lento! la domanda è : se non dipende dalla compilazione da
cosa dipende a lentezza di Java?

cosa dipende a lentezza di Java?
dalla JVM
--
Lawrence Oluyede
rhy...@myself.com

cosa dipende a lentezza di Java?
Non conosco in dettaglio Java ma provo a dare una delle possibili
cause: un programma Java mostra la stessa interfaccia utente
indipendentemente dal s.o. in cui gira, questo significa che i
controlli che compaiono in una finestra non sono quelli del s.o.
ospitante (treeview, combo box, etc.) ma riscritti con del codice
aggiunto che per forza di cose e' meno performante di quelli nativi.
E' proprio per questo che IBM (leggevo se non erro su Punto
Informatico) ha rilasciato un ambiente di sviluppo (Eclipse) scritto
in Java ma utilizzando un proprio set di classi (che hanno fatto
innervosire Sun) per i controlli utente , classi che pero' sono
platform dependent (es. il treeview non e' riscritto via codice ma per
la piattaforma Win32 sfrutta il TreeView control nativo).
Stefano "HappyMan" (Lago Maggiore - NO)
--
Personal Web 
http://www.sgr.info
Email 
happyman...@libero.it
 [Togliere nospam per scrivermi]
Salsa Web 
http://happyman.n3.net
 [Foto salseri/e & I.A.B.L.A. Ring]