Knowledge

Java class file

Source 📝

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

Index

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
RMI

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