javaStruct - 通讯协议的解封包第三方库--(二)官方文档一

原文链接

https://code.google.com/archive/p/javastruct/

翻译用工具

翻译使用的是个人免费版Transmate

译文

javastruct


一个将java对象与C结构体互转的库.

Javastruct是什么
Javastruct是一个用于将C或C++结构体当作java对象使用的库.

它用于做什么?
详情请参考 Wiki 页面

这个库能很好地用于java程序与嵌入式设备或其他C或C++程序之间的通讯.它同样能作为一种简单但空间高效的序列化方法.

支持基础类型,数组,C 字符串和嵌套类. 支持大端和小端字节顺序. javastruct也能处理那些长度在其他字段中定义的字段,使用数组长度标记声明. 请参考wiki相关章节的例子和文档.

如何使用JavaStruct
类应该标记为 StructClass 声明, 字段也必须被标记以作为结构化字段使用.
查看以下测试类以更细节性的学习使用方法.一个简单的例子:

@StructClass 
public class Foo{
  @StructField(order = 0) 
  public byte b;
  @StructField(order = 1) 
  public int i;
}
try{ 
  // Pack the class as a byte buffer 
  Foo f = new Foo();
  f.b = (byte)1;
  f.i = 1;
  byte[] b = JavaStruct.pack(f);
  
  // Unpack it into an object
  Foo f2 = new Foo();
  JavaStruct.unpack(f2, b);
} catch(StructException e){ }

性能
对于简单的类,JavaStruct比Java序列化更快,对于复杂的和内部对象,通常与Java序列化有相同的性能.自然地,JavaStruct有2-3倍更小的输出.

未来的工作

  • 更好的命名和一致的界面类
  • 更详细的文档
  • 基于ByteBuffer的结构体系列化(当前是基于stream)
  • 更好的性能
  • 更多的单元测试
  • 支持数据对齐
  • 位域
  • 组合体

要求
具有Java 5 或更高版本JVM的任何操作系统

相似的项目
Jean-Marie Dautelle 的 Javolution 也有一个优秀的结构体实现.Javolution 结构体使用特定的类来代表域,JavaStruct有一个不同的方法,使用POJO的和Java 5的声明.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值