A simple Java Class file decoder for Rust.
- No dependencies.
- Zero copy.
- Comlies Java 17 Specs.
use java_classfile::decode;
use java_classfile::types::JavaClassFile;
let bytes: [u8] = [...];
let java_class_file: JavaClassFile = decode(&bytes);- All Constant Pool entries.
- Attributes
- We have NOT supported decoding Attributes, but we are ready to implement in some days.
- Critical to correct interpretation
- ConstantValue
- Code
- StackMapTable
- BootstrapMethods
- NestHost
- NestMembers
- PermittedSubclasses
- Critical to correct interpretation of the class files of Java SE Platform
- Exceptions
- InnerClasses
- EnclosingMethod
- Synthetic
- Signature
- Record
- Sourcefile
- LineNumberTable
- LocalVariableTable
- LocalVariableTypeTable
- Not critical to correct interpretation but contain metadata
- SourceDebugExtension
- Deprecated
- RuntimeVisibleAnnotations
- RuntimeInvisibleAnnotations
- RuntimeVisibleParameterAnnotations
- RuntimeInvisibleParameterAnnotations
- RuntimeVisibleTypeAnnotations
- RuntimeInvisibleTypeAnnotations
- AnnotationDefault
- MethodParameters
- Module
- ModulePackages
- ModuleMainClass