PDA

View Full Version : Ritagliare la Java VM...


Mixmar
23-03-2007, 12:27
E in particolare il file rt.jar, che è veramente grosso, dalla VM di Sun, per ridurre le dimensioni per ridistribuirla: si può fare?

E' tecnicamente e/o legalmente fattibile? Qualcuno lo ha già fatto?

Per ora ho visto il tool "pack200" della Sun stessa che sembra dare buoni risultati, tuttavia mi rendo contro di usare una frazione infinitesima dei package java, anche tenendo conto delle dipendenze incrociate, e sono infastidito dal dovermi tirare dietro circa 25 Mb di roba compressa per distribuire un'applicazione molto più piccola. :help:

PGI-Bis
23-03-2007, 12:47
Non si può fare. Legittimamente perchè è contrario alla licenza. E materialmente perchè andare a discriminare tra le classi presenti e quelle necessarie è roba da mal di testa. Basti pensare al fatto che il semplice avvio della JVM richiede il caricamento di quasi 2000 classi.

redcloud
23-03-2007, 13:25
Quindi se voglio realizzare un'applicazione in Java, non posso fornire "in allegato" la JVM? E' l'utente che se la deve procurare? Se non è possibile allegarla materialmente, è possibile magari creare un installer che la faccia scaricare dal sito della sun (o da qualche altra parte)?

Apropos, si può usare un installer (tipo installshield) su sistemi windows per installare un'applicazione java?

PGI-Bis
23-03-2007, 14:04
La JVM è un software GPL 2. Puoi farci parecchie cose, anche allegarla ad un tuo programma. Il fatto è che allegarla ad un tuo programma Java è inutile.

Un'applicazione Java è un'applicazione per la piattaforma Java. La piattaforma Java è un insieme di tre pezzi: la JVM, le librerie del linguaggio di programmazione Java, le librerie di supporto.

Il tuo programma Java funziona basandosi su questi tre componenti. Tutti e tre si trovano nel JRE di Sun, che è una "piattaforma Java".

Puoi distribuire un JRE insieme al tuo programma? Sì, anche per scopi commerciali.

Puoi ridurre le dimensioni del JRE fornito da Sun? Sì, ci sono alcune indicazioni nel file readme del JRE di Sun circa le parti che possono essere rimosse.

Puoi usare un installer per installare un JRE nel caso in cui manchi, prima di installare la tua applicazione? Sì. Come dipende dall'installer.

Teoricamente è sempre preferibile far scaricare una piattaforma Java da internet all'utente. Il sito www.java.com ha un bel pulsantone facile facile che permette di verificare l'esistenza di una piattaforma Java aggiornata sul sistema. E' preferibile perchè, come tutti i software, anche la piattaforma Java è soggetta ad aggiornamenti, sia in termini di nuove o migliori funzioni che in termini di sicurezza.

redcloud
23-03-2007, 14:22
Puoi usare un installer per installare un JRE nel caso in cui manchi, prima di installare la tua applicazione? Sì. Come dipende dall'installer.

Bene, mi puoi consigliare anche un installer free che prima dell'installazione mi permetta di eseguire uno script o un programma per verificare la presenza della corretta JRE sul sistema? Vorrei evitare di far fare troppe cose all'utente.

PGI-Bis
23-03-2007, 14:38
Non ho mai usato installer. Non saprei cosa consigliarti.

redcloud
23-03-2007, 14:49
Grazie u stessu, sei sempre er mejo ;)

Mixmar
23-03-2007, 17:44
Bene, mi puoi consigliare anche un installer free che prima dell'installazione mi permetta di eseguire uno script o un programma per verificare la presenza della corretta JRE sul sistema? Vorrei evitare di far fare troppe cose all'utente.

Io personalmente utilizzo questo (http://nsis.sourceforge.net/Main_Page) tool, è IMO molto buono, stabile, flessibile ed inoltre openSource: unico caveat, il linguaggio di scripting, un po' "astruso"... ma forse anche questa è solo una mia impressione come le altre. :D

Possiede già delle facility per rilevare la versione della JRE installata sul sistema (anche se io personalmente preferisco installare una versione di JRE dedicata al mio solo applicativo per evitare di modificare l'ambiente del PC su cui vado a installare il mio programma, come del resto suggerito da PGI-Bis).