Mikä on Class-tiedosto?
Javan luokkatiedosto on luokan .java käännetty tulos, jonka Java Virtual Machine (JVM) itse asiassa suorittaa. Luokkatiedostot voidaan suorittaa yksitellen sekä ne voivat olla osa JAR-tiedostoa pakettina muiden pakettitiedostojen kanssa. Nämä voidaan luoda käyttämällä javac
-komentoa komentoriviliittymästä. Jotkut Java-IDE:t, kuten Eclipse ja NetBeans, tarjoavat .class-tulostetiedostoja projektin Java-tiedostoista.
Luokan tiedostomuoto
Java-luokkatiedosto koostuu tavukoodista, joka on JVM:n suorittama välikoodi. Luokkatiedosto koostuu 8-bittisten tavujen virrasta, ja monitavuiset tietokohteet tallennetaan aina big endian -järjestyksessä.
Luokkatiedostorakenne
Luokan tiedostorakenne on alla olevan kuvan mukainen.
ClassFile {
u4 magic;
u2 minor_version;
u2 major_version;
u2 constant_pool_count;
cp_info constant_pool[constant_pool_count-1];
u2 access_flags;
u2 this_class;
u2 super_class;
u2 interfaces_count;
u2 interfaces[interfaces_count];
u2 fields_count;
field_info fields[fields_count];
u2 methods_count;
method_info methods[methods_count];
u2 attributes_count;
attribute_info attributes[attributes_count];
}
missä:
u1 = etumerkitön yhden tavun määrä
u2 = etumerkitön kaksitavuinen määrä
u4 = etumerkitön neljän tavun määrä
Details of the .class file structure as well explained in the Oracle class file format and can be referred by developers for reference. A summary of these fields are as follow.
magic
- Magic-kohde antaa maagisen numeron, joka tunnistaa luokan tiedostomuodon; sen arvo on 0xCAFEBABE.minor_version
,major_version
- Alaversio- ja major_version-kohteiden arvot ovat tämän luokkatiedoston sivu- ja pääversionumerot.vakio_poolin_määrä
- Kohteen vakio_pooli_määrä arvo on yhtä suuri kuin vakio_poolitaulukon merkintöjen määrä plus yksi. Vakiovarastoindeksiä pidetään kelvollisena, jos se on suurempi kuin nolla ja pienempi kuin vakiopoolimäärä, lukuun ottamatta vakiotyyppiä long ja double.constant_pool[]
- Vakiovarasto on taulukko rakenteista (§4.4), joka edustaa erilaisia merkkijonovakioita, luokkien ja käyttöliittymien nimiä, kenttien nimiä ja muita vakioita, joihin ClassFile-rakenteessa ja sen alirakenteissa viitataan. Kunkin vakio_poolitaulukkomerkinnän muoto ilmaistaan sen ensimmäisellä “tag”-tavulla.access_flags
- Access_flags-kohteen arvo on lippujen maski, jota käytetään ilmaisemaan tämän luokan tai käyttöliittymän käyttöoikeuksia ja ominaisuuksia.“this_class” - This_class kohteen arvon on oltava voimassa oleva indeksi vakio_poolitaulukossa.
super_class
- Luokassa super_luokka-kohteen arvon on oltava joko nolla tai sen on oltava voimassa oleva indeksi vakio_poolitaulukossa.liitäntöjen_määrä
- Interfaces_count-kohteen arvo antaa tämän luokan tai liitäntätyypin suorien superliitäntöjen määrän.liitännät[]
- Jokaisen rajapintataulukon arvon on oltava voimassa oleva indeksi vakio_poolitaulukossa.fields_count
- Kohteen fields_count arvo antaa kenttätaulukon kenttätietorakenteiden määrän.fields[]
- Each value in the fields table must be a field_info structure giving a complete description of a field in this class or interface.methods_count
- Method_count-kohteen arvo antaa menetelmätaulukon method_info-rakenteiden lukumäärän.methods[]
- Each value in the methods table must be a method_info structure giving a complete description of a method in this class or interface. If neither of the ACC_NATIVE and ACC_ABSTRACT flags are set in the access_flags item of a method_info structure, the Java Virtual Machine instructions implementing the method are also supplied.attributes_count
- Attribuuttien_määrä -kohteen arvo antaa määritteiden määrän (§4.7) tämän luokan attribuuttitaulukossa.attributes[]
- Attribuuttitaulukon jokaisen arvon on oltava attribuuttitietorakenne.
Viitteet
See Also
- BIB File - BibTeX Bibliografia - Mikä on .bib-tiedosto ja kuinka avata se?
- FS File - Visual F# Source File - Mikä on .fs-tiedosto ja kuinka avata se?
- GED File - GEDCOM Genealogy Data File - Mikä on .ged-tiedosto ja miten se avataan?
- INO File - Arduino Sketch - Mikä on .ino-tiedosto ja miten se avataan?
- MAX File - 3ds Max Scene File - Mikä on .max-tiedosto ja miten se avataan?