Hva er CLASS-filformatet?
En .class-fil inneholder kompilert kildekode skrevet i programmeringsspråket Java. .class-filer genereres av Java-kompilatoren fra .java-kildefiler som definerer én eller flere klasser. Hver .class-fil er resultatet av en vellykket kompilering og inneholder bytecode - en binær representasjon av en klasse som utføres av Java Virtual Machine (JVM).
.class-filer genereres automatisk under kompileringen av .java-kildefiler. Fordi bytecode er plattformuavhengig, kjører den samme .class-filen på alle operativsystemer som har en kompatibel JVM installert. En enkelt .java-kildefil kan inneholde én eller flere klasser, og hver klasse får sin egen .class-fil under kompileringsprosessen.
Kompilering av .java-filer til .class-filer utføres ved hjelp av kommandoen javac som følger med Java Development Kit (JDK). De fleste Java-programmeringsmiljøer - inkludert IDE-er som IntelliJ IDEA og Eclipse - kompilerer .class-filer automatisk mens programmerere skriver kode.
Java Runtime Environment (JRE) støtter kjøring av .class-filer via kommandoen java, men tillater ikke kompilering siden JRE ikke inkluderer kompilatoren javac.
Hver .class-fil starter med det 4-byte lange magiske tallet 0xCAFEBABE, etterfulgt av felt for minor- og major-versjon som identifiserer Java-utgivelsen som ble brukt til å kompilere den. Flere .class-filer pakkes vanligvis sammen i et JAR-arkiv for distribusjon og utrulling.
Siden JVM er tilgjengelig i mange versjoner, må man huske på at ikke alle .class-filer er kompatible med alle versjoner av kjøretidsmiljøet. En fil som er kompilert for en nyere Java-hovedversjon kan ikke lastes av en eldre JVM.
Sikkerhet og trygghet
RISIKO: MEDIUMEn .class-fil er kompilert kode: hvis du kjører den («java MyClass») med en JVM, utføres den med din brukers tillatelser. En ukjent klasse - i likhet med en ukjent JAR eller EXE - kan inneholde skadelig programvare. Behandle nedlastet kompilert Java som upålitelig: kjør kun klasser fra kilder du stoler på. Å bare dekompilere eller disassemblere en .class-fil (JD-GUI, javap) utfører den ikke og er trygt. Vær oppmerksom på at bytecode avslører et programs logikk, så alt du kompilerer kan dekompileres av andre med mindre det er obfuskert.
Formatdetaljer
i et nøtteskallProgrammer som åpner CLASS-filer
Tekniske detaljer
dyp spesifikasjon| Format-type | Kompilert Java-bytecode (binær) |
| MIME-type | application/java-vm |
| Magiske bytes | 0xCAFEBABE (4 bytes ved fil-offset 0) - finnes i enhver gyldig .class-fil |
| Versjonskoding | Bytes 6-7 (major version) identifiserer målversjonen av Java; f.eks. 52 = Java 8, 61 = Java 17, 65 = Java 21 |
| Kjøretidsmiljø | Java Virtual Machine (JVM) via kommandoen `java` |
| Kompileringsverktøy | `javac`-kompilatoren, inkludert i Java Development Kit (JDK) |
| Plattformuavhengighet | Bytecode er nøytral overfor CPU-arkitektur og kjører på alle operativsystemer med en kompatibel JVM |
| Én klasse per fil | Hver toppnivå- eller statisk nøstet klasse kompileres til sin egen separate `.class`-fil |
| Navngiving av indre klasser | Indre og anonyme klasser produserer ekstra filer med `$` i navnet (f.eks. `Outer$Inner.class`) |
| Konstantpool | Hver fil bygger inn en strukturert konstantpool-tabell som inneholder streng-literaler, klassenavn og felt/metode-beskrivelser |
| Instruksjonssett | Bruker JVM-bytecode-instruksjonssettet (~200 opkoder), uavhengig av native CPU-instruksjonssett |
| Bytecode-verifikator | JVM verifiserer `.class`-filens struktur og typesikkerhet før utførelse, og avviser misdannede eller manipulerte filer |
| Dekompilering | Kan disassembleres med `javap -c` (innebygd i JDK) eller dekompileres tilbake til Java-kildekode med verktøy som JD-GUI eller CFR |
| Pakking | Vanligvis distribuert samlet i `.jar`-arkiver (ZIP-baserte beholdere som inneholder flere `.class`-filer og et manifest) |
| Android-inkompatibilitet | Android kjører ikke `.class`-filer direkte; verktøyet `d8` konverterer dem til `.dex`-bytecode for Android Runtime (ART) |
| Utgitt | 1995-1996 (Java 1.0) |
| Åpen standard | Ja · royalty-fri |
| Spesifikasjon | docs.oracle.com |
CLASS-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om CLASS-filer.