Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
jackson-module-kotlin 2.15 リリースノート解説
Search
wrongwrong
April 27, 2023
Technology
0
370
jackson-module-kotlin 2.15 リリースノート解説
4/24にリリースされたjackson-module-kotlin 2.15のリリースノートに関するざっくり解説です。
wrongwrong
April 27, 2023
Tweet
Share
More Decks by wrongwrong
See All by wrongwrong
スター1.1kリポジトリのメンテナやってたら確定申告が確定した話
k163377
1
88
jackson-module-kotlin 2.19の新機能とJackson 3.0に向けた取組
k163377
1
59
jackson-module-kogeraの紹介
k163377
0
370
Kotlin向けOSSに貢献してきて感じたアレコレ
k163377
0
280
jackson-module-kotlinを読もう!
k163377
0
1.6k
Java Reflectionから見たvalue class
k163377
0
620
Other Decks in Technology
See All in Technology
わたしがEMとして入社した「最初の100日」の過ごし方 / EMConfJp2025
daiksy
14
4.9k
Apache Iceberg Case Study in LY Corporation
lycorptech_jp
PRO
0
300
ディスプレイ広告(Yahoo!広告・LINE広告)におけるバックエンド開発
lycorptech_jp
PRO
0
330
ESXi で仮想化した ARM 環境で LLM を動作させてみるぞ
unnowataru
0
170
AIエージェント時代のエンジニアになろう #jawsug #jawsdays2025 / 20250301 Agentic AI Engineering
yoshidashingo
8
3.5k
Iceberg Meetup Japan #1 : Iceberg and Databricks
databricksjapan
0
330
Exadata Database Service on Cloud@Customer セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
2
1.5k
AWSアカウントのセキュリティ自動化、どこまで進める? 最適な設計と実践ポイント
yuobayashi
7
540
EMConf JP 2025 懇親会LT / EMConf JP 2025 social gathering
sugamasao
2
190
Raycast AI APIを使ってちょっと便利な拡張機能を作ってみた / created-a-handy-extension-using-the-raycast-ai-api
kawamataryo
0
210
CDKでカスタムランタイムを作成して、Lambdaをnode.js23+TypeScriptで動かしてみた
smt7174
2
110
OPENLOGI Company Profile for engineer
hr01
1
20k
Featured
See All Featured
Building Applications with DynamoDB
mza
93
6.2k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Bootstrapping a Software Product
garrettdimon
PRO
306
110k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Building Your Own Lightsaber
phodgson
104
6.2k
Thoughts on Productivity
jonyablonski
69
4.5k
BBQ
matthewcrist
87
9.5k
Statistics for Hackers
jakevdp
797
220k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Side Projects
sachag
452
42k
Transcript
jackson-module-kotlin 2.15 リリースノート解説 1
自己紹介 宮田 木織 株式会社justInCaseTechnorogiesバックエンドエンジニア Kotlin で Spring WebFlux してます 2023年1月から
jackson-module-kotlin のメンテナになりました アウトプットしているアカウント Qiita: @wrongwrong GitHub: k163377 2
jackson-module-kotlin の状況について 去年1年ほどほぼメンテナ不在だった それまでもあまりアクティブにはメンテナンスはされていなかった 今年に入ってから自分がメンテナになった 権限が増えたので色々な変更を順次導入中 issue整理も頑張っており、100以上のcloseした 3
今日話すこと 4/24に jackson-module-kotlin 2.15 が正式リリース 沢山有る変更をそれぞれざっくり解説 影響の大きな変更も有ります! 皆様の持つテスト等を通じて動作確認にご協力頂けると嬉しいです 補足 特に重要度が高い内容は太字で表記します
#396 は関わる前で良く知らないので飛ばします 4
キャッシュ関係の改善 #627: コンストラクタとファクトリ関数のクリエイターキャッシュの統合 両者の利用が偏った際に非効率だったため #628: 不要なキャッシュの削除 KClass への変換キャッシュの削除( Kotlin 側でキャッシュされていたため)
コード内から利用が無くなっていたキャッシュの削除 #629: 一部リフレクションの結果をキャッシュしないように変更 SoftReference 内の値をキャッシュしたためメモリ消費が倍増? a. 同じ値への参照がキャッシュされる b. GC が走り、 kotlin-reflect 側の値がクリアされる c. kotlin-reflect 側で値が別途初期化(同一データ・別インスタンス) 5
MissingKotlinParameterException 関連 #647: MissingKotlinParameterException に廃止予定を追加 特にデシリアライズ時にパラメータが足りないと throw されるもの 今後は親クラスの MismatchedInputException
を throw 予定 廃止理由 このクラスを throw する強い理由が無い このクラスの持つプロパティが Serializable の規約に違反している このクラスの持つプロパティによって実装を阻害される機能が有る ( StrictNullChecks オプションの大幅な性能改善) #654: Serializable の規約に違反している問題への仮対応 6
value class のシリアライズサポートの改善関係 #659: value class のシリアライズ方式の変更 今までは Serializer を使っていたが、
Converter を使う形に変更した これによって以下の改善が行われた getter 等に付与した型が関わるアノテーションが機能するようになった JsonSerialize 等 null 非出力オプションが機能するようになった (合わせて一部バグの修正も行った) #666: JsonValue アノテーションのフラグを無視しないよう修正 #667: value class での JsonKey アノテーションのサポート 7
その他不具合の修正 #631: addSerializer / addDeserializer の拡張関数の軽微なバグ修正 普通に呼び出すと2重登録になっていた Integer 等のラッパー型で呼び出すと意図せぬ挙動になっていた #634:
ReflectionCache で Serializable を継承する形に修正 KotlinModule の Serializable 関係の規約に違反していたため #641: is から始まるプロパティ関連のバグ修正 特定の状況でアノテーションが機能しない isFoo と foo プロパティを同時に定義するとシリアライズでバグる (割と怖い変更なので、動作検証お願いしたいです) 8
その他改善 #554: addMixIn の便利な拡張関数の追加 addMixIn<Foo, FooMixIn>() みたいに書ける( ::class.java が不要になった) #580:
Unit の KType の by lazy 化 初期化負荷の高い値であり、特定のユースケースで負荷軽減が見込める 利用頻度は高く、多くのユースケースでは影響が小さそう #646: Kotlin 1.4 サポートの廃止 Deprecated な Kotlin バージョンだと KotlinModule 初期化時にエラーになる #652: 利用の無くなっていたメソッドの削除 #665: Sequence をシリアライズする際の挙動の改善 これまでは一度 List に変換することでメモリに値をロードしてしまっていた ( Server-Side Kotlin Meetup をきっかけに修正しました!) 9
改善点ざっくりまとめ 全体的にメモリ消費量が低減された(はず) 幾つかのバグが解消された value class のシリアライズサポートが改善された 幾つかの廃止・廃止予定の追加 便利な関数が増えた 10
宣伝 jackson-module-kotlin の実験的プロジェクトをやっています ProjectMapK/jackson-module-kogera jackson-module-kogera の紹介スライド 軽量・高機能・高性能がウリです ここで開発した内容が本家に反映されていきます スターなどよろしくお願いします! 11