Xionを何の目的で使いたいかというと、「リテラルのようなもんだ」と言ったわけですが(「JSON改」の「何が問題なのか/何をしたいのか」)、もう少し具体的に述べます。
毎度おなじみ、スタックの例を出します。例えば、MyStackImplが、5個の項目があって、最初と最後の項目が0のときアヤシイ挙動を示すとします。これを調べるのに、とりあえず、最初と最後が0になるように項目を5個積んだ状態を作り出す必要があります。
/* スタックを作る */
Stack stack = new MyStackImpl();/* 目的の状態をセットアップ */
stack.push(0); // 1番目
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(0); // 5番目/* これから調べる */
// ...
こういう状態セットアップのコードを書かないで、Stack [0, 1, 2, 3, 0]
で済ましたいってことです。スタックに積むデータがもっと複雑で、5個じゃなくて100個だったりするとセットアップコードは大変です。Xionで書いてもそれなりの手間ですが、実行コードを書くよりはずっと楽だし、自動生成したり加工/保存などもやりやすいでしょう。
つまりXionの主たる用途は、「オブジェクト状態のテキスト形式による表現」です。まー、一種のシリアライゼーション・フォーマットですね。JSONは、JavaScriptに関してはほぼ完璧なシリアライゼーション・フォーマットですが、クラスのような型概念を持つ言語だと少し不便な面があるので、最小限の拡張としてタグ(型名)の前置を許したのです。