---
title: Jackson Smile 的跨语言支持问题
date: '2014-08-18 16:20:09'
draft: false
summary: 很多二进制格式在单语言里都能跑得很好，但一旦进入多端、多语言协作场景，真正卡住落地的往往不是性能，而是生态是否完整、兼容边界是否清楚。
slug: jackson-smile-needs-better-cross-language-support
syndication:
- platform: Weibo
  url: https://weibo.com/1648815335/BiRs0v3Yn
tags:
- serialization
- json
- jackson
- messagepack
topics:
- software-engineering
type: post
---

我一直用的是 `jackson 2.x`。后来看到它的 `Smile` 二进制方案，觉得有一点很有意思：它和 `JSON` 在数据模型上几乎是等价的，所以从抽象上看，比很多“重新定义一套专用二进制协议”的方案更自然。

但真到工程实践里，性能往往不是唯一门槛。

一个格式到底能不能用起来，尤其是在服务端、客户端、脚本工具、多语言系统一起协作的时候，更关键的问题反而是：

- 其他语言有没有成熟实现
- 各端能不能稳定互通
- 升级和兼容成本高不高

这也是为什么很多看起来性能不错的二进制格式，最后并没有真正流行起来。它们在单一栈里可能很好用，但一旦进入跨平台场景，生态缺口就会立刻放大。

所以如果只是 Java 内部系统，选择空间其实很多；但如果目标是多语言协作，我会更看重“模型是否通用”和“实现是否完整”，而不只是某个 benchmark 上快了多少。
