Cosa sono i file JAR e come funziona l’esecuzione
Un file JAR (Java ARchive) è un formato di archivio basato su ZIP e sviluppato appositamente per Java. Raggruppa classi Java, risorse come immagini o file di configurazione, metadati e spesso un file manifest (META-INF/MANIFEST.MF).
- A differenza dei tradizionali archivi ZIP, i file Jar sono progettati per raggruppare applicazioni Java o librerie in un unico file. Ciò semplifica notevolmente la distribuzione e l’utilizzo di tali applicazioni.
- Affinché un file Jar possa essere avviato direttamente, deve contenere nel manifesto una cosiddetta Main-Class. Questa voce indica la classe principale dell’applicazione. Se è presente, il file può essere avviato dalla riga di comando inserendo il comando java -jar nomefile.jar.
- Non tutti i file Jar sono applicazioni autonome: molti fungono da librerie utilizzate in altri progetti.
- I file Jar sono inoltre compressi, il che li rende solitamente più piccoli della somma dei singoli file che li compongono. Possono essere firmati digitalmente per garantire l’integrità e l’autenticità del contenuto. Le versioni Java più recenti supportano anche i cosiddetti JAR modulari o multi-release, che contengono classi per diverse versioni Java.
Installazione di Java Runtime (JRE / JDK) su Windows, macOS e Linux
Per poter eseguire i file Jar sul proprio sistema, è necessario disporre di un ambiente Java Runtime. In questo capitolo si imparerà come installare Java e a cosa prestare attenzione nelle diverse versioni.
- Per avviare un file Jar è necessario almeno un ambiente Java Runtime (JRE). Oggi questo è solitamente incluso nel Java Development Kit (JDK). A seconda dell’applicazione, potrebbe essere necessaria una versione specifica, spesso Java 8, 11, 17 o successive.
- Le versioni con supporto a lungo termine (LTS) come Java 11 o Java 17 sono particolarmente consigliate, poiché vengono aggiornate per molti anni. Assicurati che la versione Java sia compatibile con la tua applicazione, poiché i programmi più vecchi potrebbero essere in parte incompatibili con le versioni più recenti.
- Installazione su Windows: Scarica l’ultima versione di Java dal sito web ufficiale di Oracle o da una distribuzione OpenJDK (ad esempio Azul Zulu o Eclipse Temurin). Seleziona il file di installazione adatto al tuo sistema (di solito 64 bit) ed esegui il programma di installazione.
- Dopo l’installazione, potrebbe essere necessario aggiungere la cartella “bin” dell’installazione Java alla variabile di ambiente PATH. Quindi apri il prompt dei comandi e verifica che Java sia stato installato correttamente con il comando java –version.
- Installazione su macOS: Scarica il file di installazione (DMG o PKG) da Oracle o da una pagina OpenJDK e segui la procedura guidata di installazione. Facoltativamente, è possibile impostare le variabili d’ambiente Java con i comandi export JAVA_HOME=$(/usr/libexec/java_home) e export PATH=$JAVA_HOME/bin:$PATH nella shell (ad es. zsh).
- Su macOS, Java può essere facilmente installato anche tramite Homebrew, digitando nel terminale: brew install java
- Installazione su Linux (ad es. Ubuntu o Debian): Molte distribuzioni Linux offrono già Java nei loro repository. Verificate con java –version se Java è installato. In caso contrario, potete installare un ambiente di runtime aggiornato, ad esempio con sudo apt install openjdk-17-jre . In alternativa, è possibile scaricare e configurare manualmente il JDK dal sito web OpenJDK.
Sicurezza e ricerca degli errori durante l’esecuzione dei file JAR
I file JAR sono pratici, ma comportano anche alcuni rischi. Di seguito troverete informazioni su come eseguire i file JAR in modo sicuro e cosa fare in caso di messaggi di errore o problemi.
- Avvertenze di sicurezza: Eseguite solo file Jar provenienti da fonti affidabili. I file provenienti da fonti sconosciute o non sicure possono contenere codice dannoso che mette a rischio il vostro sistema. Gli sviluppatori affidabili forniscono solitamente checksum o firme digitali che consentono di verificare l’autenticità di un file Jar.
- Se si desidera esaminare più da vicino un file Jar, è possibile aprirlo o decomprimerlo con i comuni programmi ZIP. Anche strumenti speciali come “OWASP Dependency-Check” aiutano a identificare le vulnerabilità note nelle librerie contenute. Per la massima sicurezza, si consiglia di testare prima i file Jar sconosciuti in una macchina virtuale o in un ambiente isolato.
- Risoluzione dei problemi (troubleshooting): Se un file Jar non si avvia, di solito c’è una ragione chiara. Le cause più comuni sono:
- Voce Main Class mancante: In questo caso, spesso viene visualizzato il messaggio “no main manifest attribute”. Il manifesto deve quindi essere modificato manualmente o il JAR deve essere ricreato.
- Dipendenze mancanti: se all’avvio si verifica un “ClassNotFoundException” o un “NoClassDefFoundError”, spesso mancano librerie aggiuntive. Queste devono essere aggiunte al percorso di classe o integrate correttamente.
- Versione Java incompatibile: un’applicazione compilata con Java 17 potrebbe non funzionare con Java 8. Verificate quale versione è richiesta dall’applicazione e adattate il vostro runtime di conseguenza.
- Errore nel manifesto: il contenuto del manifesto può essere visualizzato con il comando jar xf nomefile.jar META-INF/MANIFEST.MF
e successivamente cat META-INF/MANIFEST.MF . Qui dovrebbero essere presenti voci come “Main-Class” e “Class-Path”.
- Leggi attentamente i messaggi di errore: di solito contengono indicazioni preziose sui file mancanti o sui percorsi errati.
Esempi pratici e strumenti utili
Per concludere, ecco alcuni esempi pratici e strumenti che vi faciliteranno il lavoro quotidiano con i file jar.
- Esempio di avvio di un’applicazione: Se il vostro file si chiama “miaApp.jar” e contiene una classe principale eseguibile, avviatelo con il comando java -jar miaApp.jar
- Se sono necessarie librerie aggiuntive che si trovano in una sottocartella “lib”, l’applicazione può essere avviata con il percorso di classe, ad esempio in questo modo: java -cp “miaApp.jar:lib/*” com.esempio.classe principale
- Aprire o decomprimere i file jar: Poiché i file jar sono compatibili con ZIP, possono essere decompressi con programmi comuni come 7-Zip, WinRAR o tramite la riga di comando. Su Linux o macOS, ad esempio, è possibile farlo con unzip nomefile.jar -d cartella_di_destinazione o, per visualizzare solo il contenuto, con jar tf nomefile.jar
- Strumenti di analisi e sicurezza: Per il controllo della sicurezza è possibile utilizzare strumenti come “OWASP Dependency-Check”. Ciò consente di analizzare le dipendenze all’interno di un file Jar e di identificare le vulnerabilità note.
- Casi d’uso tipici: I file Jar vengono utilizzati in molti settori, dai programmi desktop alle librerie, fino alle applicazioni server o cloud. Sono particolarmente pratici se si desidera distribuire un’applicazione Java in modo compatto o raggruppare più moduli in un unico file.