# News

## Dec 6, 2008 XStream 1.3.1 released

A new XStream maintenance version has been released. The release contains some bug fixes, some minor enhancements and support of new JDKs:

- Ability to alias package names
- Converters are only registered by default for types delivered with the JDK in use preventing unexpected incompatibilities
- Separation between user defined attributes and XStream attributes
- New mode for JSONWriter to drop JSON root node
- Support for FreeBSD's Diablo JDK.
- Enhanced persistence package and extended tutorial.

View the complete change log and download.

Note, that XStream really supports by default now only types of the JDK in use. Especially for CGLIB this means that support of those proxies will have to be explicitly activated first. However, support for CGLIB proxies is enhanced.

Note, to support a representation of null values in some way, it is absolutely necessary that each converter can handle a null value in its marshalling methods. If you have implemented your own custom converters, try to handle such a case also to prevent incompatibilities in case XStream will provide such values with its next major version.

## Feb 27, 2008 XStream 1.3 released

The XStream committers proudly present XStream 1.3. This release contains some major refactorings concerning Java annotations, improved XML support regarding encoding and character sets, some minor new features, deprecations and a lot of bug fixes:

- Annotation support is now implemented as Mapper and Annotations can either be processed in advance or on-the-fly (see Annotations tutorial for limitations).
- Improved encoding support for JSON and XML (including automated support for XML headers). Enforceable check for valid XML characters in the written stream.
- Dedicated converters can now be configured for individual fields also using the XStream facade.
- New converters for java.lang.StringBuilder, java.util.UUID, javax.xml.datatype.Duration, and javax.swing.LookAndFeel. New generic converter for types using a java.beans.PropertyEditor. Auto-instantiated SingleValueConverter for Java enums to support enum values as attributes.
- XML elements are now sorted by default according their declaration with the fields defined in parent classes first to improve support for type hierarchies in XML schemata.
- A lot of bug fixes to improve JSON support for arbitrary types. Added section in FAQ for limitations and operation modes.
- Native support for SAP VM.
- All text-based files are now shipped with an appropriate license header to clean-up legal issues.

View the complete change log and download.

Note, to support a representation of null values in some way, it is absolutely necessary that each converter can handle a null value in its marshalling methods. If you have implemented your own custom converters, try to handle such a case also to prevent incompatibilities in case XStream will provide such values with its next major version.

## May 24, 2007 XStream 1.2.2 released

A maintenance release of XStream that contains a lot of bug fixes and has some minor highlights:

- JSON serialization and deserialization support with the help of the new JettisonMappedXmlDriver
- Supports customized field sorting
- Omitting fields at deserialization time

View the complete change log and download.

Note, that next version of XStream will behave slightly different by default. XStream emits all fields in declaration order like Java serialization. But in contrast to Java it will omit the fields of parent classes last while Java serialization emits them first. This makes it difficult to match a given XML schema that defined inherited types or leads sometimes to obscure initialization problems. However, XStream itself will not be affected by the changed order of elements in the XML, any deserialization of current XML representations will work fine. Anyway we will provide with XStream 1.3 a FieldKeySorter implementation that mimics the old behaviour. In the meanwhile you can enforce the new field sorting by installing the NaturalFieldKeySorter.

## Nov 11, 2006 XStream 1.2.1 released

- Introduced DocumentWriter interface and generalized functionality for all writer implementations creating a DOM structure (DOM4J, DOM, JDom, Xom, Xpp3Dom).
- Refactor of build system to use Maven 2. Ant still supported on XStream Core.
- Created separate XStream Benchmark module

View the complete change log and download.

## Oct 10, 2006Joe Walness announcing new XStream Project Lead

I have been the XStream project lead, since it was open sourced 3 years ago. In that time, it has attracted some excellent developers who have formed the foundations of the user community, made all kinds of significant improvements and pushed out new releases. It's now approaching its 1000th commit.

The development community that has formed around XStream has been outstanding - more than I could ever have imagined. In particular, the following people have invested a lot of time into XStream, both from a technical and social point of view:

- Jörg Schaible
- Mauro Talevi
- Guilherme Silveira
- Jason van Zyl
- Me (well I have!)

Recently I have been turning my attention to other things and XStream has been very much a self sustaining project. I've decided that the project would benefit from have a project lead who can invest a lot more time than I can currently offer.

So, the new XStream project lead will be Jörg Schaible, who along with Mauro Talevi and Guilherme Silveira will carry XStream forward. This has been happening for a long while anyway, it's just none of us ever realised or acknowledged it.

