分享

Java结构体: JavaStruct (实现类似C的结构体或python的struct.pack效果)

 DeepReading 2019-07-16

Javastruct 是什么

简而言之,Javastruct 是一个第三方库,用于像处理 C 或者 C++ 结构体那样处理 java 对象。也即利用 Javastruct 可以在 java 上实现类似于结构体的功能和操作。

Javastruct 的用途

在 java 或者 Android 应用程序与一些嵌入式设备通讯或者C、C++ 应用程序通讯时,比如网络、无线、蓝牙、串口通讯等场景,由于实际传输时我们希望在通讯时使用自定义的协议格式,这样就必须进行字节流的处理。比如:协议格式为:“包头 + 命令码 + 长度 + 数据 + 校验 + 包尾“ 这种格式,使用 java 默认的方法就需要每条协议设置或解析每个 byte,十分繁琐。这时,会很怀念 C 语言的结构体和指针,这回极大节省我们的代码逻辑和工作量。这就是我要使用并介绍 JavaStruct 的原因了。除此之外,该库还可以用作一个简单但空间利用高效的序列化方法。

JavaStruct 库支持原语、数组、C字符串及嵌套类等。同时支持大端和小端字节序。 Javastruct 也可以使用 ArrayLengthMarker 注释来处理其他域中定义长度的域。 在后面的例程和文档中会逐步涉及到。

Javastruct 的性能

对于简单的类,JavaStruct 要比 Java 序列化更快速,对于复杂和嵌套的类,通常与 Java 序列化性能相同。通常 JavaStruct 产生小2到3倍的输出结果。

JavaStruct 未来工作

1. 更好的命名和统一的外观类

2. 详细的文档

3. 基于 ByteBuffer 的结构体序列化(目前是基于stream流的方式)

4. 更好的性能

5. 更多单元测试

6. 数据对齐支持

7. 位域

8. Union 联合体

运行条件

任何具有 Java 5 或者更高的 JVM 的系统

其他类似项目

 Javolution 也有很好的结构体实现,Javolution 结构体使用特殊类来表示域,JavaStruct 有不同途径并且使用 POJO 和 Java 5 注释。

关于 JavaStruct 应用的文章系列,可以移步至如下链接:

1. 《Java 结构体之 JavaStruct 使用教程<一> 初识 JavaStruct

2. 《Java 结构体之 JavaStruct 使用教程<二> JavaStruct 用例分析

3. 《Java 结构体之 JavaStruct 使用教程<三> JavaStruct 数组进阶

转载自:http://blog.csdn.net/jazzsoldier/article/details/75570462#comments

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多