スライド

他の類似の言語との比較

さて。ここまでつらつらとXULの特徴について述べてきたわけですが、「XMLベースである」「クロスプラットフォームである」といった特徴はXULだけのものではありません。それぞれの言語でどういう違いがあるのか、XMLベースの技術がどんどんと開発されてきている今、なかなか把握しづらいものがあるのではないでしょうか。というわけで、XUL、XAML、MXML、Javaの4者について表を用いてそれぞれの違いを明らかにしていきたいと思います。

XAML

この中でまず目に付くのは、同じXMLベースの開発言語でありMicrosoftが開発している「XAML」ではないでしょうか。XAML(eXtensible Application Markup Language)はMicrosoftが次期Windowsのために開発している言語で、他の3者と比べるとこれだけが「今はまだ使えない」という状態です。

XAMLは一見するとXULとコンセプトが似ているようにも思えますが、一つ大きな違いがあります。それは、(少なくとも現段階においては)XAMLは次期Windows用の技術であるということです。MozillaのXULがクロスプラットフォームのアプリケーション開発をしやすくするのに対して、XAMLはWindowsアプリケーションの開発をやりやすくするためのものです。これまでCやVBなど様々な言語で行われてきたWindows用アプリケーションの開発において、今までは困難だったUI部分の設計をやりやすくするための手段として、XMLを採用するということのようです。

Windowsアプリケーションの設計に特化していますので、他のXMLとの連携、例えばMathMLの数式を埋め込むといったことは考えられていないようです。また、XAMLのマークアップに割り付けられるUI部品はあくまでWindowsアプリケーションの部品であるため、スタイルシートによる表示のカスタマイズもできないそうです。

MXML

XULとXAMLがクライアントサイドアプリケーションの開発のために使われるのに対し、MXML(Macromedia Flex Markup Language)はサーバサイドアプリケーションの開発のための技術という側面が強いです。

MXMLはMacromedia Flexという製品を構成する要素の一つですが、FlexはASP(Active Server Pages)やJSP(Java Server Pages)の対抗馬となる技術です。今までサーバでの処理結果をHTMLで表示させていたところをFlashでやってしまおう(Flashのコンテンツを動的に生成しよう)というのがFlexのコンセプトで、その際のFlashコンテンツ(の雛形)をXMLで設計するというのがMXMLの役割です。

元々Flashはマルチメディアのオーサリングツールであるため、プログラマ的な開発手法とはなじみにくい所があります。Flashをアプリケーション開発環境として使いやすくするために開発されたのが、MXMLとFlexなのです。

Java

JavaはXUL、XAML、MXMLの三者と違って「XMLベースではない」普通の開発言語です。しかしクロスプラットフォームのアプリケーションを開発するためのツールとしては、最もポピュラーなものです。

JavaにはXMLを活用するためのライブラリがありますが、Java自体がXMLと特別強力に結びついているわけではありません。また、UIを設計するのにも先のコードの例で示したとおり抽象的な方法をとらなくてはなりません。

Javaで開発するアプリケーションは、Java VMという仮想的なコンピュータ環境の上で動作する一種のネイティブアプリケーションである、と考えて良いでしょう。ですから自由度は非常に高いです。

結論

まとめると、XAMLはWindowsのネイティブアプリケーションを開発するためのもの、MXMLはASPやJSPなどのサーバサイドアプリケーションを開発するためのもので、XULとJavaがクロスプラットフォームのクライアントサイドアプリケーションを開発するという用途で競合していることがお分かり頂けると思います。

XULとJavaにはそれぞれ一長一短あります。XULはUIを設計したりWeb関連の技術を活かしたりするのに適していますが、従来のアプリケーション開発的なアプローチを取る場合はJavaの方が有利だと言えます。用途がよく似たこの2者ですが、それぞれの特長を最大限に活かしてアプリケーション開発を行うのが重要でしょう。