| Example | Since | Description | 
|---|
| Add |  | Add 2 ints together. Simple demonstration of stack machine. | 
| Annotations |  | Demonstrates annotations | 
| Arrays |  | Demonstrates array allocation in bytecode | 
| Assert |  | Demonstrates bytecode created by the assert keyword | 
| CallPrivateMethod |  | Compare the bytecode before and after Java 11. You will see the private method is called with invokespecial before Java 11 and invokevirtual in Java 11+ due to JEP 181 | 
| ClassicSwitches |  | Demonstrates the classic tableswitch and lookupswitch bytecode | 
| ConstantOptimisation |  | Shows that javac will perform simple mathematics on constants to reduce the bytecode | 
| DeadCode |  | Illustrates dead code elimination for static final guards | 
| EnumSize |  | Example of a Java enum | 
| Erasure |  | Demonstrates type erasure | 
| Exceptions |  | Demonstrates the MethodInfo exceptions table | 
| Generics |  | Shows how the class file captures generics information in the Signature attribute. | 
| ImplicitConstructor |  | Demonstrates the creation of a no-arg constructor method where instance fields are initialised | 
| Increment |  | Notice how only the int primitive type has an increment operation bytecode (IINC), the others all require 4-5 bytecode instructions to load, add, and store the new value. | 
| InnerClasses |  | Examples of inner classes | 
| Loopy |  | Explore the bytecode between different kinds of Java loop | 
| MethodParameters |  | Demonstrates passing method parameters | 
| NoClass | 21 | Demonstrates implicitly declared classes and instance main methods JEP 463 | 
| PersonRecord | 16 | Example of a Java record JEP 395 | 
| PrimitiveSwitchExpressions | 23 | Demonstrates switch expressions on primitives JEP 455 | 
| SealedAnimal | 18 | Example of sealed classes from JEP 409 | 
| Shape |  | Example of a Java interface with single implementation | 
| StatementsBeforeSuper | 22 | Demonstrates statements before superclass constructor call JEP 447 | 
| StaticInitialiser |  | Demonstrstrates static initialisation code | 
| StringTemplate | 21 | Demonstrates StringTemplate feature from  JEP 430 | 
| SwitchExpressions | 14 | Demonstrates switch expressions introduced by JEP 361 | 
| Synchronized |  | Demonstrates sychronized methods and blocks | 
| Test |  | An empty class for you to add your test code | 
| TextBlocks | 15 | Example of Java text blocks from JEP 378 | 
| TryWithResources | 7 | Demonstrates try-with-resources. Look for the invokevirtual call to close() on both the success and exception paths. | 
| VarArgs |  | Example of varargs parameters | 
| VarKeyword | 10 | Example of the var keyword for type inference from JEP 286 |