jackson-module-kogera
is an experimental project to develop jackson-module-kotlin
.
This project has the following features compared to jackson-module-kotlin
.
- Lightweight
- high-performance
- Fast deserialization
- Smaller memory consumption
- More
Kotlin
friendly behavior
Especially when it comes to deserialization throughput, it is several times higher than jackson-module-kotlin
.
This project is experimental, but passes all the tests implemented in jackson-module-kotlin
except for the intentional incompatibility.
The main feature of jackson-module-kogera
is that it replaces kotlin-reflect
with kotlinx.metadata.jvm
.
As of 1.7.21
, kotlin-reflect
is a huge library(3MB), and replacing it with kotlinx.metadata.jvm
(1MB) makes it lightweight.
Several performance improvements have also been made.
First, by implementing the equivalent of FasterXML/jackson-module-kotlin#439, deserialization is now up to three times faster, depending on the use case.
The cache has also been reorganized based on benchmark results to achieve smaller memory consumption.
The performance degradation when the strictNullChecks
option is enabled is also greatly reduced.
Here is a list of issues that are not resolved in jackson-module-kotlin
but are or will be resolved in kogera
.
This project makes several disruptive changes to achieve more Kotlin-like
behavior.
Details are summarized in KogeraSpecificImplementations.
jackson 2.17.x
Java 8+
Kotlin 1.8.22+
Compatibility checks for Java
and Kotlin
are done by CI
grid tests.
The Java
test covers all currently supported LTS versions and the latest versions.
Kotlin
is tested with the latest patch version and the latest Beta
or RC
version within each minor version after the minimum version.
The Kotlin
version is the lowest version available with the latest kotlinx-metadata-jvm
.
See Workflow for the currently tested versions.
The package is temporarily published in JitPack
.
Please refer to jitpack.io
for the released version.
ProjectMapK / jackson-module-kogera
repositories {
// ...
maven { setUrl("https://jitpack.io") }
}
dependencies {
// ...
implementation("com.github.ProjectMapK:jackson-module-kogera:${version}")
}
When replacing jackson-module-kotlin
in an existing project, please follow these steps
- Replace the dependencies of
jackson-module-kotlin
withjackson-module-kogera
. - Replace
com.fasterxml.jackson.module.kotlin
used forimport
withio.github.projectmapk.jackson.module.kogera
.
In projects that use spring-boot
, there is a possibility that jackson-module-kotlin
will be used by auto-configuration.
Therefore, it is necessary to exclude jackson-module-kotlin
from the dependencies and to configure it manually.
You can check if your project's dependencies include jackson-module-kotlin
by looking at . /gradlew dependencies
.
If you find any problems, it would be appreciated if you could share them in an issue
.
I will not be treating this project as "stable".
This project currently serves as a testing ground for all improvements to jackson-module-kotlin
.
In prototyping, it is important to be willing to make disruptive changes.
This project is based on jackson-module-kotlin
, so the license follows jackson-module-kotlin
.
The current license is Apache License 2.0
.
jackson-module-kotlin/LICENSE at 2.14 · FasterXML/jackson-module-kotlin
Kogera
is the Japanese name for Japanese pygmy woodpecker
.
This bird is the smallest woodpecker in Japan.