Java-arkiv

Et Java-arkiv (daglig kjent som en JAR-fil på grunn av filtypen ) brukes til å organisere, distribuere og tilby klassebiblioteker og kjørbare programmer som er opprettet på Java- programmeringsspråket . Teknisk sett er det en komprimert fil i ZIP- format. Arkivet inneholder kompilerte Java-klasser ( bytecode ) og muligens andre ressurser. Det inkluderer vanligvis også en eller flere filer med metadata . Disse har forhåndsdefinerte navn og strukturer og ligger i katalogen META-INF. Den typiske filen META-INF/MANIFEST.MFer beskrevet mer detaljert i delen Manifest . Det korte navnet på arkivet kan forstås som et ordspill med det engelske ordet jar (tysk: "fartøy").

bruk

JAR-filer ble opprinnelig introdusert slik at Java- klasser som kreves av Java-appletter ikke trenger å lastes på nytt individuelt fra nettverket. Å overføre mange klasser i en fil er mer effektivt, og i tillegg kan filene komprimeres .

"Manifest" -filen kan brukes til å bestemme hvordan Java-applikasjonen startes. Dette betyr at applikasjonen også kan startes under grafiske brukergrensesnitt som Windows , Mac OS X eller KDE uten hjelp fra kommandolinjen (forutsatt at .jarriktig kommando er tildelt filtypen ). Med java -jarkan du starte JAR-filer fra kommandolinjen . JAR arkiver lagrer filnavn internt i UTF-8-koding slik at de også kan inneholde umlauts. En forutsetning for å kjøre JAR eller Java-programmer er alltid et installert Java Runtime-miljø .

JAR-filer kan opprettes med jar- kommandoen til JDK (som bruker tar- syntaksen ) eller, hvis filnavnene bare inneholder ASCII-tegn, med ethvert ZIP-program. I tillegg tilbyr Java Platform, Standard Edition i de to pakkene "java.util.jar" og "java.util.zip" klasser for å lese eller opprette JAR- eller ZIP-arkiver.

For eksempel viser følgende kommando innholdet i en JAR-fil som heter test.jar .

jar tvf test.jar

I dette tilfellet bokstaven t for "Innhold Vis" (av engelsk t stand else ), v ordrik utgang (engelsk for v erbose ) og f stater som (engelsk fra en fil f ile ) skal lese hvis navn følger .

manifestere

Hvert Java-arkiv kan gi forskjellig informasjon om innholdet i arkivet i "META-INF" -katalogen ved hjelp av en fil kalt "MANIFEST.MF". Den viktigste metainformasjonen inkluderer

Denne manifestfilen er en enkel linjeorientert tekstfil som inneholder flere par navn og verdier, som hver definerer et såkalt attributt . Et attributt er en egenskap for hele applikasjonen, klassebiblioteket inneholdt eller til og med bare en enkelt Java-pakke ( pakke ) eller en enkelt klasse . I tillegg er den delt inn i flere seksjoner ( seksjoner delt).

Den første delen kalles hovedseksjonen og definerer attributter som gjelder for hele Java-arkivet. Det begynner alltid med definisjonen av "Manifest Version" -attributtet, mens de andre attributtene er valgfrie. De følgende avsnittene refererer hver til en enkelt pakke eller klasse og er valgfrie, i tillegg til attributtene de inneholder. Ukjente attributter ignoreres og fører ikke til feilmeldinger. Hvis et attributt er definert både i hovedseksjonen og i en individuell seksjon, overlapper verdien som er definert i den enkelte seksjonen verdien som er tilordnet i hovedseksjonen for komponenten (pakke eller klasse) som seksjonen gjelder.

eksempel

Følgende eksempel viser et utdrag fra manifestet til "rt.jar" -filen i Java 1.4 kjøretidsmiljø.

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

Hoveddelen i dette eksemplet viser at dette manifestet er strukturert som beskrevet i versjon 1 av Sun Microsystems JAR-filspesifikasjonen (den eneste hittil). De andre egenskapene til denne hoveddelen gir informasjon om spesifikasjonen oppfylt av biblioteket , produsenten av Java-arkivet, navnet på implementeringen, samt produsenten og versjonen av spesifikasjonen som er brukt, og implementeringen den inneholder. De følgende to delene av eksemplet refererer hver til en klasse som er merket som en JavaBean .

Avledede formater

Ytterligere spesialiseringer av JAR-formatet er for eksempel WAR-filer ( Web Application Archive ), EAR-filer ( Enterprise Application Archive ) eller OpenDocument- filer.

Verktøy

Den Java Development Kit inneholder flere programmer for å manipulere JAR-filer:

krukke
jar er et program for å opprette, endre og utpakking JAR-filer, er parametrene som er lik de av den kjente Unix program tjære .
jarsigner
jarsigner er et program som signerer JAR-filer og verifiserer deres elektroniske signatur.
pakke200
pack200 konverterer JAR-filer til et filformat som kan lagre bytekode mer effektivt. Den ble introdusert i Java 5 og brukes spesielt med Java Web Start , da det kan være nødvendig å overføre store mengder filer over Internett . Ombyggingen skjer med programmet unpack200 .

Programmeringsverktøy for JAR-filer som ikke er inkludert i JDK:

ProGuard
ProGuard er et program for komprimering, optimalisering og forvirring av JAR-filer. Dette oppnås gjennom en mer detaljert analyse av bytekoden .
pakker
Hvis filnavnene i arkivet består av ASCII-tegn, kan JAR-filer redigeres med hvilket som helst programvareverktøy som også kan redigere ZIP- filer. Noen eksempler er gitt i listen over datakomprimeringsprogrammer .

weblenker