每個class檔都包含著定義單一class檔或interface。
一個class檔,組成由 8-bit Byte的stream。全部 16-bit、32-bit、64-bit的數量建構成2、4、8連續的8-bit bytes。多數量(Multibyte)的檔案項目通常儲存在bit-endian order, where the high bytes come first。在Java SE平臺中,這些型態都是由幾個介面提供,
java.io.DataInput
、java.io.DataOutput
,以及class提供,java.io.DataInputStream
、java.io.DataInputStream
.現在所講的,class 檔案形式: 類別(type)u1, u2, u4,個別是無號(unsigned)1, 2, 4 byte。在Java SE平台上,這些類別讀取的method是由
readUnsignedByte
、readUnsignedShort
、readInt和介面
java.io.DataInput。
目前所講的class file形式上使用pseudostructures編寫 a C-like structure notation(?)。避免class中的filed和class中的interface。
Tables,包含了0到更大的的可變大小項目,以使用在多個class file structures。雖然使用了C-like array syntat來對應talble的項目,是實上,table是多變的stream結構,也代表著不可能轉換一個table index 到 byte offset。 (?)
這裡的Data structure是個array陣列,包含了0到更多的大小項目,可以有類似array的編列。
相關於ASCII字元似的說明,表示Unicode code point對應ASCII character。
[1] https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html
沒有留言:
張貼留言