Domanda

Java è uno dei miei linguaggi di programmazione preferiti.Mi imbatto sempre nel problema di distribuire la mia applicazione agli utenti finali.

Dare a un utente un JAR non è sempre facile da usare come vorrei e l'utilizzo di Java WebStart richiede la manutenzione di un server web.

Qual è il modo migliore per distribuire un'applicazione Java?Cosa succede se l'applicazione Java deve installare elementi sul computer dell'utente?Esistono buoni sistemi di installazione/pacchetto Java?

È stato utile?

Soluzione

Esistono diverse soluzioni, a seconda delle esigenze di distribuzione.

  1. Basta usare un barattolo.Ciò presuppone che l'utente abbia installata la versione Java corretta, altrimenti l'utente riceverà eccezioni "versione formato file di classe".Questo va bene per la distribuzione interna all'interno di un'azienda.

  2. Utilizza launch4j e un programma di installazione come NSIS.Questo ti dà molto più controllo, anche se l'utente può comunque fare cose stupide come disinstallare il runtime Java.Questo è probabilmente l'approccio più popolare e quello che utilizzo attualmente.

  3. Utilizzare Webstart.Ciò presuppone anche che l'utente abbia installata la versione Java corretta, ma è molto più semplice iniziare.La mia esperienza è che questo va bene per ambienti intranet strettamente controllati, ma diventa una seccatura con distribuzioni più grandi perché presenta molti strani errori.Potrebbe migliorare con la nuova tecnologia plug-in in Java 1.7.

  4. Utilizza un compilatore di codice nativo come Excelsior JET e distribuiscilo come eseguibile oppure inseriscilo in un programma di installazione.Costoso e generalmente ti lega a una versione leggermente precedente di Java e c'è qualche problema con il caricamento dinamico delle classi, ma è molto efficace per la distribuzione su larga scala in cui è necessario ridurre al minimo i problemi di supporto.

Altri suggerimenti

programma di installazione avanzato semplifica il confezionamento di app Java come eseguibili di Windows ed è abbastanza flessibile nel modo in cui puoi configurarlo.Ho scoperto che per distribuire applicazioni Java ai client Windows, questo è il modo più semplice per procedere.

JLiscio è un semplice programma che prende il tuo jar e lo racchiude in un file eseguibile standard di Windows.Viene fornito con una semplice GUI che consente di configurare la JVM richiesta, abbinarla all'applicazione o fornire un'opzione per scaricarla se non è già installata.Puoi inviare il file exe così com'è o comprimerlo con le possibili dipendenze (o lasciare che il programma scarichi le dipendenze extra dalla rete all'avvio).È anche gratuito, come nel caso della birra e della parola, il che può (o meno) essere una buona cosa.

Dipende da quanto sono sofisticati i tuoi utenti target.Nella maggior parte dei casi vuoi isolarli dal fatto che stai eseguendo un'app basata su Java.Fornisci loro un programma di installazione nativo che faccia la cosa giusta (crea voci del menu di avvio, lanciatori, registrati con aggiungi/rimuovi programmi, ecc.) e include già un runtime Java (quindi l'utente non ha bisogno di saperlo o preoccuparsene).Vorrei suggerire il nostro strumento di installazione multipiattaforma, BitRock InstallBuilder.Sebbene non sia basato su Java, viene comunemente utilizzato per creare pacchetti di applicazioni Java.Può essere facilmente integrato con Ant ed è possibile creare programmi di installazione Windows da Unix/Linux/Mac e viceversa.Poiché i programmi di installazione generati sono nativi, non richiedono un passaggio di autoestrazione o che un JRE sia già presente nel sistema di destinazione, il che significa programmi di installazione più piccoli e ti risparmia qualche grattacapo.Vorrei anche menzionare che disponiamo di licenze gratuite per progetti open source

i file eseguibili sono i migliori ma sono limitati dalla piattaforma, ad es.usa gcj: http://gcc.gnu.org/java/ per Linux per produrre eseguibili e utilizzare launch4j: http://launch4j.sourceforge.net/ per produrre eseguibili di Windows.Per creare pacchetti su Linux è possibile utilizzare qualsiasi packager RPM o deb.Per win32 prova http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System

Se si tratta di una vera applicazione per utente finale dotata di GUI, dovresti ignorare la lingua in cui hai scritto il programma (Java) e utilizzare un programma di installazione nativo per ciascuna delle piattaforme scelte.Gli utenti Mac vogliono un file .dmg mentre su Windows un programma di installazione .msi o .exe è la strada da percorrere.Su Windows preferisco NSIS di NullSoft solo perché è meno discutibile di InstallShield o InstallAnywhere.Su OSX puoi contare sulla JVM già presente.Su Windows dovrai controllarlo e installarlo se necessario.Gli utenti Linux non eseguiranno applicazioni GUI Java e i pochi che lo faranno sapranno cosa fare con un eseguibile .jar.

