JavaにおけるRIAの選択肢の1つとして.NETを使う!?

【特集】EclipseでJavaとXAML/WPFをつなぐ
フレームワーク


松原晋啓
2008/3/27

 

何はともあれ、eFaceをサンプルで試してみよう

 最後に、eFaceを使ってサンプルアプリケーションを作成してみましたので、それを付けておきます。

 筆者は、もともとは長くJavaプログラマーをやってきたのですが、数年前から.NETにもかかわり、WPFやSilverlightについては2年以上も前から扱っていて、多くの執筆や講演を行ってきたので、それらのサンプルがeFace上で使えるかと思って試してみました。

 しかし、結果的にプレビューが対応していないことが判明し、ここでサンプルとして提示できなかったため、シンプルにeFaceのチュートリアルとして紹介されているサンプルを使わせていただきました。

XAMLファイルからXAMLファイルを表示するアプリ

 ここでは、2種類のXAMLファイルを使用して、1つのXAMLファイルからイベント処理でもう1つのXAMLファイルを表示するという単純なアプリケーションを紹介します。

呼び出される側の実装

 まずは、呼び出される側のHello.xamlファイルですが、こちらはラベルに「Hello, World」と記載されているだけです。処理はないので、Hello.javaファイルには何も記載がありません。

リスト1 Hello.xaml(eFaceチュートリアルのサンプルより引用)
<Window
  x:Class="gui.Hello"
  xmlns:java="clr-namespace:gui"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  SizeToContent="WidthAndHeight"
  Width="320" Height="240">

  <Label FontSize="40" Background="Beige">Hello, World</Label>
</Window>

リスト2 Hello.java(eFaceチュートリアルのサンプルより引用)
package gui;

import com.soyatec.eface.upf.Window;

public class Hello extends Window {

}

 このHello.xamlを実行すると、図7のように表示されます。

図7 Hello.xaml実行例
図7 Hello.xaml実行例

呼び出し側の実装

 もう1つの呼び出し側であるAction.xamlは、イベントを発生させるボタンのみが定義されています。こちらには、イベントでHello.xamlを呼び出す必要がありますので、その処理が記述されています。

リスト3 Action.xaml(eFaceチュートリアルのサンプルより引用)
<Window
  x:Class="gui.Action"
  xmlns:java="clr-namespace:gui"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  SizeToContent="WidthAndHeight">

  <Button Click="onClick">Click Here</Button>
</Window>

リスト4 Action.java(eFaceチュートリアルのサンプルより引用)
package gui;

import com.soyatec.eface.upf.Window;
import com.soyatec.eface.upf.actions.RoutedEventArgs;

public class Action extends Window {

    /**
    * @param sender
    * @param eventArgs
    */
    public void onClick(Object sender, RoutedEventArgs eventArgs) {
        Hello hello = new Hello();
        hello.show();
    }
}

 このAction.xamlを実行すると、図8のように表示されます。

図8 Action.xaml実行例
図8 Action.xaml実行例

eFaceは「コードビハインド」を完全に実践

 WPFをご存じの方であれば、すでに気付いたかと思いますが、Hello.xamlファイルを呼び出す際には、Helloクラスのインスタンスを生成し、そのインスタンスを表示するロジックになっております(XAMLファイルはどこにも指定されていません)。これは、XAMLファイルが.NETではおなじみの「コードビハインド」(デザインとロジックをファイルで分けること)を完全に実践しているということを指しており、ロジックの実態はJavaファイル側のクラスだということです。

 XAMLファイルはUI記述部分のみを別定義として取り出したもので、本来はHello.xaml/Hello.javaであれば、Helloクラスとして1つのものだということです(図9)。

図9 クラスの構成
図9 クラスの構成

 考え方は、UIとロジックの分離というとてもシンプルなものですので、便利に使えるのではないかと思います。

リッチクライアント時代のJavaプログラマーのために

 本稿では、デザイナーの視点は含まず、プログラマーがプログラマーらしくRIA/リッチクライアント開発を行っていけるだけの技術を紹介してきたつもりでしたが、いかがでしたでしょうか。本稿が、優秀なプログラマーがRIA/リッチクライアント主流の昨今でも、変わらず優秀でいることができるための一助となれば幸いです。

 Silverlightと違って、WPFは完全に.NET Frameworkの機能なので、いままでのJavaユーザーにはまったくなじみのない技術であったと思います。しかし、XMLをベースとしたXAMLという標準的なUI記述言語を使っているので、.NETだけではなく多くの技術で活用できるものになっています。

 このeFaceはXAMLをJavaで扱うための素晴らしい機能を提供している無償のフレームワークなので、Javaプログラマーにとって便利なフレームワークとなることを願っています。

 本稿のサンプルコードはこちらからダウンロードできます。

@IT関連記事


J2EEと.NET連携の意義を考える
J2EEと.NET連携を考える(1)
J2EEと.NETは対立するものではなく共存するものだ。その連携の意義を考えるとともに、実際の連携例を3回にわたって解説する
Java Solution」フォーラム 2003/12/18
Javaシステムで.NETテクノロジを採用する理由とは?
事例研究:J2EEシステムへの.NET導入事例
 NECは大規模Javaシステムの1機能として.NETを採用した。希望する要件を満たすプラットフォームを選定していった結果だという
Insider.NET」フォーラム 2005/3/5
.NETでもEclipseを使ってみる
.NET Tools
 Javaの世界では絶大な人気を誇る開発環境Eclipseだが、C#用のプラグインを使えば.NETの開発も可能らしい。果たしてどの程度のものなのか、実際に試してみた

Insider.NET」フォーラム 2004/8/7
RIA/リッチクライアントの明日はどっちだ?
RIA in Developers Summit 2008 レポート
 
先日開催されたデブサミのセッションの中からRIA/リッチクライアントに関するものを中心にいくつかレポートする
リッチクライアント & 帳票」フ ォーラム 2008/2/20
ブラウザの限界を超える「今」のリッチコンテンツ
Webオーサリングツールを使ってみよう(番外編) これまで2回にわたって紹介したWebオーサリングツールを離れてリッチコンテンツを取り巻く「今」の状況に注目しよう
リッチクライアント & 帳票」フ ォーラム 2007/5/22
.NETを知らない人でも分かるSilverlight入門
「マイクロソフトの技術は.NETを知らないと学習できないのでは?」という読者にこそ読んでもらいたい、リッチクライアント技術Silverlightの入門連載。 もちろん、知っている人も大歓迎!

プロフィール
松原 晋啓(まつばら のぶあき)

SE、コンサルタント、エバンジェリストを経て、現在はソリューションスペシャリストとして活動。その傍ら、イベントや記事寄稿を通じてマイクロソフトのテクノロジーや製品の普及に努めている。
趣味は小学校から続けているバスケットボールで、4年前にチームを作り、現在もリーダーとして活動を行っている

1-2-3

 INDEX
  Page1
  プログラマーも“デザイン”を意識する時代
プログラマーのためのリッチクライアント技術とは?
WPFはプログラマー向けのリッチクライアント技術?
  Page2
  「eFace」でプログラマーは何ができるのか?
eFaceの開発はEclipseプラグインで無料でできる!
XAMLのデザインは別のツールを使うのがおススメ
Page3
  何はともあれ、eFaceをサンプルで試してみよう
リッチクライアント時代のJavaプログラマーのために




Java Solution全記事一覧



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間