Archivio Java
Un archivio Java (colloquialmente noto come file JAR a causa dell'estensione del file ) viene utilizzato per organizzare, distribuire e fornire librerie di classi e programmi eseguibili che sono stati creati nel linguaggio di programmazione Java . Tecnicamente è un file compresso in formato ZIP . L'archivio contiene classi Java compilate ( bytecode ) ed eventualmente altre risorse. Di solito include anche uno o più file con metadati . Questi hanno nomi e strutture predefiniti e si trovano nella directory META-INF. Il file tipico META-INF/MANIFEST.MFè descritto più dettagliatamente nella sezione Manifest . Il nome breve dell'archivio può essere inteso come un gioco di parole con la parola inglese jar (tedesco: "vessel").
uso
I file JAR sono stati originariamente introdotti in modo che le classi Java richieste dalle applet Java non debbano essere ricaricate individualmente dalla rete. Il trasferimento di molte classi in un file è più efficiente e, inoltre, i file possono essere compressi .
Il file "manifest" può essere utilizzato per determinare come viene avviata l'applicazione Java. Ciò significa che l'applicazione può essere avviata anche sotto interfacce utente grafiche come Windows , Mac OS X o KDE senza l'ausilio della riga di comando (a condizione che .jarsia stato assegnato il comando appropriato all'estensione del file ). Con java -jarpuoi avviare i file JAR dalla riga di comando . Gli archivi JAR memorizzano i nomi dei file internamente nella codifica UTF-8 in modo che possano contenere anche dieresi. Un prerequisito per l'esecuzione di JAR o programmi Java è sempre un Java Runtime Environment installato .
I file JAR possono essere creati con il comando jar del JDK (che utilizza la sintassi tar ) o, se i nomi dei file contengono solo caratteri ASCII, con qualsiasi programma ZIP. Inoltre, la piattaforma Java, Standard Edition offre nei due pacchetti "java.util.jar" e classi "java.util.zip" per leggere o creare archivi JAR o ZIP.
Ad esempio, il seguente comando visualizza il contenuto di un file JAR denominato test.jar .
jar tvf test.jar
In questo caso, la lettera t per "Contents View" (di inglese t able of content ) , v per verbose output (di inglese v erbose ) e f afferma che (inglese da un file f ile ) deve essere letto il cui nome segue .
manifesto
Ogni Archivio Java può fornire diverse informazioni sul contenuto dell'archivio nella directory "META-INF" tramite un file chiamato "MANIFEST.MF". Le meta-informazioni più importanti includono
- la versione delle librerie di classi incluse che possono essere determinate in fase di esecuzione ,
- Informazioni su JavaBeans inclusi e
- il nome della classe principale di un'applicazione Java contenuta .
Questo file manifest è un semplice file di testo orientato alla riga che contiene diverse coppie di nomi e valori, ognuno dei quali definisce un cosiddetto attributo . Un attributo è una proprietà dell'intera applicazione, della libreria di classi contenuta o anche solo di un singolo pacchetto Java ( pacchetto ) o di una singola classe . Inoltre, è diviso in diverse sezioni ( sezioni divise).
La prima sezione è chiamata la sezione principale e definisce gli attributi che si applicano all'intero archivio Java. Inizia sempre con la definizione dell'attributo “Versione manifesto”, mentre gli altri attributi sono facoltativi. Le sezioni seguenti si riferiscono ciascuna a un singolo pacchetto o classe e sono facoltative, così come gli attributi che contengono. Gli attributi sconosciuti vengono ignorati e non generano messaggi di errore. Se un attributo è definito sia nella sezione principale che in una singola sezione, il valore definito nella singola sezione si sovrappone al valore preassegnato nella sezione principale per il componente (pacchetto o classe) a cui la sezione si riferisce.
esempio
L'esempio seguente mostra un estratto dal manifest del file “rt.jar” contenuto nell'ambiente runtime Java 1.4.
Manifest-Version: 1.0 Specification-Title: Java Platform API Specification Created-By: 1.4.2_05 (Sun Microsystems Inc.) Implementation-Title: Java Runtime Environment Specification-Vendor: Sun Microsystems, Inc. Specification-Version: 1.4 Implementation-Version: 1.4.2_05 Implementation-Vendor: Sun Microsystems, Inc. Name: javax/swing/JRadioButtonMenuItem.class Java-Bean: True Name: javax/swing/JList.class Java-Bean: True
La sezione principale di questo esempio mostra che questo manifest è strutturato come descritto nella versione 1 della specifica del file JAR di Sun Microsystems (l'unica finora). Gli altri attributi di questa sezione principale forniscono informazioni sulla specifica soddisfatta dalla libreria , il produttore dell'archivio Java, il nome dell'implementazione, nonché il produttore e la versione della specifica utilizzata e l'implementazione che contiene. Le due sezioni seguenti dell'esempio si riferiscono ciascuna a una classe contrassegnata come JavaBean .
Formati derivati
Ulteriori specializzazioni del formato JAR sono, ad esempio, file WAR ( Web Application Archive ), file EAR ( Enterprise Application Archive ) o file OpenDocument .
Utilità
Il Java Development Kit contiene diversi programmi per la manipolazione dei file JAR:
- vaso
- jar è un programma per creare, modificare e scompattare file JAR, i cui parametri sono simili a quelli del noto programma Unix tar .
- jarsigner
- jarsigner è un programma che firma i file JAR e ne verifica la firma elettronica.
- pack200
- pack200 converte i file JAR in un formato di file in grado di memorizzare il bytecode in modo più efficiente. È stato introdotto in Java 5 ed è utilizzato in particolare con Java Web Start , poiché potrebbe essere necessario trasferire grandi quantità di file su Internet . La riconversione avviene con il programma unpack200 .
Strumenti di programmazione per file JAR non inclusi nel JDK:
- ProGuard
- ProGuard è un programma per la compressione, l'ottimizzazione e l' offuscamento dei file JAR. Ciò si ottiene attraverso un'analisi più dettagliata del bytecode .
- imballatore
- Se i nomi dei file nell'archivio sono costituiti da caratteri ASCII, i file JAR possono essere modificati con qualsiasi strumento software in grado di modificare anche i file ZIP . Alcuni esempi sono forniti nell'elenco dei programmi di compressione dei dati .