チュートリアルC2: 分散オブジェクト技術の最近 参加者: 20人程度 --- アンケート  ネットワークで苦労してるか? 多い。  Javaやってるか? 多い。  仕事でJavaやってるか? すこし少ない。 <よだん> いなさのしみずや?15分くらい。新幹線の南口にいっけん。うなぎがおいしいところが ある。うなぎをくって、せいりょくつけてねとおくさんにいわれたとか。 ---- 平野さんの紹介。並列分散が専門。趣味はフリーソフトウエア。 大学生のときから、30まで大学にいたが、仕事をよくしていた。 6800, 6805, 68000と数十システムのソフトウエアの開発を手がけた。 HORBで組込みに戻ってきたが、昔やってた時代と、組込みは大して変わっていない印象を うけた。 ---- 今日の話の紹介。 + HORB + ネットワーク技術の歴史 + 最近の傾向 CORBA, Agent, XML, SOAP, 携帯電話のネットワーク,P2P これらは一見組込みに関係ないように見えるが、最近は融合してる。 ---- C, C++ -> Java 組込みシステムやは、みなさん苦労してる。デバッグばっかり。何とかしたい。 BIT紙で、C リッチー、C++ シュトラウストラップ、Java ゴスリングの対談。 非常におもしろい。それぞれ、設計された時代が違う。 で、組込みでバグがでるところは決まっている。それを解決するための言語が必要。 -> Java バグがでない言語はJavaである。 みんな、Javaはデバッグしなくて楽だといっている。 Javaはネットワーク越しにversion upできる。VxWorksよりも楽。セキュリティを保った ままできる。 方法論を取り入れることが簡単。 ---- 組込み技術 大きな流れ。Javaアクセラレータがでてきた。組込みで使えるように。Jstart, じゃぜる, etc... chipのなかにJavaアクセラレータを組み込む。ハードがかなりやってくれる。 ハードやさんにきくと、1mm角に入っちゃうから、コスト的にはあまり問題無い。 Docomoの携帯だと今年中には入るという話もある。 ITRON(30%) -> JTRON (30%?)くらいのシェア。 携帯電話はJava搭載。 Javaはネットワークに強い。 C, C++, Javaの共存はJTRONで簡単にできる。 ---- ネットワーク時代は動いている。 いまは、インターネット=パソコンネットワーク これからは、インターネット=携帯、家電、組込み、自動車等のネットワークにも。 IPv6により。 ---- 私たちのゴール、新しいアプリケーション ネットワークで結ばれた複数のコンピュータを、一つのプログラムで、簡単に制御したい。 あたかも一個のコンピュータ上に載っているように、見えるようにしたい。 WinでもLinuxでもなんでも、同じように制御したい。 そのために、HORB, CORBA, RMI etc... ---- ソケット: 今までのスタイルの難しさ おまじないがながい。 プロトコル設計をしなきゃいけない。(コマンドはなにで、レスポンスはどう、とか) ネットワークのプログラミングは結構難しい。 ---- HORBとはなにか。 Java言語で、ネットワーク上の複数のコンピュータをあたかも一つの巨大なマシーンに 見えるようにするための技術。(分散object技術) ---- HORBスタイルはこんなに簡単。P2Pも簡単。 /* ふつうのプログラム */ class Hello { String greetings () { return "Hello"; } } /* 魔法の呪文一つでリモートに */ Hello_Proxy remote = new Hello_proxy ("horb://www.aist.go.jp/"); remote.greetings (); 呪文一つでネットワーク越しにObjectを作ることができる。 remoteのオブジェクトを簡単に呼び出すことができる。 ネットワークの処理は、HORBに自動生成させる。 高田先生: プロキシーだけつくられるのですか? : 両方つくられる。remoteのobjectも、proxyも作られる ---- いままでつくれなかった、ネットワークアプリケーションが作れる 従来のやりかたの、1/100くらいの記述量になる。 バグも減る。開発速度も速い。量的な変化よりも、質的な変化がおきる。 いままでつくれなかったような、アプリケーションでもつくれる。 HORBシンポで開発事例が発表される。1/100はうそではない。 --- HORBネットワークコンピューティングの空飛ぶ絨毯 他機種で実用可能なORB Javaで分散実行 (C, C++, Rubyで実装中) 使い易い。 CORBAを含み、高機能。 オープンソースである。 --- 性能。 Sun RMIやVisiBrokerより約2倍高速。 HORBはソケットより、2割増しくらいのオーパヘッドですむ。 組込み向けの分散object技術。ABDM。呪文? ---- CORBAのプログラム例 IDLを書かなければいけない。 記述量が多くなる。難しい。 ---- HORBだと、そのまま実行可能。 P2Pが最近重要。HORBだとP2Pも簡単。 ---- デモ。 ネットワークゲーム。JavaとHORBで書かれている。 相当短期間で開発できている。 --- 組込み向け機能 HORBは組込みで使えるのか? どこが組込みに向いているのか? + ネットワークを使用するThread管理をHORBが自動的にやってくれる 複数のクライアントにサービスするための複雑な処理を書かなくてよい。 + システムとしてプライオリティを守って欲しい。そういうことができる。  プライオリティ伝搬。クライアントのプライオリティをサーバにマッピングすること  ができる。優先度逆転を防げる。 + 非同期のリモートメソッド呼び出しも可能 - タイムアウト付き - 結果のもらい方として、ポーリング、コールバックでも。 + スレッドプールもつくれる。 --- Q: 性能が2倍違うというのは。 スレッド生成と、消滅のコストの差なのか? A: No. 接続後の通信速度のgraphである。 --- HORBファミリー + free HORB + HORB Pro ミッションクリティカル β版が只ででてる。 + iHORB 岡山理科大 iHORBは3KB程度で、すごく小さい。 + uHORB 情報家電、組込み等で使えるものを。計画への参加者募集中。 --- ファミリー化 firewall対応。 CORBA対応。 セキュリティ 電子署名 etc... SOAPを開発中。 C++は動きつつある感じ。 Q: ダイナミックにコンパイルするのか? A: プログラムはスタティックにコンパイルする。 Q: 動かしたいマシーンは、クライアントに予め置いておかなきゃいけないのか? YES Javaは一度コンパイルしたらどこでも動くから、あまり問題じゃないけれども。 --- HORBの応用例 + 基幹系システム構築の基盤 - Sanfrancisco project InConcert ワークフローシステム + i-modeの携帯電話 desktop applicationも多い。Agentとか。 組込み? スーパーカミオカンデの計測と制御の一部に使用されている。 ニュートリノの質量によって、宇宙は重ければ、収縮する。軽ければ、膨張? KEK トリスタン パリティのやぶれの実験にも使われている。 ---- HORB Open 個人ベースのコンソーシアムみたいなのも。 過去4回、HORBシンポをやってる --- あなたも、HORB openへ。 www.horbopen.org horb-j MLへどうぞ。 ---- 折り返し: ネットワーク技術の流れと最近の動向。 --- ネットワーク技術の歴史。 --- XeroxのイーサネットLANの発明 メトカーフ ? 世界初のパーソナルコンピュータ。Xerox Alto (CPU 6MHz memory 128KB) 2.94Mbps->10Mbps IEEE802.3になってる。 --- WAN + 核攻撃に耐えるネットワーク? + 大陸横断の必要性、低レイテンシ、低スループット。 --- 1969 -> ARPA net ラリーロバーツ UCSB, UCLA, SRI, UTAH 1981 -> TCP/IPの発明 --- 1992 WWWの発明 CERNのリー、NCSAのアンドリーセンがMOSAIC 1995 Win95にブラウザが搭載された。 --- 分散プログラミングの歴史。 TCP/IPソケットが発明(BSD) しかし、TCP/IPソケットは難しい。 --- 分散object指向言語 -> 失敗ばかり 分散OS(Mach, Chorus, Amoeba) -> 普及は難しい。 --- RPCもあんまり使われていない。 --- CORBA 産業界の現実的な努力 C, C++, Cobol用のobject風のRPC IDLと多様なサービス。 でかい、重い、難しいとよく言われる。 MSはCOM+を提供してやってる。 --- 1995 Java発表。 主力プログラミング言語へ。しかし、分散言語ではなかった。 1995 HORBが。 96 Sun RMI, Voyager 97 Java用CORBAが多数 長く研究段階だった、ORB技術が使えるようになった。 --- 話だけでなく、今日使えるものが提供された。 Windows, Mac clientをUNIXサーバでビジネスに。 簡単で機能が強力 --- 非定型なappはORB CORBAは50製品くらいある。 --- 組込み向けCORBA + Minmum CORBA IDLはサポート。それでも結構大きい。リアルタイム性無し。 + Realtime CORBA client->serverからpri伝搬、スレッドブーリング、リアルタイムスケジューリング。 Highlander VisiVrokerなんかがある。 ---- XMLの流行と分散object 組込みもXML。組込用のXML(パーサ)を作ってるところもある。 ---- エージェントブームもあった? 1991 KQML 分散人工知能の研究用言語 1992 telescript 1997 Java agent研究大ブーム ほとんど失敗 ここからXMLブームへ。 ---- XMLブーム第1期。B2C失敗。 たとえば、一番安いハワイ旅行を探してこい。 XMLだと、いろんな要素で検索できるのだが、お店側の協力がなくてできない。 --- XMLブーム第2期。B2B 材料仕入れ最も安い会社から購買したい。 e-market siteの流行。XMLによる購買情報記述の共通化。 --- Webサービス ひとがみるのがWeb 機械がみるのがWebサービス --- B2BをWebサービスで SOAP (XMLオブジェクト間通信) WSDL (Webサービス定義言語) --- SOAP Simple Object Access Protocol 分散オブジェクト+XML --- 組込み向けでもSOAP UDDI --- MSの.NET, ASP plathome C#によるWeb serviceの提供。 .NET framework --- .NET C#で書くと、VBのクライアントから直接呼出したりすることができる。 --- SOAPの性能は非常に低い。 HORBにくらべてラウンドトリップは150倍程度遅い。 --- 携帯電話の世界 ネットワーク機能をフルに使う + 電子財布をdocomoは狙っている + bluetoothによる小エリア情報発信 --- 携帯電話のネットワーク iアプリ, Au, j-phone 小さなJava処理系 --- i appli + httpのみではきつい、分散オブジェクトが欲しい。 + iHORBだと3KB --- 結論 Send/Recieveはもうやめよう。 分散objectで楽をしよう。 いろいろなプロトコルをサポートする組込用ネットワークのプラットホームをつくろう。 --- Q: Javaを組込用とに応用するのに、JavaはGCがあるから。 A: GCがrealtime性能があるやつもある。 Q: IOをたたく場所は結局でてくる。 A: IOもたたける。 Q: Cで結局書かなければいけないものがある。 A: そういう実装もありでしょう。組込みで使えるような組込み向けclass libがある。 pure javaでIO access等ができるようになってくるだろう。 Q: HORBをmiddle wareと考えると、したにethernetのプロトコルがある。  セキュリティが一番気にになる。TCP/IPのスタックを選択する必要があったりする。 A: 良い質問です。Etherとか、TCPには全く依存しない。違うネットワーク上を通して  使える。セキュリティは幅広くサポートしてる。SSL,ACL,kerberos,電子署名,公開鍵  暗号も使用できる。 --- 何でも出来ると言っているが、苦労してる。 組込み向けに、いろいろやることがある。 みなさんと、open sourceでやりたいと思っている。