Java 结构体之 JavaStruct 使用教程<一> 初识 JavaStruct
来源:互联网 发布:最新拍摄软件 编辑:程序博客网 时间:2024/06/11 16:14
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 数组进阶》
- Java 结构体之 JavaStruct 使用教程<一> 初识 JavaStruct
- Java 结构体之 JavaStruct 使用教程<二> JavaStruct 用例分析
- Java 结构体之 JavaStruct 使用教程<三> JavaStruct 数组进阶
- Java 结构体之 JavaStruct 第三方库
- javastruct
- java.io.IOException: The same input jar [***\libs\javastruct-0.1.jar] is specified twice
- Java中json的使用之初识JSON(一)
- Github使用教程(一)------ 初识Github
- JMETER使用系列教程一之初识JMETER,JMETER介绍+安装
- Java之XML(一)初识XML
- C语言之结构体的初识
- Foundation框架之结构体初识。
- 使用Weka进行数据挖掘(Weka教程一)Weka初识之在你的代码中使用Weka
- jquery mobile学习教程之初识Jquery mobile 一
- SpringBoot初始教程之项目结构(一)
- SpringBoot初始教程之项目结构(一)
- 黑马程序员—基础篇之初识java语句结构
- Git教程(一)----初识Git
- 无监督特征学习——Unsupervised feature learning and deep learning
- JavaSE_多线程
- CString,string,char*之间的转换
- markdown基础使用(写.md文件)
- 微信网页登陆授权示例-php版
- Java 结构体之 JavaStruct 使用教程<一> 初识 JavaStruct
- canvas加载图片·绘制像素图·旋转平移缩放图片
- 第三章绘图跟图形
- bootstrap表格添加按钮、模态框实现
- svn出现 “previous operattion has not finished,run clean up if it is was interrupted”解决方法
- 字符串逆序
- 【HDU 1257 最少拦截系统】+ dp
- linux运维第一天: 计算机基础
- 轻量级java调用流程追踪日志框架-trace4j