「『足あとライブ!』に関するテクニカル・メモを書いてみた」を書いてみた。

| | コメント(2)

『足あとライブ!』に関するテクニカル・メモを書いてみた」に触発されて、Javaで書いてみました。

「足あとライブ!」に比べると機能は少ないですが、原理は実装してあります。

バイナリ
http://recompile.net/uploaded_files/comet-server-0.1-SNAPSHOT.zip
ソースコード
http://recompile.net/uploaded_files/comet-server-0.1-SNAPSHOT-src.zip

バイナリをダウンロード後、binフォルダにあるfootprint.batを実行してください。HTMLのサンプルはhtmlフォルダの中にあります。

さて、ここからはマニア向け。

これ、non-blocking I/Oの練習のために書きました。というのも、お恥かしい話、jettyやgrizzly、asyncwebなんかのソースを眺めていても、さっぱりわけがわからんという状態だったからです。NIOってむずかしいですよ。個々のAPIは理解できるのですが、実際のアプリケーションになると、パフォーマンスのためのチューニングとか、柔軟性のためのモジュール化とか、色々と工夫があって、理解しにくくなっています。なので、一回全体像を把握する必要があるかなと、自分で書いてみることにしたのです。

おかげで、non-blockingなサーバでやらなきゃいけないこと/やっていることがなんとなくつかめてきたかなって感じになりました。最近のウェブサーバは、ほとんどcomet対応を盛り込んできてますね。オープンソースの実装が色々とあるので、コードを眺めていこうかなっておもってます。

さて、資料が少ないNIOについてですが、今回参考にしたページなんかを紹介します。

とっかかりとしては、artonさんの記事がお勧めです。
http://codezine.jp/a/article/aid/358.aspx

NutshellにNIO本があります。コードが多めで読みやすいです。

Java Nio
Java NioRon Hitchens

Oreilly & Associates Inc 2002-08-15
売り上げランキング : 12357
おすすめ平均star


Amazonで詳しく見る
by G-Tools

grizzlyの中の人のブログはNIOについて濃い記事がいっぱいです。
http://weblogs.java.net/blog/jfarcand/archive/2006/05/tricks_and_tips_1.html
http://weblogs.java.net/blog/jfarcand/archive/2006/06/tricks_and_tips.html
http://weblogs.java.net/blog/jfarcand/archive/2006/07/tricks_and_tips_3.html
http://weblogs.java.net/blog/jfarcand/archive/2006/07/tricks_and_tips_4.html
http://weblogs.java.net/blog/jfarcand/archive/2006/09/tricks_and_tips_2.html

コメント(2)

 さっそくですね。"non-blocking I/O"はとても重要な概念で、一度はこうやって「自分のものにしておく」必要がありますおよね。スレッドとかプロセスをたくさん使うプログラムの中には、ちゃんと"non-blocking I/O"を理解した上で、そうしているのか疑問に思えるケースが良くあります。

takai :

コメントありがとうございます。

cometは目下、サーバでの対応がはじまったばかりですので、一般的なサービスに組み込まれるようになるまで、しばらくはかかるかと思います。

そのときは、こうした低水準の話は意識しなくても済むようになっているのでしょうが、とても良い勉強になりました。

コメントする

著者について

高井直人
高井 直人
takai@recompile.net

ソフトウェアエンジニア。1977年横浜生まれ。大学在学中からネットワークや情報技術にたずさわる。Web制作会社などを経て、現在はシステムインテグレータに勤務。エンタープライズRubyをテーマに社内標準の策定などに従事している。

タグクラウド

ウェブページ

Powered by Movable Type 4.1-en-release-26-r1141-20080104