
分散オブジェクト環境を学ぶ
連載:HORBと遊ぼう(2)
分散オブジェクトを体験しよう!
萩本順三HORB Openマネージャ
株式会社豆蔵
2000/11/28
(2) HORBのインスタンス管理 |
■Javaのインスタンス管理
皆さん、「インスタンス」というオブジェクトの用語を知っていますか? インスタンスとは、プログラム実行時に、クラスからJavaのnew演算子で生成されるオブジェクトのことです。リスト3とリスト4を見てください。
リスト3のTest2.javaは、Test2インスタンスごとに管理されるname属性(この属性のことをインスタンス属性と呼びます)を持っています。
リスト4のLocalInstanceTestは、Test2クラスから2つのインスタンスを生成(new)して、test1変数とtest2変数で参照しています。そしてそれぞれのインスタンスにsetNameメソッドを呼び出して、インスタンスごとに個別に管理されているname属性を変更しています。
public class Test2{ |
リスト3 Test2.java
|
public class LocalInstanceTest{ |
リスト4 LocalInstanceTest.java
|
このプログラムの実行結果は次のようになります。
c:\examples\step2>java
LocalInstanceTest |
そして、そのイメージ図は、図7のとおりです
![]() |
図7 Javaローカルなインスタンスの世界 |
どうですか、それぞれのインスタンスに属性とメソッドが管理されているのがお分かりになりますか?
ソースはここからダウンロードしてください。
■HORBによるリモートオブジェクトのインスタンス管理
では、次は分散オブジェクトにおけるリモートなオブジェクトのインスタンス管理はどうなっているのか説明しましょう。とはいっても、Javaのインスタンスの意味が分かる方には、簡単なことですので心配しないでください。
リスト5を見てください。RemoteInstanceTestは、Test2_Proxyインスタンスを2つ生成してtest1変数とtest2変数を使って2つのTest2_Proxyインスタンスを参照しています。このときTest_Proxyインスタンスは遠くのマシンに存在するかもしれないTestインスタンスの代理オブジェクトとして働いてくれます。つまり、test1変数とtest2変数は、2つのTestインスタンスをリモートで参照しているという役割を果たしているのです(コラム参照)。
public class RemoteInstanceTest{ |
リスト5 RemoteInstanceTest.java |
では、さっそくコンパイル・実行して確認してみましょう。
(1)コンパイル
コンパイル実行は、まずTest2.javaをhorbcによりコンパイルし、次に、RemoteInstanceTest.javaをjavacによりコンパイルしてください。horbcの際に、private変数はコピーできないというワーニングがでますが、これはネットワーク間でオブジェクトをコピーする際にだけ関係するものですので、このワーニングが表示されても気にしないでください。
|
(2)実行
まず、サーバ側でHORBを立ち上げます。サーバ名は、MyServerとします。
|
次に、クライアントマシンから RemoteInstanceTestを実行します。
|
最後に、HORBを立ち上げたサーバの出力結果を見てください。以下のように、2つのインスタンスが作成され、それぞれにインスタンス属性のnameを管理しているのが分かるでしょう。
|
図8にイメージ図を示します。いかがですか、test1変数とtest2変数は、2つのTestインスタンスをリモートで参照していることがお分かりでしょうか? このようにTest2_Proxyのようなhorbcで生成された代理オブジェクトは黒衣となって、実際のTestインスタンスをそれぞれに参照することができるのです。
![]() |
図8 HORBによるリモートインスタンスの管理 |
今回は、この辺でおしまいにしておきましょう。この連載では、今後HORBの新規開発内容や、開発事例などや、HORBの目指す分散オブジェクトの将来像についても語っていければと思います。
皆さんからの内容についてのご要望にもおこたえしていきたいと思います。Javaフォーラムの掲示板にどんどん書き込んでください。
ところで、2001年3月2日(金)にHORBの一大イベント「第4回 HORBシンポジウム」が開催されます。 特に、企業での実例や、学生の方々からのフレッシュな 寄稿をお待ちしていますので、みなさんもチャレンジし てみてはいかがでしょうか。
では、次回をどうぞお楽しみに!!
|
![]() |
Index | |
第2回 分散オブジェクトを体験しよう! | |
(1)
HORBが動作する仕組み HORBを使ったアプリケーションを動かす準備 ネットワーク環境で動かす準備 さあ、実行してみよう! 頑張る黒衣たち 代理オブジェクトのコンストラクタ引数 メッセージをやり取りするまでの流れ |
|
![]() |
(2)
HORBのインスタンス管理 Javaのインスタンス管理 HORBによるリモートオブジェクトのインスタンス管理 |
![]() |
連載記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
![]() |
|
|
|
![]() |