자바에서 구조체를 지원 할 수 있게 나온 라이브러리입니다.


개인적으로는 바이트 통신 할때 유용하게 사용하고 있습니다.


http://javolution.org/


사용법은 API DOC을 참조하시면 되시고 대략 다음과 같습니다.

C

     enum Gender{MALE, FEMALE};
     struct Date {
         unsigned short year;
         unsigned byte month;
         unsigned byte day;
     };
     struct Student {
         enum Gender gender;
         char        name[64];
         struct Date birth;
         float       grades[10];
         Student*    next;
     };


 JAVA

     public enum Gender { MALE, FEMALE };
     public static class Date extends Struct {
         public final Unsigned16 year = new Unsigned16();
         public final Unsigned8 month = new Unsigned8();
         public final Unsigned8 day   = new Unsigned8();
     }
     public static class Student extends Struct {
         public final Enum32<Gender>       gender = new Enum32<Gender>(Gender.values());
         public final UTF8String           name   = new UTF8String(64);
         public final Date                 birth  = inner(new Date());
         public final Float32[]            grades = array(new Float32[10]);
         public final Reference32<Student> next   =  new Reference32<Student>();
     }


엔디안, Pack 설정

 public class IO extends Struct{
	@Override
	public ByteOrder byteOrder() {
		return ByteOrder.LITTLE_ENDIAN;
	}
	@Override
	public boolean isPacked() {
		return true;
	}
}