View Full Version : [java] creare un .exe
Come posso creare un file .exe in java?
Come posso creare un file .exe in java?
Usando google (http://www.google.com/search?&hl=it&q=java+exe) ;)
Usando google (http://www.google.com/search?&hl=it&q=java+exe) ;) non credo proprio :asd:
@jalexb: è possibile con appositi strumenti di conversione, ma francamente mi riesce difficile immaginare uno scenario in cui la cosa risulti proficua poiché la conversione ad uno specifico formato eseguibile causa la perdita della portabilità in cambio di nessun vantaggio.
non credo proprio :asd:
Naturalmente era un invito a cercare su google :D , facilitato dal fatto che invece di dover digitare www.google.com, aspettare che si carichi, digitare "java exe", clickare su "Cerca con Google" e aspettare i risultati della ricerca, gli bastava clickare sul link che gli ho dato. :)
@jalexb: è possibile con appositi strumenti di conversione, ma francamente mi riesce difficile immaginare uno scenario in cui la cosa risulti proficua poiché la conversione ad uno specifico formato eseguibile causa la perdita della portabilità in cambio di nessun vantaggio.
Su questo sono perfettamente d'accordo.
non conviene usare tool specifici
7zip e winrar fanno egregiamente il loro lavoro
crei con winrar un autoestraente e hai il file exe
Io ti consiglierei di creare un jar.... lo puoi eseguire ugualmente come un exe e perlomeno non distruggi la portabilita della tua applicazione... :oink: ;) ;)
malocchio
14-07-2008, 16:36
Puoi fare un programmino minuscolo in un altro linguaggio che ti avvii il tuo programma Java, avviando l'eseguibile java con i parametri opportuni.
Non saprei però come fare a trovare il giusto percorso dell'interprete. C'è per caso una variabile di sistema? Perché non è incluso nel path.
banryu79
15-07-2008, 08:24
Puoi usare NSIS accoppiato con HM NIS Editor, cerca sul web questi due nomi.
Puoi fare un programmino minuscolo in un altro linguaggio che ti avvii il tuo programma Java, avviando l'eseguibile java con i parametri opportuni. questa poi è del tutto priva di senso...
malocchio
16-07-2008, 09:16
Ho visto alcuni programmi in Java che venivano avviati tramite un piccolo eseguibile, che però apre 2 processi: il suo e il processo java (che legge il file jar), che è in realtà il programma principale.
è ancora senza senso...? :D
Ho visto alcuni programmi in Java che venivano avviati tramite un piccolo eseguibile, che però apre 2 processi: il suo e il processo java (che legge il file jar), che è in realtà il programma principale.
è ancora senza senso...? :D
alla fine, avviare un programma java è un istruzione.
quindi si può fare in qualsiasi modo:Bat, autoestraente ecc ecc
per non visualizzare la console al posto di usare JAVA si usa JAVAW
Ho visto alcuni programmi in Java che venivano avviati tramite un piccolo eseguibile, che però apre 2 processi: il suo e il processo java (che legge il file jar), che è in realtà il programma principale.
è ancora senza senso...? :D
Si.
71104 non voleva dire che la cosa era impossibile, ma inutile, brutta e non portabile. In tre parole: priva di senso.
@71104: correggimi se sbaglio
malocchio
16-07-2008, 14:45
Si.
71104 non voleva dire che la cosa era impossibile, ma inutile, brutta e non portabile. In tre parole: priva di senso.
@71104: correggimi se sbaglio
Beh il titolo del 3d è "creare un .exe" ti sembra che si cerchi la portabilità?
E non è inutile. Forse l'autore del 3d voleva proprio convertire il programma java in eseguibile nativo, ma ho fornito un'alternativa. E' vero si può usare di tutto per avviare un semplice riga di comando, ma mi viene in mente che le persone meno esperte saranno sempre portate ad avviare un .exe per aprire un programma.
Un esempio è limewire, scritto in java ma avviato con un .exe
Se io sviluppassi un programma in java e lo volessi distribuire per Windows, personalmente creerei un exe che lo avvii.
[...] E' vero si può usare di tutto per avviare un semplice riga di comando, ma mi viene in mente che le persone meno esperte saranno sempre portate ad avviare un .exe per aprire un programma. [...]
Le persone meno esperte saranno sempre portate a fare [doppio] click su un'icona, indifferentemente dal formato del file lanciato.
Fare [doppio] click su programma.jar o su programma.exe non è poi così differente.
Se poi programma.exe non fa altro che invocare la JVM e lanciare programma.jar, allora è proprio priva di senso.
Se io sviluppassi un programma in java e lo volessi distribuire per Windows, personalmente creerei un exe che lo avvii.
Se io sviluppassi un programma in java, personalmente non vorrei distribuirlo per un S.O. in particolare.
Se dovessi scegliere come lanciarlo in ogni S.O., probabilmente la scelta sarebbe (per limitarmi ai tre principali S.O.):
Windows: [doppio] click sul file programma.jar;
MacOS: [doppio] click sul file programma.jar;
Linux: [doppio] click sul file programma.jar.
malocchio
16-07-2008, 15:46
Quanti programmi scritti in Java che si avviano con click sul jar conosci?
Quanti programmi scritti in Java che si avviano con click sul jar conosci?
Ehm... fammici pensare... direi... ... tutti.
JAR è un tipo di file che, associato alla JVM per la gestione (come fai con MS Word per i .doc), viene eseguito con un [doppio] click.
malocchio
16-07-2008, 16:01
Ehm... fammici pensare... direi... ... tutti.
JAR è un tipo di file che, associato alla JVM per la gestione (come fai con MS Word per i .doc), viene eseguito con un [doppio] click.
Allora sarò un caso a parte. Io tutti i li ho visti tutti avviati tramite eseguibile.
Ovviamente esistono dei programmi distribuiti totalmente e SOLO stand-alone che magari non includono un eseguibile, pensati per essere portabili e totalmente multi-piattaforma.
Ricordo che cmq il 3d fa riferimento a sistemi windows
variabilepippo
16-07-2008, 16:02
Le persone meno esperte saranno sempre portate a fare [doppio] click su un'icona, indifferentemente dal formato del file lanciato.
Tutte le applicazioni implementate in Java presenti sul mio sistema Windows (Eclipse, Netbeans, ImageJ, SmartCVS, SmartSVN, ...) vengono eseguite mediante un eseguibile-wrapper e non con un doppio-click su un .JAR (*). Come mai? :)
Considerando che si tratta di applicazioni orientate ad un pubblico di sviluppatori e non alla nonnina novantenne è "strano" che non abbiano optato per il solo archivio JAR. Mio padre se non vede un eseguibile non doppioclicca da nessuna parte e credo che gli utenti come lui rappresentino la stragrande maggioranza nel mondo Windows. Aggiungere un eseguibile al pacchetto di distribuzione con wrapper tipo JSmooth (http://jsmooth.sourceforge.net/) (tanto per citarne uno) non costa nulla ma rende più facile l'utilizzo del programma da parte di utenti non esperti. Altra questione è la compilazione in codice nativo...
(*) Non dico che non sia possibile avviarli tramite JAR, ma si preferisce aggiungere un eseguibile al pacchetto di installazione.
malocchio
16-07-2008, 16:06
Tutte le applicazioni implementate in Java presenti sul mio sistema Windows (Eclipse, Netbeans, ImageJ, SmartCVS, SmartSVN, ...) vengono eseguite mediante un eseguibile-wrapper e non con un doppio-click su un .JAR (*). Come mai? :)
Considerando che si tratta di applicazioni orientate ad un pubblico di sviluppatori e non alla nonnina novantenne è "strano" che non abbiano optato per il solo archivio JAR. Mio padre se non vede un eseguibile non doppioclicca da nessuna parte e credo che gli utenti come lui rappresentino la stragrande maggioranza nel mondo Windows. Aggiungere un eseguibile al pacchetto di distribuzione con wrapper tipo JSmooth (http://jsmooth.sourceforge.net/) (tanto per citarne uno) non costa nulla ma rende più facile l'utilizzo del programma da parte di utenti non esperti. Altra questione è la compilazione in codice nativo...
(*) Non dico che non sia possibile avviarli tramite JAR, ma si preferisce aggiungere un eseguibile al pacchetto di installazione.
Allora non sono un caso a parte... :D :D :D
Devo ammettere che anche io (utente "esperto", almeno di Windows) se ho un programma da avviare la prima cosa che cerco è un exe. Come fa a sapere un utonto che il file jar si esegue?? Li doppioclicca tutti?? :read:
edit:interessanti i primi due paragrafi del link...
variabilepippo
16-07-2008, 16:11
interessanti i primi due paragrafi del link..
Uno dei tanti motivi per cui, secondo me, è preferibile includere un eseguibile-wrapper, senza considerare che (per tante ragioni) i file JAR potrebbero non essere associati correttamente. In tal caso il programma non partirebbe, con l'eseguibile invece si può ovviare a questa situazione.
Uno dei tanti motivi per cui, secondo me, è preferibile includere un eseguibile-wrapper, senza considerare che (per tante ragioni) i file JAR potrebbero non essere associati correttamente. In tal caso il programma non partirebbe, con l'eseguibile invece si può ovviare a questa situazione.
esatto.Infatti tempo fa ho rilasciato un software scritto in java
Ad alcuni non partiva perchè un prog della nokia si era presa l'associazione ".jar"
variabilepippo
16-07-2008, 16:22
Se poi si prende in esame il caso di programmi tipo SmartSVN (http://www.syntevo.com/smartsvn/index.html), distribuiti con diversi file .JAR, il problema si complica ulteriormente.
Il pacchetto include 5 file con estensione .JAR:
help.jar
svnkit.jar
svnkit-cli.jar
smartsvn.jar
tools.jar
Immagino la faccia di mio padre che, dopo aver cliccato sul primo file, riceve il messaggio "Invalid o corrupt jarfile". Prova a cliccare sul secondo, poi sul terzo e Windows gli risponde comunque con un "Failed to load Main-Class manifest attribute from...".
Arrivato a quel punto o inizia a bestemmiare, o cancella il programma maledicendo il programmatore o mi chiama per chiedere aiuto. Non è un caso che gli sviluppatori abbiano scelto di aggiungere un comodo eseguibile chiamato smartsvn.exe. :rolleyes:
Ricordo che cmq il 3d fa riferimento a sistemi windows
D'accordo. Anche se parlando di Java, il tema "portabilità" è uno dei principali; tutto quello che segue si riferirà ad un ambiente windows.
Tutte le applicazioni implementate in Java presenti sul mio sistema Windows (Eclipse, Netbeans, ImageJ, SmartCVS, SmartSVN, ...) vengono eseguite mediante un eseguibile-wrapper e non con un doppio-click su un .JAR (*). Come mai? :)
Considerando che si tratta di applicazioni orientate ad un pubblico di sviluppatori e non alla nonnina novantenne è "strano" che non abbiano optato per il solo archivio JAR. Mio padre se non vede un eseguibile non doppioclicca da nessuna parte e credo che gli utenti come lui rappresentino la stragrande maggioranza nel mondo Windows. Aggiungere un eseguibile al pacchetto di distribuzione con wrapper tipo JSmooth (http://jsmooth.sourceforge.net/) (tanto per citarne uno) non costa nulla ma rende più facile l'utilizzo del programma da parte di utenti non esperti. Altra questione è la compilazione in codice nativo...
(*) Non dico che non sia possibile avviarli tramite JAR, ma si preferisce aggiungere un eseguibile al pacchetto di installazione.
Mi rendo conto che potrei essere io il caso particolare. In ogni caso non riesco a capire il senso di questa pratica, nè riesco a giustificarla per il solo fatto che "lo fanno tutti".
Come fa a sapere un utonto che il file jar si esegue?? Li doppioclicca tutti?? :read:
Quando l'utente medio installa un programma, la prima cosa che nota è che sono state create (a meno di esplicito rifiuto) delle nuove icone sul suo desktop e nel suo menu principale. Quelle icone sono link all'eseguibile del programma installato. Se esso fosse un jar e non un exe, quale sarebbe la perdita di usabilità?
Certo, se poi si parla di software distribuiti senza un programma di installazione, allora il problema resta comunicare agli utenti di clickare su un file jar. La cosa sarebbe impossibile se non ci fossero i file di testo, ma, visto che essi esistono, è possibile comunicarlo in un file README.txt (o LEGGIMI.txt). Se mi dite che l'utente medio non legge i file README... beh avete ragione, ma è come dire che un utente dovrebbe essere in grado di far funzionare un elettrodomestico senza leggerne il manuale; cosa fattibile, ma non in tutti i casi (http://xkcd.com/293/).
In conclusione: fate come volete, ma io continuo a ritenerla una cosa inutile, brutta e non portabile. In tre parole: priva di senso.
variabilepippo
16-07-2008, 16:56
Mi rendo conto che potrei essere io il caso particolare. In ogni caso non riesco a capire il senso di questa pratica, nè riesco a giustificarla per il solo fatto che "lo fanno tutti".
Ho portato motivazioni a sostegno dell'idea che aggiungere (=non tolgo nulla, metto una cosa in più per l'utente medio) un .exe sia cosa buona e giusta:
- Soluzione al problema delle associazioni errate dei file JAR
- Soluzione all'esistenza di più file JAR nel pacchetto di distribuzione
- Consuetudine ad eseguire i file con estensione .exe
- Possibilità di controllare con un eseguibile la presenza di una specifica versione della JVM e nel caso di scaricarla automaticamente
Non vedo cosa ci sia di inutile, di brutto e di non portabile in queste cose. Il file JAR è comunque presente, in più c'è un eseguibile nativo: bello, comodo e "potente". Come ho già detto una cosa è aggiungere un eseguibile ("guarda caso" accompagna quasi tutti i software Java su Windows), un'altra è compilare il programma in codice nativo (probabilmente in questo tu vedi una cosa brutta, inutile e non portabile ed io concordo).
malocchio
16-07-2008, 17:03
D'accordo. Anche se parlando di Java, il tema "portabilità" è uno dei principali; tutto quello che segue si riferirà ad un ambiente windows.
Mi rendo conto che potrei essere io il caso particolare. In ogni caso non riesco a capire il senso di questa pratica, nè riesco a giustificarla per il solo fatto che "lo fanno tutti".
Quando l'utente medio installa un programma, la prima cosa che nota è che sono state create (a meno di esplicito rifiuto) delle nuove icone sul suo desktop e nel suo menu principale. Quelle icone sono link all'eseguibile del programma installato. Se esso fosse un jar e non un exe, quale sarebbe la perdita di usabilità?
Certo, se poi si parla di software distribuiti senza un programma di installazione, allora il problema resta comunicare agli utenti di clickare su un file jar. La cosa sarebbe impossibile se non ci fossero i file di testo, ma, visto che essi esistono, è possibile comunicarlo in un file README.txt (o LEGGIMI.txt). Se mi dite che l'utente medio non legge i file README... beh avete ragione, ma è come dire che un utente dovrebbe essere in grado di far funzionare un elettrodomestico senza leggerne il manuale; cosa fattibile, ma non in tutti i casi (http://xkcd.com/293/).
In conclusione: fate come volete, ma io continuo a ritenerla una cosa
Secondo me è importante distribuire "bene" la propria applicazione e renderla il più accessibile possibile.
Per il discorso dei link sul desktop ecc. hai ragione, ma se dovesse capitare che i file non hanno associazione alla Jvm allora l'utente si troverebbe in dover mettere le mani al sistema, e sarebbe una scomodità.
In Java si parla di portabilità, perché multipiattaforma. Ma non vuol dire che uno stesso programma può essere distribuito su più sistemi (è anche così, ma non è questo il senso primario), ma che il programmatore deve scrivere una sola volta il codice e poi "adattare" con piccoli accorgimenti (a volte nessun accorgimento) il programma al sistema.
Ad esempio, se io sviluppo un programmino in Java e lo scrivo con le librerie grafiche Swing, in Linux lo farò partire in modo che abbia l'aspetto delle librerie Gtk, su Windows con l'aspetto del tema corrente (è spiegato in soldoni, io non ho esperienza di applicazioni grafiche Java). Praticamente non esistono (e se esistono sono casi di studio per tesi di laurea e simili) programmi con lo stile delle Swing. O sbaglio? :(
EDIT: quoto pienamente variabilepippo :mano: :asd:
@thehuge: carina la comic... :asd::asd:
Se poi si prende in esame il caso di programmi tipo SmartSVN (http://www.syntevo.com/smartsvn/index.html), distribuiti con diversi file .JAR, il problema si complica ulteriormente.
Certo, anche se potrei obiettare che se i jar sono delle librerie (non eseguibili), io (e molti altri a quanto ne so, inclusi gli sviluppatori dei principali IDE) considero sbagliato distribuirli nella stessa directory del jar eseguibile. Piuttosto andrebbero raggruppati in una directory al suo interno (generalmente lib).
Se invece fossero eseguibili, ma tool esterni al programma, allora trasformarli in .exe non cambierebbe molto la situazione
interessanti i primi due paragrafi del link..
D'accordo. L'installazione automatica della JVM porta a favore di queso tool. Però lo fa tenendo conto che la percentuale di PC su cui non è installata una JVM al momento dell'acquisto rasenta lo zero.
senza considerare che (per tante ragioni) i file JAR potrebbero non essere associati correttamente
Ad alcuni non partiva perchè un prog della nokia si era presa l'associazione ".jar"
L'associazione di un tipo di file ad un programma avviene sempre previa esplicita autorizzazione dell'utente. Se l'utente accetta senza leggere, allora questo problema può effettivamente presentarsi, e costringermi a confermare quanto detto sopra.
Considero però quegli utenti che, quando vedono un pulsante con l'etichetta "Avanti", lo devono clickare prima possibile, alla stregua di quelli che, quando vedono sul fondo di un contratto la linea tratteggiata, la devono immediatamente riempire con la propria firma: facilmente truffabili ed assolutamente indifendibili.
non ho letto tutti gli sviluppi della discussione perché sono un po' di fretta, comunque due quotature della pagina 1:
Si.
71104 non voleva dire che la cosa era impossibile, ma inutile, brutta e non portabile. In tre parole: priva di senso.
@71104: correggimi se sbaglio intendevo proprio quello :O
tranne per il fatto della portabilità: come hanno osservato, il target è sicuramente Windows, quindi il discorso portabilità non ha importanza in questo caso.
ritengo la soluzione della conversione a exe una cosa totalmente inutile, e quest'altra novità del launcher addirittura una complicazione inutile: aggiungere un file al pacchetto da distribuire significa complicarlo (ok, come complicazione non è nulla di che, del tutto trascurabile, ma sempre una complicazione è, e non porta alcun miglioramento).
Uno dei tanti motivi per cui, secondo me, è preferibile includere un eseguibile-wrapper, senza considerare che (per tante ragioni) i file JAR potrebbero non essere associati correttamente. In tal caso il programma non partirebbe, con l'eseguibile invece si può ovviare a questa situazione. io francamente ancora non trovo utilità nel launcher: se adesso ci mettiamo anche a valutare i possibili danni che potrebbe aver subito l'installazione della JVM sul computer dell'utente non la finiamo più: che succede se per qualche motivo fallisce il caricamento della classe java.lang.String? :D
non sarebbe meglio far ricevere banalmente all'utente dei possibili suggerimenti di riparazione, come quello di reinstallare Java (e relativo link alla pagina di download dal sito della Sun)?
In Java si parla di portabilità, perché multipiattaforma. Ma non vuol dire che uno stesso programma può essere distribuito su più sistemi (è anche così, ma non è questo il senso primario), ma che il programmatore deve scrivere una sola volta il codice e poi "adattare" con piccoli accorgimenti (a volte nessun accorgimento) il programma al sistema.
Ad esempio, se io sviluppo un programmino in Java e lo scrivo con le librerie grafiche Swing, in Linux lo farò partire in modo che abbia l'aspetto delle librerie Gtk, su Windows con l'aspetto del tema corrente (è spiegato in soldoni, io non ho esperienza di applicazioni grafiche Java). Praticamente non esistono (e se esistono sono casi di studio per tesi di laurea e simili) programmi con lo stile delle Swing. O sbaglio? :(
Mi spiace, ma su questo ti sbagli. Prendo da http://it.wikipedia.org/wiki/Swing_(Java):
I widget Swing forniscono una GUI più sofisticata rispetto alla precedente Abstract Window Toolkit. Essendo scritti in puro Java, funzionano allo stesso modo su tutte le piattaforme (su cui java gira), al contrario delle AWT le quali sono legate al sistema grafico nativo del sistema operativo. Swing supporta il look and feel non tramite quello che viene fornito nativamente dal gestore delle finestre, ma tramite una sua emulazione. Questo significa che si può ottenere un qualsiasi L&F supportato su qualsiasi piattaforma. Lo svantaggio di questi componenti pesanti è quello di una più lenta esecuzione. Il vantaggio è una uniformità di visualizzazione tra svariate piattaforme
@thehuge: carina la comic... :asd::asd: :asd: E' il miglior webcomic in circolazione.
malocchio
16-07-2008, 17:38
non ho letto tutti gli sviluppi della discussione perché sono un po' di fretta, comunque due quotature della pagina 1:
intendevo proprio quello :O
tranne per il fatto della portabilità: come hanno osservato, il target è sicuramente Windows, quindi il discorso portabilità non ha importanza in questo caso.
ritengo la soluzione della conversione a exe una cosa totalmente inutile, e quest'altra novità del launcher addirittura una complicazione inutile: aggiungere un file al pacchetto da distribuire significa complicarlo (ok, come complicazione non è nulla di che, del tutto trascurabile, ma sempre una complicazione è, e non porta alcun miglioramento).
io francamente ancora non trovo utilità nel launcher: se adesso ci mettiamo anche a valutare i possibili danni che potrebbe aver subito l'installazione della JVM sul computer dell'utente non la finiamo più: che succede se per qualche motivo fallisce il caricamento della classe java.lang.String? :D
non sarebbe meglio far ricevere banalmente all'utente dei possibili suggerimenti di riparazione, come quello di reinstallare Java (e relativo link alla pagina di download dal sito della Sun)?
Se hai dei dubbi sulla comodità del launcher ti consiglio di leggere, anche velocemente, i post precedenti.
Per il secondo discorso non riesco a capire cosa vuoi dire e, se ho capito, non ho capito cosa c'entri con quello che si discute qui. Ma aspetto un tuo eventuale chiarimento.
Per oggi stacco, ora vado a casa e non ci sarò fino a domani... ciauuuuuuuu
malocchio
16-07-2008, 17:40
Mi spiace, ma su questo ti sbagli. Prendo da http://it.wikipedia.org/wiki/Swing_(Java):
:asd: E' il miglior webcomic in circolazione.
Ah, ok, allora mi sono confuso. E' perché un mio amico mi aveva detto che bastava un argomento sul comando per avviare la jvm per avere applicazioni scritte con Swing con Look&Feel di Gtk.
Quindi le applicazioni (mi viene ancora in mente LimeWire, o Juice) con widget L&F Windows sono scritti con AWT??
variabilepippo
16-07-2008, 17:49
Però lo fa tenendo conto che la percentuale di PC su cui non è installata una JVM al momento dell'acquisto rasenta lo zero.
Ne abbiamo discusso in un altro thread, questa affermazione è falsa. La Sun JVM non è integrata in quasi nessun sistema operativo (fino a Windows XP pre-SP1 esisteva la MS-JVM, una vera porcata), va installata a parte e fino a non molto tempo fa quasi tutte le distribuzioni Linux più diffuse la includevano in repository non ufficiali in quanto non era un progetto open-source.
L'associazione di un tipo di file ad un programma avviene sempre previa esplicita autorizzazione dell'utente. Se l'utente accetta senza leggere, allora questo problema può effettivamente presentarsi, e costringermi a confermare quanto detto sopra.
L'associazione dei file JAR può cambiare per diversi motivi o non essere presente, quindi è sbagliato assumere che facendo un doppioclic su un file .JAR venga eseguito dalla JVM. Un wrapper risolve elegantemente il problema con il minimo sforzo e la massima resa...
Ne abbiamo discusso in un altro thread, questa affermazione è falsa. La Sun JVM non è integrata in quasi nessun sistema operativo (fino a Windows XP pre-SP1 esisteva la MS-JVM, una vera porcata), va installata a parte e fino a non molto tempo fa quasi tutte le distribuzioni Linux più diffuse la includevano in repository non ufficiali in quanto non era un progetto open-source.
[...] la percentuale di PC su cui non è installata una JVM al momento dell'acquisto rasenta lo zero. L'utente medio non installa un S.O.
Chi installa un S.O. sul pc di un utente medio, generalmente, installa anche la JVM.
L'associazione dei file JAR può cambiare per diversi motivi o non essere presente, quindi è sbagliato assumere che facendo un doppioclic su un file .JAR venga eseguito dalla JVM. Un wrapper risolve elegantemente il problema con il minimo sforzo e la massima resa...
Quali potrebbero essere i "diversi motivi"? L'unico che mi viene in mente è l'installazione di altro software che si prende (sempre dopo averne richiesto l'autorizzazione), l'associazione ai file jar.
Per quanto riguarda l'assenza dell'associazione i casi sono 2:
è presente la JVM, ma in fase di installazione è stata negata l'autorizzazione per l'associazione con i jar (scelta che generalmente è fatta con coscienza di causa, dato che il default è "accetto");
non è presente la JVM (vedi sopra).
Quindi le applicazioni (mi viene ancora in mente LimeWire, o Juice) con widget L&F Windows sono scritti con AWT??
Non necessariamente, in quanto
Swing supporta il look and feel non tramite quello che viene fornito nativamente dal gestore delle finestre, ma tramite una sua emulazione. Questo significa che si può ottenere un qualsiasi L&F supportato su qualsiasi piattaforma.
variabilepippo
16-07-2008, 18:39
Chi installa un S.O. sul pc di un utente medio, generalmente, installa anche la JVM.
Non mi risulta... A parte qualche OEM di buona volontà, la JVM non viene installata di default da quasi nessun rivenditore. L'affermazione "la percentuale di PC su cui non è installata una JVM al momento dell'acquisto rasenta lo zero" resta tutta da dimostrare.
Quali potrebbero essere i "diversi motivi"?
Non sempre un software è well-behaved e chiede autorizzazioni per apportare modifiche al Registry, anche quando le chiede l'utente medio non fa altro che premere "NEXT" quindi non si preoccupa di leggere le *eventuali* richieste dell'installer. L'utente ha negato l'autorizzazione, l'HIVE HKEY_CLASSES_ROOT Registry è "corrotto" da qualche installazione/disinstallazione non completata con successo ed altri "misteri dell'informatica".
Comunque non devo convincere nessuno dell'utilità (motivata) dei launcher, tanto che, come già detto, TUTTI i progetti seri per Windows usano un eseguibile (Eclipse, Netbeans, etc, etc, etc) e non il mero JAR. Non hai risposto alla mia domanda "come mai lo fanno?".
^TiGeRShArK^
16-07-2008, 19:30
non ho letto tutti gli sviluppi della discussione perché sono un po' di fretta, comunque due quotature della pagina 1:
intendevo proprio quello :O
tranne per il fatto della portabilità: come hanno osservato, il target è sicuramente Windows, quindi il discorso portabilità non ha importanza in questo caso.
ritengo la soluzione della conversione a exe una cosa totalmente inutile, e quest'altra novità del launcher addirittura una complicazione inutile: aggiungere un file al pacchetto da distribuire significa complicarlo (ok, come complicazione non è nulla di che, del tutto trascurabile, ma sempre una complicazione è, e non porta alcun miglioramento).
io francamente ancora non trovo utilità nel launcher: se adesso ci mettiamo anche a valutare i possibili danni che potrebbe aver subito l'installazione della JVM sul computer dell'utente non la finiamo più: che succede se per qualche motivo fallisce il caricamento della classe java.lang.String? :D
non sarebbe meglio far ricevere banalmente all'utente dei possibili suggerimenti di riparazione, come quello di reinstallare Java (e relativo link alla pagina di download dal sito della Sun)?
è sufficiente installare nokia pc suite perchè l'associazione dei .jar passi al nokia application installer che va a caricare i jar sul telefono anzichè eseguirli, quindi è una situazione MOLTO comune data la larga base installata di telefoni nokia.
P.s. se non ricordo male nokia pc suite non chiede alcuna conferma per cambiare l'associazione.
^TiGeRShArK^
16-07-2008, 19:34
Non mi risulta... A parte qualche OEM di buona volontà, la JVM non viene installata di default da quasi nessun rivenditore. L'affermazione "la percentuale di PC su cui non è installata una JVM al momento dell'acquisto rasenta lo zero" resta tutta da dimostrare.
infatti imho la soluzione migliore è utilizzare java web start che permette anche di scaricare automaticamente java in caso non fosse presente sul sistema.
Comunque non devo convincere nessuno dell'utilità (motivata) dei launcher, tanto che, come già detto, TUTTI i progetti seri per Windows usano un eseguibile (Eclipse, Netbeans, etc, etc, etc) e non il mero JAR.
In ogni caso non [...] riesco a giustificarla per il solo fatto che "lo fanno tutti".
Ripeto: il fatto che molti software ("TUTTI i progetti seri" mi sembra un po' grossa :) ) lo facciano, non è una motivazione per farlo.
Non hai risposto alla mia domanda "come mai lo fanno?".
Probabilmente (naturalmente non posso saperlo con certezza) per i motivi che hai esposto tu.
Il fatto è che non riesco ancora a considerarla LA soluzione.
Probabilmente è un problema di punti di vista differenti: io sono volontariamente (e forse esageratamente) ostile a chiunque faccia le cose in maniera spudoratamente superficiale. Attenzione: non odio chi non sa, odio chi "me ne frego, tanto poi ci pensa qualcun'altro". Odio l'utente che clicka "Avanti" senza leggere cosa c'è scritto, odio chi usa "password" come password, odio chi passa col rosso perchè "tanto di qua non passa mai nessuno".
Ovviamente non metto sullo stesso livello questi casi, ma sono esempi di come la gente riesca a vivere (privatamente e anche professionalmente) senza pensare a quello che fa. O peggio: pensando a mille cose contemporaneamente.
Scusate per questa cosa (lo so, è parecchio OT), ma 'sta sera sono particolarmente inviperito con la gente che non pensa. :rolleyes:
L'affermazione "la percentuale di PC su cui non è installata una JVM al momento dell'acquisto rasenta lo zero" resta tutta da dimostrare.
Effettivamente non posso parlare in maniera assoluta, però posso portare una testimonianza diretta e in tempo reale: ho appena finito di installare Windows XP SP2 su un PC usando il "Product recovery CD-ROM" (cd della Fujitsu Siemens contenente una versione OEM). Dopo il reboot (che agonia quella musichetta :nera: ) ci sono due icone sul desktop: "Recovery Info" e "Java Web Start" :read: .
variabilepippo
16-07-2008, 20:32
Ripeto: il fatto che molti software ("TUTTI i progetti seri" mi sembra un po' grossa ) lo facciano, non è una motivazione per farlo.
+
Il fatto è che non riesco ancora a considerarla LA soluzione.
Se, nonostante abbia messo sul piatto alcune motivazioni, non offri uno straccio di argomentazione e ti limiti al "IO non riesco a considerarla LA soluzione" possiamo terminare anche qui la discussione. Cerca di spiegare almeno perché non la consideri LA soluzione, visto che creare un wrapper richiede meno di di 2 minuti e risolve i problemi citati. Mi fai una lista di software importanti sviluppati in Java che su Windows non sono accompagnati da un eseguibile?
però posso portare una testimonianza diretta e in tempo reale
Hai solo confermato che *qualche* OEM di buona volontà include una JVM (o un pulsante per scaricarla, non è detto che poi l'utente lo faccia) nella dotazione standard, ma da qui ad affermare che il supporto a Java è presente di default su tutti i PC ce ne passa...
^TiGeRShArK^
16-07-2008, 20:40
Ripeto: il fatto che molti software ("TUTTI i progetti seri" mi sembra un po' grossa :) ) lo facciano, non è una motivazione per farlo.
Probabilmente (naturalmente non posso saperlo con certezza) per i motivi che hai esposto tu.
Il fatto è che non riesco ancora a considerarla LA soluzione.
Probabilmente è un problema di punti di vista differenti: io sono volontariamente (e forse esageratamente) ostile a chiunque faccia le cose in maniera spudoratamente superficiale. Attenzione: non odio chi non sa, odio chi "me ne frego, tanto poi ci pensa qualcun'altro". Odio l'utente che clicka "Avanti" senza leggere cosa c'è scritto, odio chi usa "password" come password, odio chi passa col rosso perchè "tanto di qua non passa mai nessuno".
Ovviamente non metto sullo stesso livello questi casi, ma sono esempi di come la gente riesca a vivere (privatamente e anche professionalmente) senza pensare a quello che fa. O peggio: pensando a mille cose contemporaneamente.
Scusate per questa cosa (lo so, è parecchio OT), ma 'sta sera sono particolarmente inviperito con la gente che non pensa. :rolleyes:
no, nokia pc suite non ti chiede alcuna conferma.
Quindi la colpa non è certo dell'utente che lo installa.
esatto.Infatti tempo fa ho rilasciato un software scritto in java
Ad alcuni non partiva perchè un prog della nokia si era presa l'associazione ".jar"
è sufficiente installare nokia pc suite perchè l'associazione dei .jar passi al nokia application installer che va a caricare i jar sul telefono anzichè eseguirli, quindi è una situazione MOLTO comune data la larga base installata di telefoni nokia.
P.s. se non ricordo male nokia pc suite non chiede alcuna conferma per cambiare l'associazione. che il comportamento di questo installer sia scandaloso mi sembra chiaro: la Nokia ha dato per scontato che un utente abbia dei files .jar solo perché ha dei giochi per cellulari.
ma neanche questo mi sembra un fattore che abbia il diritto di influenzare i miei piani di sviluppo e quello che io distribuisco coi miei pacchetti di installazione: io devo sviluppare un eseguibile a parte e distribuirlo per risolvere un problema causato da altri?
Se poi si prende in esame il caso di programmi tipo SmartSVN (http://www.syntevo.com/smartsvn/index.html), distribuiti con diversi file .JAR, il problema si complica ulteriormente.
Il pacchetto include 5 file con estensione .JAR:
help.jar
svnkit.jar
svnkit-cli.jar
smartsvn.jar
tools.jar
Immagino la faccia di mio padre che, dopo aver cliccato sul primo file, riceve il messaggio "Invalid o corrupt jarfile". Prova a cliccare sul secondo, poi sul terzo e Windows gli risponde comunque con un "Failed to load Main-Class manifest attribute from...".
Arrivato a quel punto o inizia a bestemmiare, o cancella il programma maledicendo il programmatore o mi chiama per chiedere aiuto. Non è un caso che gli sviluppatori abbiano scelto di aggiungere un comodo eseguibile chiamato smartsvn.exe. :rolleyes: l'ipotetica esperienza di tuo padre coi 5 jar di SmartSVN non fa testo: se questo programma fosse stato privo del launcher eseguibile avrebbe avuto tra i vari jars uno in particolare da lanciare, il cui collegamento sarebbe stato messo in un apposito gruppo del menu Programmi o sul desktop. è così che funziona: anche quando l'utente deve lanciare un eseguibile non deve andare a frugare in mezzo a una dozzina di files nella cartella di installazione lanciando tutto il lanciabile finché non ottiene il programma che vuole.
non so nello specifico come sia architettato SmartSVN, ma credo che il "comodo eseguibile" avrebbe anche potuto essere un jar; se invece il comodo eseguibile altro non fa che lanciare uno di quegli altri 5 jars allora l'installer di SmartSVN avrebbe potuto semplicemente piazzare qua e là qualche collegamento al jar da lanciare, tuo padre l'avrebbe trovato di sicuro.
PS: ma poi com'è che tuo padre pur non sembrando molto esperto (da quanto ci racconti) usa SubVersion? :Prrr:
- Soluzione al problema delle associazioni errate dei file JAR problema causato da altri che non sei tenuto a risolvere; perché altrimenti troppi altri che ne potresti risolvere: perché questo si e qualche altra cosa esoterica no? forse che questo è un problema comune? e chi te l'ha detto?
- Soluzione all'esistenza di più file JAR nel pacchetto di distribuzione soluzione ad un problema di tua invenzione: il launcher eseguibile per essere accessibile deve comunque avere un collegamento sul desktop, nel menu avvio, o nella barra Quick Launch; ma la stessa cosa la si potrebbe fare direttamente al jar anziché all'exe.
- Consuetudine ad eseguire i file con estensione .exe di default la shell grafica di Windows non visualizza le estensioni dei files, quindi non inventiamo statistiche.
- Possibilità di controllare con un eseguibile la presenza di una specifica versione della JVM e nel caso di scaricarla automaticamente si può fare anche in Java:
http://java.sun.com/javase/6/docs/api/java/lang/System.html#getProperties()
http://java.sun.com/javase/6/docs/api/index.html?java/net/HttpURLConnection.html
anzi: in codice nativo credo non si possa fare, non in maniere becere (system("java") e leggi l'output) o poco ortodosse (lascio alla tua fantasia), quindi è meglio farlo in Java.
Non vedo cosa ci sia di inutile, ancora no?
di brutto diciamo pure di *orribile*. è solo una questione di gusti eh, intendiamoci (oltre che di inutilità ovviamente), però brutto è brutto :O
e di non portabile non vedi cosa ci sia di non portabile in un eseguibile in formato PE? :mbe:
Il file JAR è comunque presente, in più c'è un eseguibile nativo: bello, comodo e "potente". bello -> i tuoi gusti qui non interessano
comodo -> ebè, fare doppio click anziché doppio click è una svolta eh... :rolleyes:
potente -> se hai bisogno di fare qualche operazione strettamente legata alla piattaforma allora siamo in tutt'altro contesto, e lì il codice nativo è chiaramente necessario e per nulla inutile.
Come ho già detto una cosa è aggiungere un eseguibile ("guarda caso" accompagna quasi tutti i software Java su Windows), finché non me la sai spiegare per me rimane solo una coincidenza: molti programmi Java per Windows necessitano di effettuare operazioni native in fase di avvio, e non ho la minima idea del perché. magari un giorno do' una sbirciata ai sorgenti di Eclipse per avere una possibile idea.
variabilepippo
17-07-2008, 07:03
problema causato da altri che non sei tenuto a risolvere
Visto che si può risolvere in 1 minuto con un launcher mi sembra da fessi lasciarlo irrisolto perché "è stato creato da altri".
soluzione ad un problema di tua invenzione
Sul mio desktop e su quello di molte altre persone ci sono pochissime icone, dunque l'icona sul desktop (con eseguibile o JAR) non viene fatta creare in fase di installazione.
in codice nativo credo non si possa fare
Come si usano quei metodi/classi Java se nel sistema non è installato una JVM? Il wrapper (es. JSmooth) risolve il problema all'utente verificando che sia installata una particolare versione della JVM e se non lo è la scarica.
ancora no?
No, visto che né tu né thehuge avete spiegato ancora perché gli sviluppatori di software Java preferiscono spesso includere un eseguibile inutile, brutto e non portabile.
malocchio
17-07-2008, 08:45
Visto che si può risolvere in 1 minuto con un launcher mi sembra da fessi lasciarlo irrisolto perché "è stato creato da altri".
Sul mio desktop e su quello di molte altre persone ci sono pochissime icone, dunque l'icona sul desktop (con eseguibile o JAR) non viene fatta creare in fase di installazione.
Come si usano quei metodi/classi Java se nel sistema non è installato una JVM? Il wrapper (es. JSmooth) risolve il problema all'utente verificando che sia installata una particolare versione della JVM e se non lo è la scarica.
No, visto che né tu né thehuge avete spiegato ancora perché gli sviluppatori di software Java preferiscono spesso includere un eseguibile inutile, brutto e non portabile.
Volevo rispondere ma mi limito a quotare variabilepippo.
Se in 2 minuti puoi risolvere DEFINITIVAMENTE i possibili problemi di avvio del tuo programma Java su Windows ed essere sicuro che gli utenti potranno farne uso e magari esserne soddisfatti, perché chiudi gli occhi e dici che non vuoi risolvere i problemi creati dagli altri? Il problema creato dagli altri diventa un TUO problema se il tuo programma non è abbastanza intelligente da esserne immune.
Quando mai i programmatori sviluppano software che non prende in considerazione possibili ostacoli al suo funzionamento sul sistema target?
E cmq non insistete sull'esistenza dei link nel menu' avvio, desktop, ecc. perché se le associazioni sono errate non funzionano. Il problema si riduce a quello, e fare finta che non esista sarebbe da stupidi.
Inoltre, il controllo di esistenza del JRE è utile se l'utente non è abituato a leggere né il README né gli avvisi a caratteri cubitali sul sito di download per i requisiti software. Il controllo di versione è utile per quegli utenti che sanno di avere la JRE (installata da molto tempo) ma non sanno spiegarsi perché il programma non va, causa la versione differente. Ormai chi sviluppa più per Java 4???
agente mm8
17-07-2008, 09:46
Ho trovato uno che si chiama ExeJava, lo sto uploadando su megaupload, come finisce te lo posto
Eccolo (http://www.megaupload.com/it/?d=P4EYM1BD)
malocchio
17-07-2008, 09:51
Ho trovato uno che si chiama ExeJava, lo sto uploadando su megaupload, come finisce te lo posto
Eccolo (http://www.megaupload.com/it/?d=P4EYM1BD)
Non si capisce
1) con chi stai parlando
2) che cos'è quello che hai postato.
Inoltre, visto che lo hai trovato, potevi postare un link al sito, invece di uploadarlo.
Penso che ti sia perso buona parte della conversazione qui.
banryu79
17-07-2008, 11:05
Malocchio calma, credo che agente mm8 stesse rispondendo all'autore di questo thread per fornirgli esattamente quello che l'autore chiedeva nel suo post d'apertura.
Tuttosommato è molto più "in topic" di quanto possa sembrare, vista la piega presa dal thread dalla seconda pagina in poi (interessante, ma leggermente OT rispetto alle richieste dell'utente-autore).
Visto che si può risolvere in 1 minuto con un launcher mi sembra da fessi lasciarlo irrisolto perché "è stato creato da altri". pure :rolleyes:
adesso la gente che non risolve i problemi causati dagli altri è fessa.
Sul mio desktop e su quello di molte altre persone ci sono pochissime icone, dunque l'icona sul desktop (con eseguibile o JAR) non viene fatta creare in fase di installazione. parliamo allora del menu avvio o della barra Quick Launch.
in realtà lo so che ci sono programmi che hanno procedure di installazione vergognose, tipo la filosofia fai-da-te di Eclipse, ma di certo non sono buoni esempi.
Come si usano quei metodi/classi Java se nel sistema non è installato una JVM? Il wrapper (es. JSmooth) risolve il problema all'utente verificando che sia installata una particolare versione della JVM e se non lo è la scarica. mio Dio che assurdità :rotfl:
ci sarà scritto o no da qualche parte che il programma per partire richiede Java? :D
No, visto che né tu né thehuge avete spiegato ancora perché gli sviluppatori di software Java preferiscono spesso includere un eseguibile inutile, brutto e non portabile. perché hanno necessità di effettuare operazioni native a me ignote in fase di avvio. e sullo "spesso" avrei da ridire.
^TiGeRShArK^
17-07-2008, 12:46
problema causato da altri che non sei tenuto a risolvere; perché altrimenti troppi altri che ne potresti risolvere: perché questo si e qualche altra cosa esoterica no? forse che questo è un problema comune? e chi te l'ha detto?
eh si che è un problema comune questo.. :stordita:
..ha idea della diffusione dei telefonini nokia nel mondo? :stordita:
Comunque l'ho detto prima e lo ribadisco.
Per distribuire le applicazioni java che non abbiano una dimensione eccessiva LA soluzione è java web start che permette anche di installare la VM in caso non sia presente, oltre che di verificare la presenza della versione corretta della VM e di eventuali aggiornamenti per l'applicazione.
Sinceramente non credo si possa fare niente di meglio. :mbe:
banryu79
17-07-2008, 13:10
In ogni caso (anch'io dico la mia) dal punto di vista dell'utente tutto deve essere trasparente.
L'utente ha (la filosofia è questa) sempre ragione.
eh si che è un problema comune questo.. :stordita:
..ha idea della diffusione dei telefonini nokia nel mondo? :stordita: c'entra poco: il punto chiave sarebbe avere un'idea della diffusione di quel particolare software Nokia nel mondo. conosco un sacco di gente che ha il cellulare Nokia e non l'ha mai attaccato al PC.
malocchio
17-07-2008, 13:49
Malocchio calma, credo che agente mm8 stesse rispondendo all'autore di questo thread per fornirgli esattamente quello che l'autore chiedeva nel suo post d'apertura.
Tuttosommato è molto più "in topic" di quanto possa sembrare, vista la piega presa dal thread dalla seconda pagina in poi (interessante, ma leggermente OT rispetto alle richieste dell'utente-autore).
Lo so ho risposto bruscamente ma non sono stato maleducato. E' che ho avuto l'impressione che avesse postato senza leggere niente del 3d, oltre al titolo.
E visto che la discussione è accesa e aperta su un altro argomento - ammetto un po' OT - intervenire così mi è sembrato fuori luogo.
Inoltre non capisco la storia di uploadare il file su un filehoster... è una questione di sicurezza oltre che di chiarezza dei contenuti.
malocchio
17-07-2008, 14:00
Puoi usare NSIS accoppiato con HM NIS Editor, cerca sul web questi due nomi.
Ho appena scaricato il file, e contiene un programma basato su NSIS ma leggermente differente perché usa uno script.
Il programma in questione crea un WRAPPER ESEGUIBILE che si occupa di controllare la presenza della JVM e la correttezza della versione installata.
L'autore del programma chiamato Jelude ci tiene a precisare che non compila il programma Java come un eseguibile nativo ma comprime un file Jar per poi eseguirlo, a controllo del JRE ultimato, da una cartella temporarea di estrazione.
EDIT: chiedo cmq scusa ad agente mm8 se si è sentito offeso o maltrattato...
variabilepippo
17-07-2008, 15:11
ci sarà scritto o no da qualche parte che il programma per partire richiede Java?
Ma ce lo vedi mio padre, o chi per lui, a leggere documentazione in inglese (ci sono tanti utenti di questo forum che chiedono "tutorial" in italiano, figuriamoci se l'utente medio legge una sola riga di documentazione) o a documentarsi su cosa sia Java una volta letto il termine?! Dai... ;) Con un eseguibile (launcher) che controlla la presenza di una JVM nella versione giusta ed eventualmente la scarica&installa si risolve il problema alla radice.
Comunque abbiamo punti di vista diversi sulla questione, è inutile cercare un punto di incontro. :)
PS. Anch'io installai Nokia PC Suite quando avevo un telefono basato su Symbian e mi ha sputtanò le associazioni...
Ma perchè?C'è winrar!!:stordita:
malocchio
17-07-2008, 15:18
Ma ce lo vedi mio padre, o chi per lui, a leggere documentazione in inglese (ci sono tanti utenti di questo forum che chiedono "tutorial" in italiano, figuriamoci se l'utente medio legge una sola riga di documentazione) o a documentarsi su cosa sia Java una volta letto il termine?! Dai... ;) Con un eseguibile (launcher) che controlla la presenza di una JVM nella versione giusta ed eventualmente la scarica&installa si risolve il problema alla radice.
Comunque abbiamo punti di vista diversi sulla questione, è inutile cercare un punto di incontro. :)
PS. Anch'io installai Nokia PC Suite quando avevo un telefono basato su Symbian e mi ha sputtanò le associazioni...
Esistono anche altri programmi che si fregano l'associazione.
Pensa se io aprendo un programma tipo Juice mi trovo davanti WinRAR...
Non è di default ma si può attivare l'associazione, come con tutti i gestori di archivi.
Cmq, alcuni programmi non possono essere avviati semplicemente, hanno bisogno di argomenti alla linea di comando a java.exe.
EDIT: per qualche secondo sono stato battuto da LoLo_Fn... vabbè!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.