View Full Version : Java e gli eseguibili
Scusate, so che cosi' facendo si distrugge la mitica funzionalita' del Java di essere un linguaggio sostanzialmente indipendente dal sistema operativo, pero' in fondo in un mondo dove molti hanno Windows, beh, tanto vale provarci, no? Insomma, io vorrei convertire un file Java in un eseguibile, e per Windows e per Linux.
Per Windows so che esiste il Jet Excelsior con licenza 60 giorni mi pare, mentre so che per Linux esiste il GCJ, una estensione del GCC che permette di creare eseguibili, anche se mi da' non pochi problemi in fase di linking e fra l'altro non supporta molte librerie famose (come Swing, per esempio)... ora visto che questi due mezzi sono un po' limitati, non e' che qualcuno di voi qui dentro conosce qualche programma che faccia questo?
Lo scopo e' ovviamente quello di permettere ad un utente qualsiasi di scaricare lanciare un programma senza bisogno di installare gli 11 MB della JRE o i 30 del J2SDK.
Grazie a tutti per le dritte.
Scusa ma occorre sembra una JVM per interpretare il Byte Code... E la JVM è proprietaria del S.O. Come fai senza JVM ad eseguire un programma JAVA??
GCJ dovrebbe compilare non in byte-code, ma in linguaggio amcchina...e quindi sarebbe direttamente eseguibile, ma il problema come appunto hai visto è che la compatibilità è abbastanza bassa...
Infatti, ma il J2SDK contiene la VM e il J2SDK serve installato sia al JET che al GCJ (o meglio, al GCJ non proprio visto che ha le sue librerie integrate); il JET una volta che ha creato l'eseguibile poi lo rende indipendente dal J2SDK, ma e' da questo che parte: appena installato il JET compila TUTTE le librerie del J2SDK e fa i calcoli suoi, poi genera l'eseguibile che gira senza piu' bisogno di J2SDK o JRE.
Purtroppo il JET andrebbe bene, solo che scade in 60 giorni, mentre il GCJ ha ancora largamente non implementati Swing e AWT :-(
Ma con questo JET quanto viene grande l'eseguibile ? Non è che include in pratica la JVM ?
Originariamente inviato da cionci
[B]Ma con questo JET quanto viene grande l'eseguibile ? Non è che include in pratica la JVM ?
E' proprio questo il mio dubbio...includendo una specifica JVM per una certa piattaforma, non sarebbe compatibile su altre piattaforme...
Mezzetti0903
11-11-2002, 18:08
Ma non è possibile compilarlo normalmente e poi fare l'interpretazione prima della distribuzione invece che JIT?
Originariamente inviato da cn73
[B]E' proprio questo il mio dubbio...includendo una specifica JVM per una certa piattaforma, non sarebbe compatibile su altre piattaforme...
Ma questo è chiaro...nessuno di quei metodi mantiene la portabilità...
hummm... questo jet mi puo' interessare assai! dove lo trovo?
Si' ok ragazzi, portabilita' o non portabilita': il 95% dei computers ha su Bill Gates, toh, esageriamo, facciamo il 90%... ok essere bravi e portabili, ma fregarsene dell'evidenza!
Fra l'altro nel restante 10% c'e' Linux in maggioranza, quindi creati i due eseguibili siamo a posto.
Il JET e' qui, ma dura 60 giorni e pare che la licenza costi 'solo' 1500 dollaroni fumanti:
www.excelsior-usa.com/jet.html
Mentre per il GCJ dovremo aspettare la prossima versione del GCC, o se no scaricare uno snapshot, ma francamente non vedo l'utilizzo di Java senza interfaccia grafica, se non devo usare la grafica allora uso ben il C... si' ok le RMI e altro d'accordo, ma insomma... va beh, saluti!
Se non si conta la portabilità allora si perde la maggiro parte dei vantaggi di Java... Allora a quel punto è preferibile rivolgersi ad un linguaggio compilato...
Cionci hai perfettamente ragione: il punto pero' e' che con lo stesso codice tu puoi creare in Linux e Windows, mentre altrimenti dovresti impararti le funzioni di Windows per creare un'interfaccia e delle applicazioni per Windows e le funzioni del GTK o altri per la grafica sotto Linux.
Quindi ok con queste cose della portabilita', pero' intanto con un sorgente crei una cosa sotto Windows e Linux conoscendo 'solo' il Java e la cosa non e' per niente male.
Anche in Windows puoi crearti l'interfaccia con GTK o wxWindow...e sono compilabili anche su Linux...
Usando le CLX della Borland con Delphi o C++ Builder puoi portare il codice su Kylix... Eppure sono tutti compilati ;)
Si' e' vero le GTK ci sono anche per Windoze, pero' poi Bill Gates mi killa, visto che le chiamate di Windows non sono poi cosi' male, anzi ;-)
In piu' c'e' un fattore dominante per me Cionci e sai qual e'?
Che il java lo so ;-))) gli altri mica tanto, quindi se potessi fare eseguibili in java sarebbero comodi, no? E poi siamo seri: OpenOffice e' in Java e non va cosi' male, quindi anche il javetto compilato come si deve e' gestibile :-)
Originariamente inviato da GokuSSJ
[B]Che il java lo so ;-)))
Per carità...non ti sto dicendo di imparare altri linguaggi :)
Ti sto solo dicendo che eliminare la protabilità di un programma Java compilato significa eliminare ogni vantaggio che ha rispetto ad ogni altro linguaggio (speriamo in .Net ;))
Originariamente inviato da GokuSSJ
[B]ma francamente non vedo l'utilizzo di Java senza interfaccia grafica, se non devo usare la grafica allora uso ben il C... si' ok le RMI e altro d'accordo, ma insomma... va beh, saluti!
se consideri quanto software commerciale fatto in java esiste (a parte i tool di sviluppo) sei il solo a pensarla cosi'. Se devi usare la grafica ci sono decine di strumenti piu' adatti, sia per linux che per win.
Lato server (quindi senza grafica) e' impossibile fare in C quello che oggi fai in java.
Kingv, non dire cacate dai ;-) IMPOSSIBILE e' una parola grossa, diciamo che semplicemente il java semplifica molto la vita anche dal lato server, su questo sono d'accordissimo.
Se poi mi vuoi parlare di connessioni, rmi, socket e simili, ti dico che il java e' una figata, e' nato certo per questo e non per la grafica, lo so bene, ma francamente con un po' di impegno le cose cosi' si fanno anche in C.
Il mio discorso era per dire che una interfaccetta in java con due comandi base saranno un po' di righe di codice, hai voglia a farla in C, non ti passa niente!
Anzi, francamente, mi dici cosa e' che fa il java che il c non riesce a fare? Cosi' lo so anche io :-)
Ah a proposito, non sono venuto qui per questo, beh ho provato il JET e' veramente buono: un file sorgente di 7Kb diventa un eseguibile da 26Kb, niente male, se non fosse che quei ladroni del sito hanno fatto scadere la licenza, mah...
in pratica il JET non registrato ci fa solo vedere le dimensioni dell'eseguibile finale perche' se lo si lancia, addio: messaggio che il compilatore JET e' scaduto :-(
In ogni caso il sorgente disegnava da zero una interfaccia grafica, non troppo complessa, ma con tanti oggettini, quindi direi che non c'e' male... va beh, direi che per Windows
non abbiamo speranze, mentre per Linux possiamo aspettare che il GCJ faccia il proprio corso.
Davvero soli 30K utilizzando oggetti grafici?? Ma come lavora, include solo le classi sati?? Es importa i JPanel e non tutte le swing?
Originariamente inviato da GokuSSJ
[B]ma francamente con un po' di impegno le cose cosi' si fanno anche in C.
se consideri connessioni a db, servizi corba, socket ecc.ecc. hai ragione, ma ci sono diverse caratteristiche che in C non hai gratis, una su tutte la gestione della sicurezza a livello di linguaggio ;)
Stai sicuro che per implementare quella non ti basta un po' di impegno ;)
Ecco, vero, per quella sono d'accordo (fra l'altro mi sa pure di averlo gia' scritto, o no, boh...), anzi, si' forse per quella ti ci vuole un cognome tipo CARMACK o ROMERO, no dico, robe simili ;-)))
Per rispondere a cn73: si' viene un robetto cosi', ma purtroppo non si puo' lanciare! Ora, io non so se quei furboski abbiano VOLONTARIAMENTE messo il tempo fisso, ma insomma, scorretti di brutto: le evaluation version DEVONO partire NON da un giorno fisso, ma dal giorno in cui le INSTALLI, mah, scorretti di brutto, anche se il programma e' una figata... e va beh, per 1500 dollari, faccio prima ad imparare il C, scaricarmi il LCC Win32 che e' free e interfacciare col GTK, cosi' se non altro con lo stesso codice faccio e sotto Windows e sotto Linux.
Come dicono i luoghi comuni? Beh, nella vita e' sempre meglio ampliare le proprie conoscenze :-)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.