File_formats_java_class

Website:

https://github.com/Bread-Experts-Group/file_formats_java_class

Author:
  • Miko Elbrecht
Maintainer:
  • Miko Elbrecht <pmt.mailservice@gmail.com>
License:

Apache-2.0 WITH LLVM-exception

Version:

7.0.0

Alire CI:

Dependencies: Dependents:

No dependents.

Badge:

File format reader for the Java programming language CLASS file format

#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.

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 contribute at the crate’s GitHub repository.