Se ho un file sorgente Java (* .java) o un file di classe (* .class), come posso convertirlo in un file .exe?
Ho anche bisogno di un programma di installazione per il mio programma.
Se ho un file sorgente Java (* .java) o un file di classe (* .class), come posso convertirlo in un file .exe?
Ho anche bisogno di un programma di installazione per il mio programma.
Risposte:
Lo strumento Java Packager compila, confeziona e prepara le applicazioni Java e JavaFX per la distribuzione. Il comando javapackager è la versione della riga di comando.
- Documentazione di Oracle
L' javapackager
utility viene fornita con JDK. Può generare file .exe con il -native exe
flag, tra le altre cose.
WinRun4j è un lanciatore Java per Windows. È un'alternativa a javaw.exe e offre i seguenti vantaggi:
- Utilizza un file INI per specificare classpath, main class, vm args, program args.
- Nome eseguibile personalizzato che appare in Gestione attività.
- Argomenti JVM aggiuntivi per un utilizzo della memoria più flessibile.
- Sostituitore di icone integrato per icona personalizzata.
- [seguono altri punti elenco]
- Pagina Web di WinRun4J
WinRun4J è un'utilità open source. Ha molte caratteristiche.
Confeziona JAR, risorse e JVM per la distribuzione su Windows, Linux e Mac OS X, aggiungendo un file eseguibile nativo per farlo apparire come un'app nativa. Packr è più adatto per le applicazioni GUI.
- packr README
packr è un altro strumento open source.
JSmooth è un wrapper eseguibile Java. Crea launcher nativi per Windows (.exe standard) per le tue applicazioni java. Rende la distribuzione Java molto più semplice e intuitiva, in quanto è in grado di trovare da sola qualsiasi VM Java installata.
- Sito Web di JSmooth
JSmooth è open source e ha funzionalità, ma è molto vecchio. L'ultima versione è stata nel 2007.
JexePack è uno strumento da riga di comando (ottimo per gli script automatici) che consente di impacchettare l'applicazione Java (file di classe), opzionalmente insieme alle sue risorse (come GIF / JPG / TXT / ecc.), In un unico Windows EXE a 32 bit compresso , che viene eseguito utilizzando Java Runtime Environment di Sun. Sono supportate sia applicazioni console che finestre.
- Sito Web di JexePack
JexePack è trialware. Il pagamento è necessario per l'uso in produzione e i file exe creati con questo strumento visualizzeranno "promemoria" senza pagamento. Inoltre, l'ultima versione è stata nel 2013.
InstallAnywhere consente agli sviluppatori di creare facilmente software di installazione professionale per qualsiasi piattaforma. Con InstallAnywhere ti adatterai rapidamente ai cambiamenti del settore, raggiungerai il mercato più velocemente e fornirai un'esperienza coinvolgente per il cliente. E conoscere la vulnerabilità dei componenti OSS del progetto prima della spedizione.
- Sito Web di InstallAnywhere
InstallAnywhere è un pacchetto commerciale / aziendale che genera programmi di installazione per programmi basati su Java. Probabilmente è in grado di creare file .exe.
In alternativa ai file .exe, è possibile creare un file JAR che viene eseguito automaticamente quando si fa doppio clic, aggiungendo un punto di ingresso al manifest JAR .
Un'eccellente fonte di informazioni su questo argomento è l'articolo di Excelsior " Converti Java in EXE: perché, quando, quando e come ".
Vedi anche l'articolo associato "I migliori strumenti di conversione da JAR a EXE, gratuiti e commerciali ".
Launch4j è uno strumento multipiattaforma per il wrapping di applicazioni Java distribuite come vasetti in eseguibili nativi Windows leggeri. L'eseguibile può essere configurato per cercare una determinata versione di JRE o utilizzarne una in bundle ed è possibile impostare opzioni di runtime, come la dimensione heap iniziale / massima. Il wrapper offre inoltre una migliore esperienza utente tramite un'icona dell'applicazione, una schermata iniziale pre-JRE nativa, un nome di processo personalizzato e una pagina di download Java nel caso in cui non sia possibile trovare il JRE appropriato.
- Sito Web di Launch4j
AGGIORNAMENTO: GCJ è morto. È stato ufficialmente rimosso dal progetto GCC nel 2016. Ancora prima, è stato praticamente abbandonato per sette anni, e in ogni caso non è mai stato sufficientemente completo per servire come un'implementazione alternativa alternativa valida.
Vai a trovare un altro compilatore AOT Java.
GCJ: Il compilatore GNU per Java può compilare il codice sorgente Java in codice macchina nativo, inclusi gli eseguibili di Windows.
Sebbene non tutto in Java sia supportato sotto GCJ, in particolare i componenti della GUI (vedere Quali API Java sono supportate? Quanto è completa la domanda di supporto? Dalle FAQ ). Non ho usato GCJ molto, ma dai test limitati che ho fatto con le applicazioni console, sembra che vada bene.
Un aspetto negativo dell'utilizzo di GCJ per creare un eseguibile autonomo è che la dimensione del file EXE risultante può essere piuttosto grande. Una volta ho compilato una banale applicazione console in GCJ e il risultato è stato un eseguibile di circa 1 MB. (Potrebbero esserci modi per aggirare questo problema di cui non sono a conoscenza. Un'altra opzione potrebbe essere un programma di compressione eseguibile.)
In termini di programmi di installazione open source, il sistema di installazione tramite script Nullsoft è un programma di installazione tramite script. Se sei curioso, ci sono esempi forniti dagli utenti su come rilevare la presenza di un JRE e installarlo automaticamente se il JRE richiesto non è installato. (Solo per farvi sapere, non ho mai usato NSIS prima.)
Per ulteriori informazioni sull'uso di NSIS per l'installazione di applicazioni Java, dai un'occhiata alla mia risposta alla domanda " Qual è il modo migliore per distribuire le applicazioni Java? "
È possibile creare un file batch con il seguente codice:
start javaw -jar JarFile.jar
e converti il .bat in un .exe usando qualsiasi convertitore .bat in .exe.
Stiamo usando Install4J per creare programmi di installazione per Windows o ambienti Unix.
È facilmente personalizzabile fino al punto in cui si desidera scrivere script per azioni speciali che non possono essere eseguite con dialoghi standard. Ma anche se stiamo configurando servizi Windows con esso, stiamo usando solo componenti standard.
Penso che Launch4J provenga dalla stessa azienda (solo il lanciatore - nessun programma di installazione).
PS: purtroppo non mi pagano per questa approvazione. Mi piace solo quello strumento.
L'ultimo Java Web Start è stato migliorato per consentire un buon funzionamento offline e per consentire "l'installazione locale". Vale la pena esaminarlo.
EDIT 2018: Java Web Start non è più in bundle con i più recenti JDK. Oracle sta invece spingendo verso un modello "distribuisci la tua app localmente con un JRE incluso".
Se è necessario convertire l'intera applicazione in codice nativo, ovvero un EXE più DLL, c'è ExcelsiorJET . Ho scoperto che funziona bene e ho fornito un'alternativa al raggruppamento di un JRE.
Direi che launch4j è lo strumento migliore per convertire un codice sorgente java (.java) in un file .exe Puoi persino raggruppare un jre con esso per la distribuzione e l'exe può persino essere iconificato. Sebbene le dimensioni dell'applicazione aumentino, si assicura che l'applicazione funzionerà perfettamente anche se l'utente non ha un jre installato. Inoltre, ti consente di fornire il jre specifico richiesto per la tua app senza che l'utente debba installarla separatamente. Ma sfortunatamente, Java perde la sua importanza. Il suo supporto multipiattaforma viene totalmente ignorato e l'app finale è supportata solo per Windows. Ma questo non è un grosso problema, se fai catering solo per gli utenti di Windows.
In alternativa, è possibile utilizzare un traduttore java-to-c (ad esempio, JCGO ) e compilare i file C generati in un file binario nativo (.exe) per la piattaforma di destinazione.
Posso essere perdonato per essere contrario alla conversione di un programma Java in un'applicazione .exe e ho i miei motivi. il principale è che un programma java può essere compilato in un file jar da molti IDE. Quando il programma è in formato .jar, può essere eseguito su più piattaforme invece di .exe che verrebbe eseguito solo in un ambiente molto limitato. Sono dell'idea che i programmi Java non debbano essere convertiti in Exe a meno che non sia molto necessario. Si può sempre scrivere file .bat che eseguono il programma Java mentre è un file jar.
se è davvero necessario convertirlo in exe, il convertitore Jar2Exe lo fa in silenzio e si possono anche collegare librerie compilate insieme all'applicazione principale.