Jackson Download Page
Jackson versions 1.1 and above come in 4 separate jars, and Jackson versions 1.6 and above in 6:
Core jar contains streaming JSON parser and generator interfaces and implementations
Optional Mapper jar contains functionality for data binding:
TreeMapper to build "trees" consisting of JsonNodes, and write them as JSON
ObjectMapper to construct Plain Old Java Objects (POJOs, aka Beans) from JSON, and similarly write Java objects as JSON.
Optional jax-rs jar contains class(es) needed to make a JAX-RS implementation like Jersey use Jackson for simple, convenient and lightning fast binding of JSON to/from Java objects
- Jaxrs package depends on mapper jar (and transitively on core as well)
Jaxrs is only needed if you use Jackson via JAX-RS, and not for stand-alone usage
Optional xc (Xml Compatibility) jar (added for 1.1) contains classes needed to add XML compatibility support such as:
Optional MrBean jar (jackson-mrbean) contains functionality for Materialized Beans -- ability to let Jackson create implementation classes (not just instances!) for interfaces and abstract classes. Depends on mappper and core modules
Optional Smile jar (jackson-mrbean) contains support for JSON-compatible binary format called "Smile". It depends on core module.
Jackson 1.6 added a new one, jackson-all jar that contains contents of all the other jars; this may be more convenient to use and upgrade than set of separate jars, for some use cases (or as source when building subsets that only contain specific classes you need)
Note that for streaming parsing/writing of JSON, core package can be used without the other jars.
Jackson versions up to 2.1 require JDK 5.
Jackson versions 2.2 and 2.3 require JDK 6.
No decisions have been made regarding upgrading requirement to JDK 7 -- this will be done based on discussions on the mailing list.
Note that it may be possible to locally compile versions 2.2 and 2.3 to work on JDK 5: minor modifications may be needed.
Jackson versioning follows guidelines similars to ones Eclipse project uses, so that:
- Major version upgrade indicates incompatible changes.
- You MUST recompile (and re-test) your application or service when upgrading to a new major version
- Major version upgrades occur rarely
- Minor version upgrade indicates added functionality, but without removing existing functionality
- It is possible that observed behavior changes, but this should usually not cause compatibility problems
- Changes are binary compatible so it is possible -- although not recommended -- to just upgrade jar. Instead, you should recompile application, and re-test code that uses Jackson
- Patch version upgrades are strictly for bug fixes, and no new functionality is added
- Only changes to observed behavior is to fix broken behavior
- Upgrade by swapping jars should work without problems
Dynamic version detection
Starting with Jackson 1.6, major components of the system (like ObjectMapper and JsonFactory implement org.codehaus.jackson.Versioned interface, which defines methods version() that returns Version object to indicate which version corresponding package is. This can be useful for third party libraries that can use different versions of Jackson with different levels of support; or to verify more accurately which version is and can be used (above and beyond what version management systems can offer).
Jackson comes with Maven "pom"-files (and is available via Codehaus Maven2 repo, which gets synced with main Maven2 repository).
The only dependencies are:
- Core and mapper require JDK (see above regarding version needed)
- Mapper jar depends on core jar
- Jax-rs, Jackson-xc and jackson-mrbean jars depend on mapper jar
All jars are also first-class OSGi bundles with the usual import and export declarations.
The primary release mechanism for official artifacts (jars) is Maven. But although project uses Maven for releasing artifacts (and for 2.x, build itself), users do not have to use Maven: they just need to be able to access jars from Maven repositories.
All released versions are available from the Central Maven Repository (although published via Sonatype OSS repository).
For Jackson 2.x, you can browse packages using http://repo1.maven.org/maven2/com/fasterxml/jackson/.
Snapshot versions can be used by adding following Maven dependencies in your projects pom.xml:
Sonatype snapshot repository: https://oss.sonatype.org/content/repositories/snapshots/com/fasterxml/jackson/core/
<snapshotRepository> <id>sonatype-nexus-snapshots</id> <name>Sonatype Nexus Snapshots</name> <url>https://oss.sonatype.org/content/repositories/snapshots</url> </snapshotRepository>
No snapshots released since 1.x is in maintenance mode; only 1.9.x patch releases built.
Jackson is dual-licensed under two alternative popular Open Source licenses: Apache (AL 2.0) and GNU Lesser GPL (LGPL 2.1). You choose one or the other, as necessary (if you want to redistribute the code -- for use, you do not need license), and abide by the license rules as defined by the respective license agreement (and only that one).
All code contributions must be licensable under these two licenses.
2.x: Various Github projects under FasterXML repo, core modules being:
Latest stable 2.x version
Current stable branch is 2.2, and the latest version is 2.2.3:
- Released: 22-Aug-2013
- Deployable jars (core jars; some of more commonly used extensions
Latest stable 1.x version
Current stable branch is 1.9, and the latest version 1.9.13:
- Released: 14-Jul-2013
- Deployable jars
ASL/LGPL mrbean (bean materializer)
ASL/LGPL Smile (binary format)
Jackson All (includes contents of all above jars) (1.9.11)
Jackson Mini includes contents of jackson-core except for Annotations, license files, and is meant for environments where size should be minimized (like mobile devices) (1.9.11)
Smile Tool (command-line tool for converting Smile to/from JSON) (1.9.11)
Latest stable versions of earlier branches
1.8 branch: 1.8.10 (final release)
- Released: 15-Jul-2012
- Deployable jars
See earlier 1.x releases page.