SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaで軽快に使える「軽量フレームワーク」特集

Javaで軽快に使える「軽量フレームワーク」特集
~サーバーサイドとクライアントサイドのどちらでも対応できるEcho(2)

第24回

  • X ポスト
  • このエントリーをはてなブックマークに追加

TaskQueueHandleの使い方

 では、プッシュ配信の流れを見てみましょう。ここでは、アクセスを開始すると、makeContentメソッド内でTaskQueueHandleインスタンスが作成されます。TaskQueueHandleは、ApplicationInstanceクラスの「createTaskQueue」というメソッドで作成することができます。

final ApplicationInstance app = this;
if (taskQueue == null)
    taskQueue = app.createTaskQueue();

 作成されたTaskQueueHandleは、runメソッド内でカウンターを増やす処理の後、実行されています。この部分です。

while (true) {
    try {
        Thread.sleep(1000);
        counter++;
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    app.enqueueTask(taskQueue, new Runnable() {
        public void run() {
            showDialog("Counter: " + counter);
        }
    });
}

 Thread.sleepでいって時間処理を停止した後、counterの値を増やします。そして、「enqueueTask」というメソッドを呼び出しています。これは、サーバー側で実行する処理をサーバー側で実行するキューに登録するためのものです。このenqueueTaskでは、TaskQueueHandleとRunnableを引数に渡します。このRuunableに実行する処理を用意しておきます。ここでは、showDialogでメッセージを表示させているだけですが、これにより画面の表示が更新されていたのです。

 enqueueTaskは、Runnableの処理を実行し、次にenqueueTaskが実行されるまでその接続を保持し続けます。手動でこの接続を切りたければ、「removeTaskQueue」というメソッドを使い、TaskQueueHandleをサーバー側のキューから取り除きます。

 実際、このenqueueTaskによってプッシュ配信されていることを確認するため、★部分の行(app.removeTaskQueue(taskQueue);)のコメントを解除してみましょう。これにより、Runnaleの処理を実行した後、removeTaskQueueでプッシュ配信を停止するようになります。

 やってみると分かることですが、処理実行後にremoveTaskQueueするようになると、ダイアログの表示更新がうまく機能しなくなります。また何度かダイアログのクローズボックスをクリックすると表示がそのたびに更新され、最後にダイアログが消えます。消えてしまうと、いくら待っても表示されなくなります。サーバー側で動いているはずのスレッド処理が機能しなくなっていることがよく分かるでしょう。

まとめ

 今回は、GUIコンポーネント、テーブルとモデル・レンダラーの関係、サーバーからのプッシュ配信といったものについて説明しました。Echoのすべてではありませんが、主な機能についてはざっと紹介できたのではないかと思います。

 このEchoのようなプレゼンテーション層に絞ったフレームワークは、サーバーサイド言語とJavaScriptが複雑に絡み合った昨今のWebページを非常にすっきりと整理して開発できるようにしてくれます。中でもEchoは、使用言語がJavaであり、Java以外に何1つ必要としないという点、またいざとなればクライアント側で同じものを実装できるという点がその他のフレームワーク類と違う大きな特徴となっています。ドキュメント(特に日本語による)がまだまだ少ないため、使いこなすのは大変かもしれませんが、一度触ってみてください。「全部Javaだけで書く」というのは、Javaプログラマにとっては非常に大きな魅力ですよ!

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5447 2010/09/24 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング