Edited at

JavaのTOMLライブラリ比較

More than 3 years have passed since last update.


忙しい人のまとめ

今はまだ使わない方がいいかも。


ライセンス等比較

#
名前
作者
Mavenで依存性解決して使える(野良repo)
Maven Centralに上がってる
ライセンス

1
jtoml
@agrison

×
MIT

2
jtoml
@asafh
×
×
Apache2

3
toml4j
@johnlcox
×
×
Apache2

4
toml4j
@mwanji


MIT

同じ名前のが2つずつあってカオス。

この時点で4しか使う気になれんけど、一応全部試してみる。


やること

TOML公式のTOMLのサンプルをファイルに保存して、それをパースして値を取ったりしてみる。

https://github.com/toml-lang/toml#example

検証コードはGroovy Scriptで実施。


各ライブラリ共通点


  • TOMLを読み込んでgetStringやらgetDateやらで値を取り出す

@Grab('com.moandjiezana.toml:toml4j:0.3.1')

import com.moandjiezana.toml.Toml

Toml toml = new Toml().parse(new File("sample.toml"))
println toml.getString("servers.beta.ip")


  • Datetimeがうまく処理出来ない。公式サイトの説明では、RFC 3339形式となっているが、1979-05-27T00:32:00.999999-07:00はどのライブラリでもパースエラーになった。せめて公式サイトに載ってる例くらいは処理出来て欲しい


気になったところ


toml4j(by mwanji)

最初の比較表でも分かるとおり、Maven Centralに上がっている。これにコントリビュートするのが一番楽そう。


jtoml(by agrison)

唯一シリアライズが出来るのが特徴。しかし、それを実行するとエラーになる。。


その他

Datetime含んでいるだけでエラーになってつらい。

@Grab('com.leacox:toml4j:1.0.0-SNAPSHOT')

import com.leacox.toml4j.Toml

println Toml.from('dob=1979-05-27T07:32:00-08:00').getAsString('dob')

// exception occurred!