今まで、RestサービスのXMLアウトプットにJAXBを使ってきましたが、
かなり面倒になってきたので、FreeMarkerを使ってXMLを作成するように変更しました。

JAXBの面倒な点は・・・
1)XMLの属性(Attribute)と要素(Element)の切り分けが変えにくいこと。
特に同じオブジェクトにも関わらず、あるときは属性、あるときは要素として出力したくても、それができない。
それを本当にやりたければ、違うクラスとして作成する必要が出てしまうか、
非常に面倒な方法をとらなければならない。

2)XMLの出力イメージを忘れやすい
これは、そもそも作成している側の問題なのでしょうが、
出力をこうしたいというイメージがあるのですが、いつの間にかそれを忘れてしまう。
(特に細かい部分で・・・)
であれば、ドキュメントを書けばいいのかもしれないが、
だったら、ドキュメントっぽい、テンプレート形式にしたほうがわかりやすいと思ったため。

3)同じような出力だけど、詳細版とサマリー版のような出力を分けたい場合に、
これもまた、違うクラスとして作成する必要がでてしまう。

4)XMLのアウトプットを同じままで保証しなければならない場合でも、
内部のクラスは変更したい(となるはず。)
その場合に、バージョンごとでXMLの表示だけでもかえられるようにしたい。

逆に、便利な点としてXMLだけじゃなく、jsonへのシリアライズも簡単にできるようなので、
使いどころなのでしょうが・・・

でも、結局オブジェクトをそのままXMLにシリアライズするというのは、
一元管理という意味で何となく、聞こえはいいが、結局は、XMLという表示(表現)に変換するときに、
一元でのデータの意味が、管理の意味で必要なオブジェクトなのか、表示の意味で必要なオブジェクトなのかが、
曖昧になってしまい、結局は分けた方がいいんじゃないの・・・
って、これMVCって散々で通ったみちだよね。
ということで、やはりデータと外部表現は別にするということで、
Javaのテンプレートライブラリを改めて探しても、
昔と同じVelocityとFreeMarker程度しか良さそうなのが見つからず、
どっちかなと思ったところ、FreeMarkerにしました。
(Velocityのほうが日本語ドキュメントがあるのですが、FreeMarkerはVelocityを意識した後発版ということで・・)

しかし、いつまでたってもJavaの汎用テンプレートライブラリというのはあまり普及はしないのですね。
日本語のドキュメントがほとんどありません。
まだ、jsp+taglibなどがJavaでは多く使われているのでしょうか?

お仕事のご依頼・相談を承ります
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら

Leave a Reply

お仕事のご依頼・相談
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら
ソフトウェア&ライブラリ




ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
執筆書籍
本、雑誌等

WEB記事:CodeZine
執筆記事はこちら
カレンダー
2012年3月
« 2月   4月 »
 1234
567891011
12131415161718
19202122232425
262728293031  

カスタム検索
RSS
Add to Google < !–adsense–>
アーカイブ
カテゴリ
にほんブログ村 IT技術ブログへ