Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    3

    Esecuzione programma java da CD

    Ho un problema con l'esecuzione di un programmino con interfaccia grafica java che ho scritto.
    In particolare se eseguo il file .jar (o il file .exe che creo con un programma apposito), dal mio PC, quindi sfruttando la versione di java che ho installato, il programma parte immediatamente.
    Se però copio il mio programma (.jar o .exe che sia) su un CD/DVD, e da li lo faccio partire con un comando del tipo: "jre\bin\javaw.exe -jar MioProgramma.jar", dove ovviamente la cartella jre contiene tutto il necessario perchè questo parta, il risultato è che il mio programma parte dopo un tempo lunghissimo. Infatti guardando la lista dei processi, il processo javaw.exe impiega molto tempo ad essere caricato in memoria.

    E' normale? c'è un modo per velocizzarne l'esecuzione anche da CD?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Sposto nel forum Java.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ad ogni modo, il tempo è notevolmente più lungo perchè le due unità (Hard Disk e Lettore CD-ROM) non sono paragonabili in termini di velocità di accesso ai dati.

    Perchè un programma Java possa essere eseguito è necessario che tutte le sue classi vengano caricate inizialmente dal ClassLoader (cioè vengano lette e caricate in memoria). Il disco fisso del tuo PC legge i dati molto più velocemente del tuo lettore di CD: un normale disco a 7200 rpm attuale ha un transfer rate di circa 1 GB/s, il migliore dei lettori DVD arriva a circa 33 MB/s in lettura, quindi il tempo di "caricamento" da hard disk è notevolmente inferiore.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    3
    Ok, ma nel mio caso mi sembra eccessivo.
    Da quando parte l'autorun a quando visualizzo il frame della mia applicazione passano circa 2/3 minuti, e il processo arriva a caricare un massimo di 45MB in memoria.
    E poi molti programmi molto pesanti sono basati su java, ma vengono eseguiti comunque in breve tempo da CD, per questo mi sembra strano. Il mio file .jar è grande 68KB e le librerie che utilizza sono circa 3MB.

    Questo problema mi si verifica solo quando il programma viene eseguito dall'autorun (e quindi con il jre che si porta dietro), perchè se io invece esploro il CD ed eseguo direttamente il file .jar questo parte subito, perchè si appoggia al jre che ho installato sul mio PC.

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ah, cioè... tu hai copiato il JRE dentro al CD?
    Beh.. è già tanto che ti venga avviato.

    Il JRE, per poter funzionare correttamente, deve essere installato sulla macchina perchè ha bisogno di accedere a tutte le informazioni necessarie della macchina (variabili d'ambiente utente, variabili di sistema, risorse presenti, restrizioni utente e di sistema, chiavi di registro, una marea di cose).

    Il JRE è esattamente come un programma applicativo: va installato per poter essere usato. E' come pretendere di avviare Office senza prima installarlo, copiando solo gli eseguibili e dimenticandosi che c'è tutta una serie di DLL + chiavi di registro di cui il programma necessita)...

    Sfido io che ci mette tanto.. è già tanto che funzioni (e sono certo che non funzionerà mai su una macchina dove il JRE non è installato [parlo del JAR, ovviamente]).

    Poi tu dici che hai generato l'EXE... bene: i programmi che generano l'EXE di un'applicazione Java, generalmente creano un wrapper che fa le seguenti cose:

    1) Verificano che il JRE sia installato sulla macchina
    2) Se non è installato, verificano se ce n'è uno a disposizione per l'installazione
    3) Se non c'è nemmeno quello, vanno su Internet (ammesso che vi sia una connessione) e si prendono l'ultima release disponibile, la scaricano e la installano
    4) Alla fine, se almeno qualcosa è andato dritto, avviano il JAR.

    Capisci che c'è una bella differenza tra avviare un JAR dove sicuramente la JRE c'è ed è installata e una situazione come quella descritta.

    Se il tuo intento è quello di distribuire l'applicazione, allora dovresti fare come fanno tutti: un installer che si occupa della parte preliminare (verifica JRE e eventuale installazione) e di copiare il JAR + librerie. Fine.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    [OT] Tra parentesi, il lettore CD, più che come banda, è problematico come seek time; 33 MB/s bastano e avanzano per caricare qualunque programma di dimensioni ragionevoli - se è in un unico file contiguo. Il problema è che se hai millemila file sparsi qua e là da caricare (come nel caso della JRE) il grosso del tempo è speso a saltare qua e là sul CD per caricare i file che vengono via via richiesti. [/OT]
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da MItaly
    [OT] Tra parentesi, il lettore CD, più che come banda, è problematico come seek time; 33 MB/s bastano e avanzano per caricare qualunque programma di dimensioni ragionevoli - se è in un unico file contiguo. Il problema è che se hai millemila file sparsi qua e là da caricare (come nel caso della JRE) il grosso del tempo è speso a saltare qua e là sul CD per caricare i file che vengono via via richiesti. [/OT]
    Corretto.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    3
    Ah.. ok
    Grazie per l'aiuto.

    Sapreste consigliarmi anche un programmino efficace per generare l'installer in modo che controlli la presenza del JRE e in caso contrario lo installi?
    Con questo programma si può evitare di copiare il file .jar e eseguirlo direttamente da CD una volta terminata la verifica/installazione del JRE?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.