So I thought I would look into the nitty gritty of how java real works
cafe babe
Java 8 is version 52 which then decodes to
00 00 00 34
this is basically the most important part to java's bytecode which allows us to reference other classes, use strings and store other variables
ACC_PUBLIC 0x0001
ACC_PRIVATE 0x0002
ACC_PROTECTED 0x0004
ACC_STATIC 0x0008
ACC_FINAL 0x0010
ACC_SUPER 0x0020
ACC_INTERFACE 0x0200
ACC_ABSTRACT 0x0400
Java File: CAFE BABE
Version 8: 0000 0034
Constant Pool Size of ZERO: 0000
Super Public: 0021
Unknown index of class in constant pool: 0000
Unknown index of super class in constant pool: 0000
zero interfaces: 0000
zero fields: 0000
zero methods: 0000
zero attributes: 0000
Class name must be at reference constant pool at #1
07 00 02
01 00 0a 48 65 6c 6c 6f 57 6f 72 6c 64
this points #1 to #2
Constant pool:
#1 = Class #2 // JavaByHand
#2 = Utf8 JavaByHand
#3 = Class #4 // java/lang/Object
#4 = Utf8 java/lang/Object
#5 = Class #6 // java/lang/System
#6 = Utf8 java/lang/System
#7 = Class #8 // java/io/PrintStream
#8 = Utf8 java/io/PrintStream
#9 = String #10 // Hello World
#10 = Utf8 Hello World
java JavaByHand
Yes, the .class is not included
- useage of javap
- The structure of a java class
- How variables and strings are saved and loaded in java
https://medium.com/@davethomas_9528/writing-hello-world-in-java-byte-code-34f75428e0ad https://www.javaworld.com/article/2077233/bytecode-basics.html https://www.programcreek.com/2013/04/what-can-you-learn-from-a-java-helloworld-program/ https://gitlab.ow2.org/