Suche
Schneller, flexibler, jsoniter

jsoniter: Ein schneller und flexibler JSON-Parser für Java und Go

Dominik Mohilo

©Shutterstock.com / Mlap Studio

„Der schnellste JSON-Parser den es gibt“ – das und nicht weniger verspricht jsoniter zu sein. Mit der neuen flexiblen JSON-Bibliothek, die es als Java- und Go-Version gibt, spricht Entwickler Tao Wen all jene an, denen es nicht schnell genug gehen kann. Wir haben uns die Features des Tools angesehen.

Schnelligkeit ist alles

Wem Tools wie Jackson oder Gson nicht schnell genug sind, für den gibt es seit kurzem den neuen JSON-Parser jsoniter (kurz für JSON-Iterator). Tao Wen, der Entwickler des Toolings, verspricht, dass es sich hierbei um den schnellsten JSON De- bzw. Encoder auf dem Markt handelt. Eine bis zu zehnfach so hohe Geschwindigkeit im Vergleich mit normalen Parsern (inklusive Data Binding), wird angepriesen. Um diese Zahlen zu belegen, kann der als Basis dieser Aussage verwendete Benchmark auf der Webseite von jsoniter eingesehen werden.

Dieser Performance-Gewinn basiert auf einigen Tricks und Kniffen, die andere Tools nicht bieten. Jsoniter macht etwa – anders als herkömmliche Parser – keinen Gebrauch von einer virtuellen Methode oder Feature Flags für die Generalisierung. Stattdessen wird Dynamic Class Shadowingtri-tree sorgt für eine verbesserte Performanz des Parsers.

Die Performance der Java-Version beim Data Binding / Quelle: jsoniter

Die Performance der Java-Version beim Data Binding / Quelle: jsoniter

Das richtige API für den Job

Ein weiterer Vorteil von jsoniter sind seine drei APIs:

  • iterator-api
  • bind-api
  • any-api

Das iterator-API ist dann nützlich, wenn der Input sehr hoch ist, mit dem bind-API bindet man Werte an Objekte. Dank des any-APIs lässt sich für besonders große Objekte Lazy Parsing nutzen. Durch das any-API lässt sich eine JSON in ein Any-Objekt dekodieren und sofort benutzen. Wer sich mit der PHP-Entwicklung auskennt, dem wird dies vertraut vorkommen (Stichwort: json_decode).

Da diese APIs sich frei kombinieren lassen, gibt es sechs verschiedene verwendbare Kombinationen, die unterschiedliche Funktionen und Vorteile bieten. Für das (De)-Serialisieren ist jeweils nur eine statische Methode nötig, jsoniter ist also entsprechend einfach zu bedienen. Außerdem ist das Tool einer der wenigen JSON-Parser, der ein implementiertes Required Property Tracking bietet.

Eine umfangreiche Einführung zu jsoniter gibt Tao Wen, der Autor des Tools, auf DZone, auf der Projekt-Homepage und auf GitHub gibt es detaillierte Informationen zum Tooling und die Möglichkeit, die Java- und die Go-Variante herunterzuladen.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare
  1. Benjamin Makus2017-01-12 22:14:38

    Vergleich mit Jackson Afterburner? Bzw. Jackson wird ja von mal zu mal schneller mit dem Parsen und Serialisieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.