Library for building class files with C Most functions have the same name as their JVM assembly counterpart with the exceptions of drem (j_drem) and ldiv (j_ldiv) because one of the std C libs have those defined
JVM Feature | Version 1 | Notes |
---|---|---|
Magic Number / Version Header | ✅ | Hardcoded as Java 8 (major_version = 52) |
Constant Pool (Basic Types) | ✅ | |
Constant Pool (Refs) | ✅ | Class, String, FieldRef, MethodRef, InterfaceMethodRef |
Basic Bytecode Instructions | ✅ | Most standard opcodes supported |
Field and Method Definitions | ✅ | Includes access flags and attributes |
Code Attribute | ✅ | Supports max_stack, max_locals, bytecode, exceptions |
Exception Table | ✅ | Basic support (can emit empty table) |
Interfaces | ✅ | Can declare interface implementation |
Custom Attributes | ✅ | Can emit raw attributes manually |
tableswitch / lookupswitch |
❌ | Commented out, needs testing |
StackMapTable | ❌ | Required for Java 7+ verification |
LineNumberTable | ❌ | Needed for debugging |
LocalVariableTable | ❌ | Needed for debugging/local variable scopes |
Annotations | ❌ | No support for runtime or compile-time annotations |
Generic Type Signatures | ❌ | Signature attribute not implemented |
BootstrapMethods (invokedynamic ) |
❌ | Opcode is present, but bootstrap method support missing |
InnerClasses | ❌ | No InnerClasses attribute support |
Enum Support | ❌ | No handling for enum-related attributes |
Module System (Java 9+) | ❌ | No module-info.class or module attributes |
Debug Metadata (SourceFile , etc.) |
❌ | Not implemented |
jclass wiki (WIP)
Doesnt have any dependencies other than the std C lib