Migrating from XStream to Jackson

Hi all,

Following up on an earlier discussions below:

For years, we’ve relied on XStream for object serialization and deserialization, primarily to and from XML. It’s served us well with its flexibility and ease of use. However, as our system evolves toward modern standards — particularly Java upgrades, improved performance, and tighter security and safety — we’re adopting Jackson, a faster and more robust and maintained serialization framework.

@burke’s post above outlines this well, and I support the direction. Based on that, here’s what we’ll be doing:

  • Build a Jackson-based API (using JSON) to closely mirror the XStream API, integrated into serialization.xstream within OpenMRS Core.
  • Create a migration module to help older implementations transition gracefully to the new API.

Let me re-echo some of the reasons for opting in Jackson

  • Supports multiple formats: JSON (core), XML, YAML, CSV
  • Mature and widely adopted
  • Fast and highly performant
  • Backed by an active, well-established community

Looking forward to your ideas and input as we move ahead. Thanks in advance!

cc @grace, @burke, @ibacher, @dkayiwa, @wikumc, @mseaton, @mksd, @raff, @corneliouzbett, @mogoodrich, @all

6 Likes

We can keep track of progress on TRUNK-6351.

1 Like