Anche se non l'ho usato NSIS (Nullsoft Scriptable Installer System), ci sono script di installazione che controllano se il JRE richiesto è installato o meno sul sistema di destinazione.

Molti script di esempio sono disponibili da Esempi di codici E Installatori del mondo reale pagine, come:

(Tieni presente che in realtà non ho utilizzato nessuno degli script, quindi per favore non prenderlo come un'approvazione.)

Avevo bisogno di un modo per comprimere il mio progetto e le sue dipendenze in un unico file jar.

Ho trovato ciò di cui avevo bisogno utilizzando il plugin Maven2 Assembly: Plug-in di assemblaggio Maven2

Questo sembra duplicare la funzionalità di un barattolo, ma non richiede alcuna configurazione aggiuntiva per farlo funzionare.

Per semplici app Java mi piace usare Jar's.È molto semplice distribuire un file su cui un utente può semplicemente fare clic (Windows) o

java -jar jarname.jar

IMHO, jar è la strada da percorrere quando la semplicità è un requisito principale.

Sviluppo applicazioni Eclipse RCP.Normalmente per avviare un'applicazione Eclipse è incluso un launcher eseguibile.Includo la macchina virtuale Java all'interno della cartella dell'applicazione in una sottodirectory /jre per garantire che venga utilizzata la versione Java corretta.

Quindi confezioniamo con Inno Setup per l'installazione sul computer dell'utente.

Qual è il modo migliore per distribuire un'applicazione Java?Cosa succede se l'applicazione Java deve installare artefatti sul computer dell'utente?Ci sono buoni sistemi di installazione/imballaggio Java là fuori?

Nella mia esperienza (da valutando una serie di opzioni), installa4j è una buona soluzioneCrea programmi di installazione nativi per qualsiasi piattaforma ed è specificamente orientato all'installazione di app Java.Per i dettagli vedere "Caratteristiche"sul suo sito web.

install4j è uno strumento commerciale, però.Soprattutto se le tue esigenze sono relativamente semplici (basta distribuire un'applicazione e installare alcuni artefatti), esistono molte altre buone opzioni, comprese quelle gratuite (come izPack o il già menzionato Lauch4j).Ma hai chiesto il migliore modo, e per quanto ne so attualmente install4j è quello giusto, soprattutto per la distribuzione di app Java (EE) più grandi o più complicate.

La risposta migliore dipende dalla piattaforma.Per la distribuzione su Windows, ho ottenuto buoni risultati utilizzando una combinazione di un barattolo E launch4j.Ci è voluto un po' di tempo per impostare correttamente il mio ambiente di compilazione (script ant, soprattutto) ma ora è abbastanza indolore.

Ebbene, dal mio punto di vista il meccanismo di distribuzione superiore è utilizzare qualcosa del genere Fare clic su una volta, O WebStart tecnologia.Devi semplicemente distribuire la versione sul server e questa arriva automaticamente ai client quando la versione viene rilasciata.Anche la piattaforma Eclipse RCP contiene UpdateManager che fa quello che fa WebStart, ma anche molto altro.

Dato che utilizzo Maven2 per la creazione, la distribuzione è solo un gioco da ragazzi:copia il jar creato nella posizione sul server, aggiorna il file jnlp se necessario e il gioco è fatto.

installanywhere è buono ma costoso: non ne ho trovato uno buono e gratuito

Vorrei comprimere il file jar insieme ad altri jar dipendenti, file di configurazione e documentazione insieme a run.bat/run.sh.L'utente finale dovrebbe essere in grado di decomprimerlo in qualsiasi posizione e modificare run.bat se necessario (nella maggior parte dei casi dovrebbe essere eseguito senza modifiche).Un programma di installazione può essere utile se desideri creare voci nel menu di avvio, sul desktop, nella barra delle applicazioni, ecc.

Come utente preferisco decomprimere ed eseguire il tipo di installazione (nessuna voce del menu Start, per favore).Tuttavia le persone al di fuori del settore IT potrebbero avere preferenze diverse.Pertanto, se l'applicazione è in gran parte destinata agli sviluppatori, il percorso zip-run.bat e le applicazioni per il grande pubblico possono essere installate utilizzando un programma di installazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top