Knowledge (XXG)

Java class file

Source 📝

1743: 2121: 2133: 1487: 1145:
Due to historic choices made during the file format development, the number of constants in the constant pool table is not actually the same as the constant pool count which precedes the table. First, the table is indexed starting at 1 (rather than 0), but the count should actually be interpreted as
276:
for 4 character hex words that fit after "CAFE" (it seemed to be a good theme) I hit on BABE and decided to use it. At that time, it didn't seem terribly important or destined to go anywhere but the trash-can of history. So CAFEBABE became the class file format, and CAFEDEAD was the persistent object
336:
Some of these fundamental types are then re-interpreted as higher-level values (such as strings or floating-point numbers), depending on context. There is no enforcement of word alignment, and so no padding bytes are ever used. The overall layout of the class file is as shown in the following table.
1141:
The constant pool table is where most of the literal constant values are stored. This includes values such as numbers of all sorts, strings, identifier names, references to classes and methods, and type descriptors. All indexes, or references, to specific constants in the constant pool table are
290:
Because the class file contains variable-sized items and does not also contain embedded file offsets (or pointers), it is typically parsed sequentially, from the first byte toward the end. At the lowest level the file format is described in terms of a few fundamental data types:
1185:
UTF-8 (Unicode) string: a character string prefixed by a 16-bit number (type u2) indicating the number of bytes in the encoded string which immediately follows (which may be different than the number of characters). Note that the encoding used is not actually
267:
died, they even put up a little Buddhist-esque shrine. When we used to go there, we referred to the place as Cafe Dead. Somewhere along the line it was noticed that this was a HEX number. I was re-vamping some file format code and needed a couple of
1443:
Class names in Java, when fully qualified, are traditionally dot-separated, such as "java.lang.Object". However within the low-level Class reference constants, an internal form appears which uses slashes instead, such as "java/lang/Object".
332:: an array of variable-length items of some type. The number of items in the table is identified by a preceding count number (the count is a u2), but the size in bytes of the table can only be determined by examining each of its items. 1402:
instruction to specify a bootstrap method, the dynamic invocation name, the argument and return types of the call, and optionally, a sequence of additional constants called static arguments to the bootstrap method.
1146:
the maximum index plus one. Additionally, two types of constants (longs and doubles) take up two consecutive slots in the table, although the second such slot is a phantom index that is never directly used.
1440:
There are only two integral constant types, integer and long. Other integral types appearing in the high-level language, such as boolean, byte, and short must be represented as an integer constant.
526:
constant pool table, an array of variable-sized constant pool entries, containing items such as literal numbers, strings, and references to classes or methods. Indexed starting at 1, containing (
1467:
rather than being directly encoded using UTF-8. In this case each of the two surrogates is encoded separately in UTF-8. For example, U+1D11E is encoded as the 6-byte sequence
1342:
Name and type descriptor: two indexes to UTF-8 strings within the constant pool, the first representing a name (identifier) and the second a specially encoded type descriptor.
504:
constant pool count, number of entries in the following constant pool table. This count is at least one greater than the actual number of entries; see following discussion.
1447:
The Unicode strings, despite the moniker "UTF-8 string", are not actually encoded according to the Unicode standard, although it is similar. There are two differences (see
1676: 1328:
Interface method reference: two indexes within the constant pool, the first pointing to a Class reference, the second to a Name and Type descriptor. (big-endian)
48:
application/java-vm, application/x-httpd-java, application/x-java, application/java, application/java-byte-code, application/x-java-class, application/x-java-vm
1356:
Method handle: this structure is used to represent a method handle and consists of one byte of type descriptor, followed by an index within the constant pool.
1153:. The number of bytes following this tag and their interpretation are then dependent upon the tag value. The valid constant types and their tag values are: 110:
can also be used to create class files). If a source file has more than one class, each class is compiled into a separate class file. Thus, it is called a
1314:
Method reference: two indexes within the constant pool, the first pointing to a Class reference, the second to a Name and Type descriptor. (big-endian)
1300:
Field reference: two indexes within the constant pool, the first pointing to a Class reference, the second to a Name and Type descriptor. (big-endian)
195: 1669: 2125: 1662: 1630: 263:
used to perform there before they made it big. It was a pretty funky place that was definitely a Grateful Dead Kinda Place. When
973:
doesn't support multiple variable length arrays within a struct, the code below won't compile and only serves as a demonstration.
277:
format. But the persistent object facility went away, and along with it went the use of CAFEDEAD - it was eventually replaced by
1710: 2156: 2003: 1142:
given by 16-bit (type u2) numbers, where index value 1 refers to the first constant in the table (index value 0 is invalid).
2073: 1983: 1968: 278: 209: 187: 1557: 1998: 1727: 1704: 31: 2137: 1953: 1833: 1492: 673:
interface table: a variable-length array of constant pool indexes describing the interfaces implemented by this class
92: 259:"We used to go to lunch at a place called St Michael's Alley. According to local legend, in the deep dark past, the 121:, and a class file compiled on one platform will execute on a JVM of another platform. This makes Java applications 2049: 1543: 1370:
Method type: this structure is used to represent a method type, and consists of an index within the constant pool.
1268:
Class reference: an index within the constant pool to a UTF-8 string containing the fully qualified class name (in
368: 269: 244: 155: 134: 1993: 1935: 1240:
Long: a signed 64-bit two's complement number in big-endian format (takes two slots in the constant pool table)
1685: 1460: 1384:
Dynamic: this is used to specify a dynamically computed constant produced by invocation of a bootstrap method.
970: 272:: one for the persistent object file, and one for classes. I used CAFEDEAD for the object file format, and in 1254:
Double: a 64-bit double-precision IEEE 754 floating-point number (takes two slots in the constant pool table)
2020: 1647:, which includes the class file format. Both the first and second editions of the book are freely available 1598: 2161: 2059: 1925: 1782: 1757: 940: 838: 748: 1451:
for a complete discussion). The first is that the code point U+0000 is encoded as the two-byte sequence
1945: 1874: 1620: 482: 252: 1920: 1813: 1772: 1762: 1699: 1644: 118: 84: 1205: 103: 1616: 2064: 2054: 1864: 1854: 232: 76: 1626: 299: 2104: 2069: 1930: 1889: 56: 1742: 2094: 1803: 1899: 1869: 1849: 1823: 1286:
String reference: an index within the constant pool to a UTF-8 string (big-endian too)
1149:
The type of each item (constant) in the constant pool is identified by an initial byte
122: 2150: 2099: 2089: 1894: 1859: 1818: 1500: 260: 248: 107: 88: 80: 69: 1572:"[JDK-8148785] Update class file version to 53 for JDK-9 - Java Bug System" 1571: 1531: 264: 17: 1463:
at U+10000 and above) are encoded using a surrogate-pair construction similar to
2132: 1798: 1486: 236: 95: 1988: 1716: 1482: 313: 43: 1459:. The second difference is that supplementary characters (those outside the 1958: 1722: 1431:
Package: this is used to identify a package exported or opened by a module.
1190:, but involves a slight modification of the Unicode standard encoding form. 219:: Any attributes of the class (for example the name of the sourcefile, etc.) 1654: 1519: 1223: 1648: 371:(CAFEBABE) used to identify file as conforming to the class file format 2028: 1963: 1904: 1884: 1879: 1828: 1767: 1732: 941:
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7
839:
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.6
749:
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.5
2033: 1978: 1808: 1777: 1464: 323: 309: 885:
attribute count, number of entries in the following attribute table
645:
interface count, number of entries in the following interface table
1973: 1448: 1187: 273: 229: 30:
This article is about the data format. For classes in Java, see
1658: 791:
method count, number of entries in the following method table
243:(the first 4 entries in the table below). The history of this 150:
There are 10 basic sections to the Java class file structure:
133:
On 11 December 2006, the class file format was modified under
709:
field count, number of entries in the following field table
620:
class, index into the constant pool to a "Class"-type entry
591:
class, index into the constant pool to a "Class"-type entry
114:
file because it contains the bytecode for a single class.
481:
For details of earlier version numbers see footnote 1 at
434:
major version number of the class file format being used.
415:
minor version number of the class file format being used
177:: for example whether the class is abstract, static, etc. 939:
each element is an attribute_info structure defined in
1455:(in hex) instead of the standard single-byte encoding 1532:
James Gosling private communication to Bill Bumgarner
937:
attribute table, variable length array of attributes
483:
The JavaTM Virtual Machine Specification 2nd edition
2082: 2042: 2019: 2012: 1944: 1913: 1842: 1791: 1750: 1692: 1471:, rather than the correct 4-byte UTF-8 encoding of 837:each element is a method_info structure defined in 52: 42: 747:each element is a field_info structure defined in 165:: the minor and major versions of the class file 965:Representation in a C-like programming language 835:method table, variable length array of methods 228:Class files are identified by the following 4 1670: 745:field table, variable length array of fields 87:. A Java class file is usually produced by a 8: 530:- 1) number of entries in total (see note). 37: 1417:Module: this is used to identify a module. 2016: 1677: 1663: 1655: 1593: 1591: 1589: 1587: 1585: 1583: 1581: 1155: 339: 1512: 1643:The official defining document of the 1622:The Java Virtual Machine Specification 36: 7: 1522:Java Class File Specification Update 1649:online for viewing and/or download 1625:(Second ed.). Prentice Hall. 1599:"Chapter 4. The class File Format" 1544:"Chapter 4. The class File Format" 1398:InvokeDynamic: this is used by an 25: 1222:Float: a 32-bit single-precision 171:: Pool of constants for the class 2131: 2120: 2119: 1741: 1485: 326:integer in big-endian byte order 2138:Computer programming portal 183:: The name of the current class 1843:Major third-party technologies 1: 2074:Sun Microsystems Laboratories 251:referring to a restaurant in 199:: Any interfaces in the class 191:: The name of the super class 1208:number in big-endian format 471:Java SE 5.0 = 49 (0x31 hex), 469:Java SE 6.0 = 50 (0x32 hex), 163:Version of Class File Format 117:JVMs are available for many 83:that can be executed on the 32:Class (computer programming) 1493:Computer programming portal 461:Java SE 10 = 54 (0x36 hex), 459:Java SE 11 = 55 (0x37 hex), 457:Java SE 12 = 56 (0x38 hex), 455:Java SE 13 = 57 (0x39 hex), 453:Java SE 14 = 58 (0x3A hex), 451:Java SE 15 = 59 (0x3B hex), 449:Java SE 16 = 60 (0x3C hex), 447:Java SE 17 = 61 (0x3D hex), 445:Java SE 18 = 62 (0x3E hex), 443:Java SE 19 = 63 (0x3F hex), 441:Java SE 20 = 64 (0x40 hex), 439:Java SE 21 = 65 (0x41 hex), 437:Java SE 22 = 66 (0x42 hex), 27:Executable Java file format 2178: 2050:Apache Software Foundation 467:Java SE 7 = 51 (0x33 hex), 465:Java SE 8 = 52 (0x34 hex), 463:Java SE 9 = 53 (0x35 hex), 213:: Any methods in the class 135:Java Specification Request 85:Java Virtual Machine (JVM) 29: 2117: 1936:Free Java implementations 1739: 1204:Integer: a signed 32-bit 936: 933: 927: 884: 881: 878: 834: 831: 825: 790: 787: 784: 744: 741: 735: 708: 705: 702: 672: 669: 663: 644: 641: 638: 615: 612: 609: 586: 583: 580: 561: 558: 555: 525: 522: 516: 503: 500: 497: 433: 430: 427: 414: 411: 408: 367: 359: 205:: Any fields in the class 141:File layout and structure 93:Java programming language 1686:Java (software platform) 1165:Description of constant 975: 562:access flags, a bitmask 479:JDK 1.1 = 45 (0x2D hex). 477:JDK 1.2 = 46 (0x2E hex), 475:JDK 1.3 = 47 (0x2F hex), 473:JDK 1.4 = 48 (0x30 hex), 44:Internet media type 1619:, Frank Yellin (1999). 102:files) containing Java 2060:Java Community Process 1926:Java Community Process 1558:"JDK 10 Release Notes" 1226:floating-point number 283: 106:(alternatively, other 2157:Computer file formats 1792:Platform technologies 257: 1921:Java version history 1773:Java virtual machine 1763:Java Development Kit 1645:Java Virtual Machine 123:platform-independent 1751:Oracle technologies 1168:Version introduced 1017:constant_pool_count 528:constant pool count 39: 18:Class (file format) 2065:Oracle Corporation 2055:Eclipse Foundation 77:filename extension 2144: 2143: 2113: 2112: 1469:ED A0 B4 ED B4 9E 1438: 1437: 1162:Additional bytes 1137:The constant pool 981:Class_File_Format 962: 961: 247:was explained by 62: 61: 53:Developed by 16:(Redirected from 2169: 2136: 2135: 2123: 2122: 2105:Patrick Naughton 2070:Sun Microsystems 2017: 1931:Sun Microsystems 1824:Web Start (JNLP) 1745: 1679: 1672: 1665: 1656: 1642: 1640: 1639: 1603: 1602: 1595: 1576: 1575: 1568: 1562: 1561: 1554: 1548: 1547: 1540: 1534: 1529: 1523: 1517: 1495: 1490: 1489: 1474: 1470: 1458: 1454: 1206:two's complement 1156: 1132: 1129: 1126: 1123: 1120: 1117: 1116:attributes_count 1114: 1111: 1108: 1105: 1102: 1099: 1096: 1093: 1090: 1087: 1084: 1081: 1078: 1075: 1072: 1069: 1066: 1063: 1062:interfaces_count 1060: 1057: 1054: 1051: 1048: 1045: 1042: 1039: 1036: 1033: 1030: 1027: 1024: 1021: 1018: 1015: 1012: 1009: 1006: 1003: 1000: 997: 994: 991: 988: 985: 982: 979: 340: 242: 113: 101: 75: 57:Sun Microsystems 40: 21: 2177: 2176: 2172: 2171: 2170: 2168: 2167: 2166: 2147: 2146: 2145: 2140: 2130: 2109: 2095:Arthur van Hoff 2078: 2038: 2008: 1940: 1909: 1838: 1787: 1746: 1737: 1688: 1683: 1637: 1635: 1633: 1615: 1612: 1610:Further reading 1607: 1606: 1597: 1596: 1579: 1570: 1569: 1565: 1556: 1555: 1551: 1542: 1541: 1537: 1530: 1526: 1518: 1514: 1509: 1491: 1484: 1481: 1472: 1468: 1456: 1452: 1272:) (big-endian) 1270:internal format 1181: 1139: 1134: 1133: 1130: 1127: 1124: 1121: 1118: 1115: 1112: 1109: 1106: 1103: 1100: 1097: 1094: 1091: 1088: 1085: 1082: 1079: 1076: 1073: 1070: 1067: 1064: 1061: 1058: 1055: 1052: 1049: 1046: 1043: 1040: 1037: 1034: 1031: 1028: 1025: 1022: 1019: 1016: 1013: 1010: 1007: 1004: 1001: 998: 995: 992: 989: 986: 983: 980: 977: 967: 480: 478: 476: 474: 472: 470: 468: 466: 464: 462: 460: 458: 456: 454: 452: 450: 448: 446: 444: 442: 440: 438: 435: 400: 390: 380: 364: 288: 240: 226: 148: 143: 131: 111: 99: 73: 66:Java class file 38:Java class file 35: 28: 23: 22: 15: 12: 11: 5: 2175: 2173: 2165: 2164: 2159: 2149: 2148: 2142: 2141: 2118: 2115: 2114: 2111: 2110: 2108: 2107: 2102: 2097: 2092: 2086: 2084: 2080: 2079: 2077: 2076: 2067: 2062: 2057: 2052: 2046: 2044: 2040: 2039: 2037: 2036: 2031: 2025: 2023: 2014: 2010: 2009: 2007: 2006: 2001: 1996: 1991: 1986: 1981: 1976: 1971: 1966: 1961: 1956: 1950: 1948: 1942: 1941: 1939: 1938: 1933: 1928: 1923: 1917: 1915: 1911: 1910: 1908: 1907: 1902: 1897: 1892: 1887: 1882: 1877: 1872: 1867: 1862: 1857: 1852: 1846: 1844: 1840: 1839: 1837: 1836: 1831: 1826: 1821: 1816: 1811: 1806: 1801: 1795: 1793: 1789: 1788: 1786: 1785: 1780: 1775: 1770: 1765: 1760: 1754: 1752: 1748: 1747: 1740: 1738: 1736: 1735: 1730: 1725: 1720: 1714: 1708: 1702: 1696: 1694: 1690: 1689: 1684: 1682: 1681: 1674: 1667: 1659: 1653: 1652: 1631: 1611: 1608: 1605: 1604: 1577: 1563: 1549: 1535: 1524: 1511: 1510: 1508: 1505: 1504: 1503: 1497: 1496: 1480: 1477: 1436: 1435: 1432: 1429: 1426: 1422: 1421: 1418: 1415: 1412: 1408: 1407: 1404: 1396: 1393: 1389: 1388: 1385: 1382: 1379: 1375: 1374: 1371: 1368: 1365: 1361: 1360: 1357: 1354: 1351: 1347: 1346: 1343: 1340: 1337: 1333: 1332: 1329: 1326: 1323: 1319: 1318: 1315: 1312: 1309: 1305: 1304: 1301: 1298: 1295: 1291: 1290: 1287: 1284: 1281: 1277: 1276: 1273: 1266: 1263: 1259: 1258: 1255: 1252: 1249: 1245: 1244: 1241: 1238: 1235: 1231: 1230: 1227: 1220: 1217: 1213: 1212: 1209: 1202: 1199: 1195: 1194: 1191: 1183: 1174: 1170: 1169: 1166: 1163: 1160: 1138: 1135: 1122:attribute_info 976: 966: 963: 960: 959: 955: 954: 950: 949: 945: 944: 935: 932: 926: 907: 906: 887: 886: 883: 880: 877: 858: 857: 853: 852: 848: 847: 843: 842: 833: 830: 824: 809: 808: 793: 792: 789: 786: 783: 768: 767: 763: 762: 758: 757: 753: 752: 743: 740: 734: 723: 722: 711: 710: 707: 704: 701: 690: 689: 685: 684: 680: 679: 675: 674: 671: 668: 662: 655: 654: 647: 646: 643: 640: 637: 630: 629: 622: 621: 614: 611: 608: 601: 600: 593: 592: 585: 582: 579: 572: 571: 564: 563: 560: 557: 554: 547: 546: 542: 541: 537: 536: 532: 531: 524: 521: 515: 511: 510: 506: 505: 502: 499: 496: 492: 491: 487: 486: 432: 429: 426: 422: 421: 417: 416: 413: 410: 407: 403: 402: 397: 393: 392: 387: 383: 382: 377: 373: 372: 366: 361: 358: 354: 353: 350: 349:Type or value 347: 344: 334: 333: 327: 322:: an unsigned 317: 308:: an unsigned 303: 298:: an unsigned 287: 286:General layout 284: 225: 222: 221: 220: 214: 206: 200: 192: 184: 178: 172: 166: 160: 147: 144: 142: 139: 130: 127: 60: 59: 54: 50: 49: 46: 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 2174: 2163: 2162:Java platform 2160: 2158: 2155: 2154: 2152: 2139: 2134: 2128: 2127: 2116: 2106: 2103: 2101: 2098: 2096: 2093: 2091: 2090:James Gosling 2088: 2087: 2085: 2081: 2075: 2071: 2068: 2066: 2063: 2061: 2058: 2056: 2053: 2051: 2048: 2047: 2045: 2043:Organizations 2041: 2035: 2032: 2030: 2027: 2026: 2024: 2022: 2018: 2015: 2011: 2005: 2002: 2000: 1997: 1995: 1992: 1990: 1987: 1985: 1982: 1980: 1977: 1975: 1972: 1970: 1967: 1965: 1962: 1960: 1957: 1955: 1952: 1951: 1949: 1947: 1946:JVM languages 1943: 1937: 1934: 1932: 1929: 1927: 1924: 1922: 1919: 1918: 1916: 1912: 1906: 1903: 1901: 1898: 1896: 1893: 1891: 1888: 1886: 1883: 1881: 1878: 1876: 1873: 1871: 1868: 1866: 1863: 1861: 1860:GNU Classpath 1858: 1856: 1853: 1851: 1848: 1847: 1845: 1841: 1835: 1832: 1830: 1827: 1825: 1822: 1820: 1817: 1815: 1812: 1810: 1807: 1805: 1802: 1800: 1797: 1796: 1794: 1790: 1784: 1781: 1779: 1776: 1774: 1771: 1769: 1766: 1764: 1761: 1759: 1756: 1755: 1753: 1749: 1744: 1734: 1731: 1729: 1726: 1724: 1721: 1718: 1715: 1712: 1709: 1706: 1703: 1701: 1698: 1697: 1695: 1691: 1687: 1680: 1675: 1673: 1668: 1666: 1661: 1660: 1657: 1650: 1646: 1634: 1632:0-201-43294-3 1628: 1624: 1623: 1618: 1614: 1613: 1609: 1600: 1594: 1592: 1590: 1588: 1586: 1584: 1582: 1578: 1573: 1567: 1564: 1559: 1553: 1550: 1545: 1539: 1536: 1533: 1528: 1525: 1521: 1516: 1513: 1506: 1502: 1501:Java bytecode 1499: 1498: 1494: 1488: 1483: 1478: 1476: 1466: 1462: 1450: 1445: 1441: 1433: 1430: 1427: 1424: 1423: 1419: 1416: 1413: 1410: 1409: 1405: 1401: 1400:invokedynamic 1397: 1394: 1391: 1390: 1386: 1383: 1380: 1377: 1376: 1372: 1369: 1366: 1363: 1362: 1358: 1355: 1352: 1349: 1348: 1344: 1341: 1338: 1335: 1334: 1330: 1327: 1324: 1321: 1320: 1316: 1313: 1310: 1307: 1306: 1302: 1299: 1296: 1293: 1292: 1288: 1285: 1282: 1279: 1278: 1274: 1271: 1267: 1264: 1261: 1260: 1256: 1253: 1250: 1247: 1246: 1242: 1239: 1236: 1233: 1232: 1228: 1225: 1221: 1218: 1215: 1214: 1210: 1207: 1203: 1200: 1197: 1196: 1192: 1189: 1184: 1179: 1175: 1172: 1171: 1167: 1164: 1161: 1158: 1157: 1154: 1152: 1147: 1143: 1136: 1098:methods_count 1026:constant_pool 1008:major_version 999:minor_version 974: 972: 964: 957: 956: 952: 951: 947: 946: 943: 942: 930: 925: 921: 917: 913: 909: 908: 905: 901: 897: 893: 889: 888: 876: 872: 868: 864: 860: 859: 855: 854: 850: 849: 845: 844: 841: 840: 828: 823: 819: 815: 811: 810: 807: 803: 799: 795: 794: 782: 778: 774: 770: 769: 765: 764: 760: 759: 755: 754: 751: 750: 738: 733: 729: 725: 724: 721: 717: 713: 712: 700: 696: 692: 691: 687: 686: 682: 681: 677: 676: 666: 661: 657: 656: 653: 649: 648: 636: 632: 631: 628: 624: 623: 619: 607: 603: 602: 599: 595: 594: 590: 578: 574: 573: 570: 566: 565: 553: 549: 548: 544: 543: 539: 538: 534: 533: 529: 519: 513: 512: 508: 507: 494: 493: 489: 488: 485: 484: 424: 423: 419: 418: 405: 404: 398: 395: 394: 388: 385: 384: 378: 375: 374: 370: 362: 356: 355: 351: 348: 345: 342: 341: 338: 331: 328: 325: 321: 318: 315: 311: 307: 304: 301: 297: 294: 293: 292: 285: 282: 280: 275: 271: 270:magic numbers 266: 262: 261:Grateful Dead 256: 254: 250: 249:James Gosling 246: 238: 234: 231: 223: 218: 215: 212: 211: 207: 204: 201: 198: 197: 193: 190: 189: 185: 182: 179: 176: 173: 170: 169:Constant Pool 167: 164: 161: 158: 157: 153: 152: 151: 145: 140: 138: 136: 128: 126: 124: 120: 115: 109: 108:JVM languages 105: 97: 94: 90: 89:Java compiler 86: 82: 81:Java bytecode 79:) containing 78: 71: 67: 58: 55: 51: 47: 45: 41: 33: 19: 2124: 1719:(Enterprise) 1636:. Retrieved 1621: 1617:Tim Lindholm 1566: 1552: 1538: 1527: 1515: 1446: 1442: 1439: 1399: 1269: 1177: 1150: 1148: 1144: 1140: 1080:fields_count 1035:access_flags 990:magic_number 968: 938: 928: 923: 919: 915: 911: 903: 899: 895: 891: 874: 870: 866: 862: 836: 826: 821: 817: 813: 805: 801: 797: 780: 776: 772: 746: 736: 731: 727: 719: 715: 698: 694: 664: 659: 651: 634: 626: 617: 605: 597: 588: 576: 568: 551: 527: 517: 436: 369:magic number 352:Description 343:Byte offset 335: 329: 319: 305: 295: 289: 258: 245:magic number 227: 224:Magic Number 216: 208: 202: 194: 186: 180: 175:Access Flags 174: 168: 162: 159:: 0xCAFEBABE 156:Magic Number 154: 149: 132: 116: 96:source files 65: 63: 2021:Conferences 1728:Android SDK 1473:F0 9D 84 9E 1182:(variable) 1104:method_info 1053:super_class 931:(variable) 829:(variable) 739:(variable) 667:(variable) 616:identifies 587:identifies 520:(variable) 312:integer in 241:CA FE BA BE 237:hexadecimal 188:Super Class 137:(JSR) 202. 2151:Categories 2100:Urs Hölzle 1989:Processing 1717:Jakarta EE 1713:(Standard) 1638:2008-10-13 1507:References 1125:attributes 1086:field_info 1071:interfaces 1044:this_class 316:byte order 314:big-endian 217:Attributes 196:Interfaces 181:This Class 72:(with the 2013:Community 1959:BeanShell 1875:Hibernate 1850:Blackdown 1783:Maxine VM 1723:Java Card 1693:Platforms 1159:Tag byte 401:0xBE hex 391:0xBA hex 381:0xFE hex 365:0xCA hex 253:Palo Alto 119:platforms 2126:Category 1804:Servlets 1479:See also 1428:2 bytes 1414:2 bytes 1395:4 bytes 1381:4 bytes 1367:2 bytes 1353:3 bytes 1339:4 bytes 1325:4 bytes 1311:4 bytes 1297:4 bytes 1283:2 bytes 1265:2 bytes 1251:8 bytes 1237:8 bytes 1224:IEEE 754 1219:4 bytes 1201:4 bytes 879:2 bytes 785:2 bytes 703:2 bytes 639:2 bytes 610:2 bytes 581:2 bytes 556:2 bytes 498:2 bytes 428:2 bytes 409:2 bytes 360:4 bytes 274:grepping 146:Sections 2129:  2029:JavaOne 2004:Oxygene 1964:Clojure 1914:History 1905:WildFly 1900:TopLink 1885:Jazelle 1880:IcedTea 1870:Harmony 1855:Eclipse 1834:Modules 1829:Pack200 1809:MIDlets 1799:Applets 1768:OpenJDK 1733:GraalVM 1711:Java SE 1707:(Micro) 1705:Java ME 1520:JSR 202 1107:methods 1023:cp_info 302:integer 210:Methods 129:History 104:classes 2083:People 2034:Devoxx 1984:Kotlin 1979:Jython 1969:Groovy 1895:Struts 1890:Spring 1778:JavaFX 1758:Squawk 1629:  1465:UTF-16 1345:1.0.2 1331:1.0.2 1317:1.0.2 1303:1.0.2 1289:1.0.2 1275:1.0.2 1257:1.0.2 1243:1.0.2 1229:1.0.2 1211:1.0.2 1193:1.0.2 1089:fields 978:struct 969:Since 934:table 912:cpsize 892:cpsize 863:cpsize 832:table 814:cpsize 798:cpsize 773:cpsize 742:table 728:cpsize 716:cpsize 695:cpsize 670:table 660:cpsize 652:cpsize 635:cpsize 627:cpsize 606:cpsize 598:cpsize 577:cpsize 569:cpsize 552:cpsize 523:table 518:cpsize 324:32-bit 310:16-bit 233:header 203:Fields 112:.class 74:.class 1999:Scala 1994:Rhino 1974:JRuby 1453:C0 80 1449:UTF-8 1188:UTF-8 1180:bytes 929:asize 924:msize 920:fsize 916:isize 904:msize 900:fsize 896:isize 875:msize 871:fsize 867:isize 827:msize 822:fsize 818:isize 806:fsize 802:isize 781:fsize 777:isize 737:fsize 732:isize 720:isize 699:isize 665:isize 618:super 346:Size 330:table 300:8-bit 265:Jerry 100:.java 91:from 68:is a 1954:Java 1627:ISBN 958:... 953:... 948:... 856:... 851:... 846:... 766:... 761:... 756:... 688:... 683:... 678:... 589:this 545:... 540:... 535:... 399:u1 = 389:u1 = 379:u1 = 363:u1 = 235:(in 230:byte 70:file 1865:GWT 1819:JSF 1814:JSP 1700:JVM 1461:BMP 1425:20 1411:19 1392:18 1387:11 1378:17 1364:16 1350:15 1336:12 1322:11 1308:10 1151:tag 910:24+ 890:23+ 882:u2 861:22+ 812:22+ 796:21+ 788:u2 771:20+ 726:20+ 714:19+ 706:u2 693:18+ 658:18+ 650:17+ 642:u2 633:16+ 625:15+ 613:u2 604:14+ 596:13+ 584:u2 575:12+ 567:11+ 559:u2 550:10+ 514:10 501:u2 431:u2 412:u2 281:." 279:RMI 239:): 2153:: 2072:, 1580:^ 1475:. 1457:00 1434:9 1420:9 1406:7 1373:7 1359:7 1294:9 1280:8 1262:7 1248:6 1234:5 1216:4 1198:3 1176:2+ 1173:1 1113:u2 1095:u2 1077:u2 1068:u2 1059:u2 1050:u2 1041:u2 1032:u2 1014:u2 1005:u2 996:u2 987:u4 509:9 495:8 490:7 425:6 420:5 406:4 396:3 386:2 376:1 357:0 320:u4 306:u2 296:u1 255:: 125:. 64:A 1678:e 1671:t 1664:v 1651:. 1641:. 1601:. 1574:. 1560:. 1546:. 1178:x 1131:} 1128:; 1119:; 1110:; 1101:; 1092:; 1083:; 1074:; 1065:; 1056:; 1047:; 1038:; 1029:; 1020:; 1011:; 1002:; 993:; 984:{ 971:C 922:+ 918:+ 914:+ 902:+ 898:+ 894:+ 873:+ 869:+ 865:+ 820:+ 816:+ 804:+ 800:+ 779:+ 775:+ 730:+ 718:+ 697:+ 98:( 34:. 20:)

Index

Class (file format)
Class (computer programming)
Internet media type
Sun Microsystems
file
filename extension
Java bytecode
Java Virtual Machine (JVM)
Java compiler
Java programming language
source files
classes
JVM languages
platforms
platform-independent
Java Specification Request
Magic Number
Super Class
Interfaces
Methods
byte
header
hexadecimal
magic number
James Gosling
Palo Alto
Grateful Dead
Jerry
magic numbers
grepping

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.