Of course, I'll still be lurking around, helping the transition, having loud mouth opinions and generally annoying people in any way I can... you haven't got rid of me that easily. ;)

I know Jörg, Mauro and Guilherme will be able carry XStream into the next generation (we have a lot of ambitious plans for XStream 2).

I'd also like to thank the 45(!) other contributers to the XStream project, who have all helped make it what it is today. Finally, thanks to Graham Glass, who's Electric XML library formed a lot of the inspiration for XStream.

## Aug 18, 2006 XStream 1.2 released

- Using attributes for fields (contributed by Paul Hammant and Ian Cartwright).
- Aliasing of arbitrary attributes.
- XStream can now serialize another XStream instance.
- XStream has now the XStreamer, that serializes an object together with its XStream instance.
- AnnotationConverter for fields (contributed by Guilherme Silveira).
- PureJavaReflectionProvider supports now final fields starting with JDK 1.5
- Any Collection type can now be declared implicit, the default implementation will be respected for unmarshalling.
- XStream can now write all references as absolute XPath expression.
- New SingeValueConverter allows light weight converters if the value can be represented by a unique string.
- Aliasing of classes of a specific type.
- Support for certain types of proxies generated with the CGLIB Enhancer.
- Support for BEA JRockit starting with R25.1.0 (contributed by Henrik Ståhl of BEA).
- Experimental binary reader and writer.
- Experimental HierarichicalStreamCopier allows streams to be copied from one format to another without the overhead of serialization.
- Experimental JSON support allows streams to be copied from one format to another without the overhead of serialization (contributed by Paul Hammant).

View the complete change log and download.

## Jan 13, 2006 XStream 1.1.3 released

- Added XStream.toXML(OutputStream) and XStream.fromXML(InputStream).
- Ability to prevent fields from being serialized by calling XStream.omitField() or by implementing Mapper.shouldSerializeMember().
- Added Converter for Enum, EnumMap and EnumSet
- Added BeanConverter and ISO8601SqlTimestampConverter
- Fixed support for IBM JVM (contributed by Gabor Liptak)
- Enhanced mode support for Blackdown JDK.

View the complete change log and download.

## Apr 30, 2005 XStream 1.1.2 released

Most popular feature requests implemented.

- Java 5 Enum support.
- JavaBeanConverter for serialization using getters and setters.
- Aliasing of fields.
- StAX integration, with namespaces.
- Improved support on JDK 1.3 and IBM JDK.

View the complete change log and download.

## Mar 7, 2005 XStream 1.1.1 released

- Converters can be registered with a priority, allowing more generic filters to handle classes that don't have more specific converters.
- Converters can now access underlying HierarchicalStreamReader/Writer implementations to make implementation specific calls.
- Improved support for classes using ObjectInputFields and ObjectInputValidation to follow the serialization specification.
- Default ClassLoader may be changed using XStream.setClassLoader().
- Many bugfixes and performance enhancements.

View the complete change log and download.

## Jan 15, 2005 XStream 1.1 released

- Improved support for serializing objects as per the Java Serialization Specification:
  - Calls custom serialization methods, readObject(), writeObject(), readResolve() and writeReplace() in class, if defined.
  - Supports ObjectInputStream.getFields() and ObjectOutputStream.putFields() in custom serialization.
- Provides implementations of ObjectInputStream and ObjectOutputStream, allowing drop in replacements for standard serialization, including support for streams of objects. [More...]
- Reads and writes directly to most XML Java APIs: DOM, DOM4J, JDOM, XOM, Electric XML, StAX, Trax (write only), SAX (write only). [More...]

View the complete change log and download.

# Software

- About XStream
- News
- Change History
- About Versioning

# Evaluating XStream

- Two Minute Tutorial
- Object references
- Tweaking the Output
- License
- Download
- References
- Statistics

# Using XStream

- Architecture Overview
- Converters
- Frequently Asked Questions
- Users' Mailing List
- JavaDoc Core
- JavaDoc Benchmark
- Reporting Issues

# Tutorials

- Two Minute Tutorial
- Alias Tutorial
- Annotations Tutorial
- Converter Tutorial
- Object Streams Tutorial
- Persistence API Tutorial
- JSON Tutorial

# Developing XStream

- How to Contribute
- Developers' Mailing List
- Development Team
- Source Repository
- Continuous Integration