Jackson Release 2.15 (original) (raw)

Jackson Version 2.15 was released on April 23, 2023. Three release candidates (2.15.0-rc1, -rc2 and -rc3) were released prior to the final 2.15.0.

This wiki page gives a list of links to all changes (with brief descriptions) that are included, as well as about original plans for bigger changes (and in some cases changes to plans, postponing).

Status

Branch is closed as of September 2024, no more releases planned (but as usual, micro-patches possible)

Patches

Documentation

Articles, Blog posts

New Modules

Hibernate 6

Hibernate repo now provides jackson-datatype-hibernate6 to work with Hibernate 6: it requires JDK 11.

Jakarta-variant of JSON-Schema

JSON Schema module now provides both JAXB API-based "old" jackson-module-jsonSchema and new jackson-module-jsonSchema-jakarta (Jakarta API) modules.

Changes, compatibility

Compatibility: platform requirements

Android

Same as Jackson 2.14, SDK 26

JDK

Same as Jackson 2.14

Kotlin

Jackson 2.15 no longer supports Kotlin 1.4 -- supported versions are 1.5 - 1.8

jackson-module-kotlin changes the serialization result of getter-like functions starting with 'is'. For example, a function defined as fun isValid(): Boolean, which was previously output with the name valid, is now output with the name isValid (KOTLIN#670).

Compatibility: transitive dependencies

YAML format module

As per YAML#390 SnakeYAML dependency upgrade to Snakeyaml 2.0 from 1.33, to resolve CVE-2022-1471.

Despite seeming major version upgrade, should NOT affect compatibility of Jackson YAML format module -- SnakeYAML version scheme only uses 2 digits so this is more like a minor version upgrade, affecting API that Jackson does not use. Jackson YAML module will still work with older version of SnakeYAML (such as 1.33) so if necessary, users can forcible downgrade it if necessary for compatibility reasons with other libraries, frameworks.

Guava Module

Default/baseline Guava dependency now 23.6.1-jre (was 21.0 in 2.14), but module still works with full range of Guava versions from 14.0 to the latest (31.1-jre as of writing this)

Compatibility: build/artifact changes

Build JDK changes

Jar changes

Changes, behavior

Processing Limits

General

2.15 adds maximum processing limits for certain aspects of parsing as described below. Issues were included under umbrella issue #637.

Implemented limits are:

Maximum number token lengths

Implementation of jackson-core#815 sets up upper limit on maximum length of numeric tokens read from input. Default limit is:

Note that dataformat modules need to add support for enforcing the limits so coverage may vary: as usual, JSON parser will have the widest coverage initially.

Maximum String value length

Implementation of jackson-core#863 sets upper limit on maximum length of String values read from input. Default limit is:

Maximum Input nesting depth

Implementation of jackson-core#943 sets upper limit on maximum input nesting (Objects, Arrays) read from input. Default limit is:

Changes, behavior, other


Major focus areas, features included

Processing limits

Further number decoding performance optimizations

Use of FastDoubleParser library in more places, more widely (2.14 already used it in some places) may yield incremental performance improvements. Also uses the latest release of FDP.

Other Most Wanted Issues included

Major focus areas planned -- but postponed due to lack of time

Rewrite Creator Detection wrt Property Discovery

Postponed already since at least 2.13, needs to become priority for 2.16

Some other processing limits


Full Change list

Changes, core

Annotations

Streaming

Databind

Changes, data formats

CBOR

TOML

XML

YAML

Changes, datatypes

Guava

Hibernate

Java 8 date/time

JSONP/JSR-353

org.json

Changes, Other modules

Afterburner

JSON Schema

Changes, JVM Languages

Kotlin

Scala

Changes, Providers

JAX-RS Providers

Jakarts-RS Providers