2008年8月4日月曜日

JavaMail は5年遅れている

このブログにしてはなかなかキャッチーなタイトルです。

JavaMailは現在バージョン1.4。1.1のリリースから10年近く経ちますが、本質的な機能は変わっていません。

つまり(かなりアクロバティックな展開ですが)JavaMailの本質は10年ほど変化していないのです。

言い換えると、

1.JavaMail 1.1 のリリースが10年近く前

2.JavaMail 1.4 と 1.1 の機能は本質的には変わっていない

3.ゆえに JavaMail 1.4 の機能は本質的には10年ほど変わっていない

すばらしく乱暴な展開ですが、私は結構確信を持ってこれを書いています。

なぜ確信を持っているか。

それは、JavaMailが依然としてクラサバ型のメールクライアントを意識した仕様だからです。

なぜそう思うか。

Folderがメッセージをキャッシュすべきである、とか、そもそも「フォルダー」という概念がクラサバチックなのです。

Swingで作るメールクライアントならFolderがメールをキャッシュするのもよいでしょう。しかしServletではどうするか。Folderがメールをキャッシュしたところで、じゃあそのFolderをどこにキャッシュするのか。FolderはSerializableではない(javax.mail.Messageすらも!)のでSessionにPUTすることはできません(してもいいけど仕様に反する)。じゃあServletContext??それは何だかみっともないなあ。

それからgmailやdel.icio.usで採用されているような(「フォルダ」という概念ではなく)「タグ」という概念が、JavaMailでは実装不可能であること。つまり「フォルダ」という概念をそのまま「javax.mail.Folder」に落としてしまったという痛恨のミス。これらがJavaMailが5年以上前のレベルにとどまっている証拠だと私は思うのです。

3層Webアーキテクチャ(というのも古い言葉なのかな)でメールシステムを作るとすれば、JavaMailの仕様は結構無視してしまうしかない、と私は確信するものであります。

かなりマニアックな話題を中途半端に終わらせるのもなんですが、以上です。

0 件のコメント: