Skip to content

Bread-Experts-Group/file_formats_java_class

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

file_formats_java_class

file_formats_java_class provides the facilities for reading CLASS files defined in the Java Virtual Machine Specification, Java SE 7, CLASS major file version 51, chapter 4.

This library is not constrained by any compiler, but does depend on the 2022 specification of Ada.

Supported Elements (Java SE 7)

  • Class Access Flags (Table 4.1)
    • ACC_PUBLIC
    • ACC_FINAL
    • ACC_SUPER
    • ACC_INTERFACE
    • ACC_ABSTRACT
    • ACC_SYNTHETIC
    • ACC_ANNOTATION
    • ACC_ENUM
  • Constant Pool (Table 4.3)
    • CONSTANT_Class_info
    • CONSTANT_Fieldref_info
    • CONSTANT_Methodref_info
    • CONSTANT_InterfaceMethodref_info
    • CONSTANT_String_info
    • CONSTANT_Integer_info
    • CONSTANT_Float_info
    • CONSTANT_Long_info
    • CONSTANT_Double_info
    • CONSTANT_NameAndType_info
    • CONSTANT_Utf8_info
    • CONSTANT_MethodHandle_info
    • CONSTANT_MethodType_info
    • CONSTANT_InvokeDynamic_info
  • Field Access Flags (Table 4.4)
    • ACC_PUBLIC
    • ACC_PRIVATE
    • ACC_PROTECTED
    • ACC_STATIC
    • ACC_FINAL
    • ACC_VOLATILE
    • ACC_TRANSIENT
    • ACC_SYNTHETIC
    • ACC_ENUM
  • Method Access Flags (Table 4.5)
    • ACC_PUBLIC
    • ACC_PRIVATE
    • ACC_PROTECTED
    • ACC_STATIC
    • ACC_FINAL
    • ACC_SYNCHRONIZED
    • ACC_BRIDGE
    • ACC_VARARGS
    • ACC_NATIVE
    • ACC_ABSTRACT
    • ACC_STRICT
    • ACC_SYNTHETIC
  • Attributes (Table 4.6)
    • ConstantValue
    • Code
    • StackMapTable
    • Exceptions
    • InnerClasses
    • EnclosingMethod
    • Synthetic
    • Signature
    • SourceFile
    • SourceDebugExtension
    • LineNumberTable
    • LocalVariableTable
    • LocalVariableTypeTable
    • Deprecated
    • RuntimeVisibleAnnotations
    • RuntimeInvisibleAnnotations
    • RuntimeVisibleParameterAnnotations
    • RuntimeInvisibleParameterAnnotations
    • AnnotationDefault
    • BootstrapMethods
    • Other - Used for unrecognized/private attributes
    • NOTE: All restrictions put in place of each attribute for determining the validity of a CLASS file may not be fully implemented at the current time.

Example Use

All pertinent types and subprograms are available within the package File_Formats_Java_Class. Reading Class_File is done primarily through the Input aspect, as shown below.

with Ada.Text_IO;

with File_Formats_Java_Class;
use  File_Formats_Java_Class;

procedure Read_Class_File is
    F : File_Type;
    S : Stream_Access;
begin
    Open (F, In_File, "Example.class");
    S := Stream (F);
    Ada.Text_IO.Put_Line (Class_File'Input (S));
    Close (F);
end Read_Class_File;

Development Status

This crate does not yet define operations for writing to CLASS files, but this is a priority. After writing is complete, this crate will be updated to support CLASS files of Java SE 8+. You are free to report issues and contribue to this repository.

About

File format reader/writer for the Java class file format

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages