• ベストアンサー

JAVA: プログラム間の通信について

JAVA初心者の者ですが、実行可能なプログラム A, Bの2つがあるとして、 プログラムAを実行した後、 プログラムAの動作中にプログラムBを実行して、動作中のAの変数にアクセスしたり、 Aの関数を実行する事ってできないでしょうか? 調べていても中々出ないので質問させて頂きました。 すみませんが、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#212058
noname#212058
回答No.1

別々のプログラム間でデータのやり取りをすることを、『プロセス間通信』と言います。JAVA で『プロセス間通信』をするには、ソケット通信 か RMI を使用する方法が一般的です。 ソケット通信 か RMI もかなり複雑なプログラムになりますので、初心者には厳しいかもしれません。実のところ、『プロセス間通信』 をしないですむように、プログラムを分けないで作ることが、最も簡単な解決方法だったりします。

regorugo
質問者

お礼

早速の回答ありがとうございます。 ソケット通信、RMI、・・・少し調べてみましたが、難しそうですね。(汗) ソケット通信を少し勉強しながら、何とかプログラムを分けないで作ってみようと頑張ってみます。ありがとうございました。^^

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

RMI通信をお勧めします。VBでいうdcomのように出来ます。 RMIサーバーを立ち上げてしまえばアクセスするコードは普通のメソッドと同じように出来ます。

regorugo
質問者

お礼

回答ありがとうございます。 RMI・・・かなり難しそうですが、詳しい人からやり方を聞いてみようと思います。 ありがとうございました。^^

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 関数を使ったプログラムについてなのですが・・・

    ・変数a,bの内容を入れ換える処理を関数を用いて実行するためのプログラム と ・変数a,bを与えたときa+bとa-bを計算する処理を関数を用いて行い、和と差を表示させるためのプログラム はどう作ればいいか分かりません…。 教えてください。

  • プログラムのことで質問です。言語はjavaスクリプトです。

    プログラムのことで質問です。言語はjavaスクリプトです。 ある動作をfor文で繰り返します。 for文の中にifがはいっていて、ある範囲の中はその動作をしないようにしたいのです。 その範囲とは、ある変数1と変数2があり、変数1から変数1+変数2の中です。 変数1のみ除外なら簡単にできるのですが・・どのようにしたらこの動作ができるでしょうか?二時間悩んだのですがわかりません。 教えてください。よろしくお願いします。

  • javaのRMIについての質問:

    java初心者です。 個人的な理由でどうしてもRMIを使わなければならないのですが、 自分で調べてもどうしてもわからないので質問します。 RMIで、1つのプログラムにクライアントとサーバーの両方の機能を持たせる事は可能でしょうか? 2つのプログラムA, Bがあるとします。(Aはmainメソッドを持つ最初に実行するプログラム。) A, BでRMI通信をしたいのですが、 (1).まずAがクライアント、Bがサーバーとして、 AはBのメソッドをRMIで呼び出します。その後、 (2).Bのメソッド内で条件判断をして、ある条件に合致した時のみ (Bがクライアント、Aがサーバーとして)B内でAのメソッドを呼び、 動作中のAのメソッドを使う という事はできますでしょうか? 一応自分で作ってみたのですが、(1)は上手くいき、(2)のAのサーバーから動作中のAのメソッドを 呼び出そうとすると、エラーが出てしまいます。 説明が上手くできなくて申し訳ないのですが、どうか宜しくお願い致します。

    • ベストアンサー
    • Java
  • 別ファイルの変数を呼び出したいのですが?

    初めて質問させて頂くPHP初心者の者です。 例えば、 (a.php)というファイル内で導き出された変数の値($a)を、(b.php)というファイル内に呼び出したいのですが、関数等を利用して呼び出す事は出来るでしょうか? -----a.php------------------------- <?php $a=xxxx; //導き出された変数$a(の値) ?> ----------------------------------- -----b.php------------------------- <?php $a=△△△△; //このファイル内で変数$a(の値)を呼び出したい ?> ------------------------------------ よろしくお願い致します

    • ベストアンサー
    • PHP
  • JAVAアプレットとIIS6.0について

    おせわになります。 JAVAアプレット初心者です。 現在、JAVAアプレットにて、テキストファイルを読込むプログラムを作成しており、このプログラムをIIS5.0上で実行すると正常に動作するのですが、それをIIS6.0上で実行すると、正常に動作せず、JAVAアプレット実行中に停止してしまいます。 アプレットビュアーで見たところ、最後にInputStreamReader()関数で引っかかってしまっている様なのですが、IIS6.0の場合なにか特別な設定が必要なのでしょうか? ご存知の方がいらっしゃいましたら、お助け下さい。 宜しく御願い致します。

    • ベストアンサー
    • Java
  • Javaプログラム同士のプロセス間通信について

    Java初心者です。 デーモン化したJavaプログラムとJavaサーブレット間のプロセス間通信を 行いたいと思っていますがどのようにしたものか悩み中です。 ○デーモン化したJavaプログラムは、 1、あるポートからSocket通信でデータを受信し、受信したデータをDBに格納する 2、クライアントからの要求で1で保存したデータを加工して送信 ○サーブレットプログラムでは、 上記のデーモン化プログラムの設定等をブラウザ上から変更できるようにしたいと考えています。 設定とは、例えば受信したデータを全てDBに保存せずに ブラウザから条件を設定できてフィルターするような動作に変更できたり、 また、デーモン化プログラムの動作をブラウザ上から停止、開始できるようにしたいのです。 上記の様な構成の場合にプロセス間通信をする必要があると思いますが、 どの様なプロセス間通信を使えばいいのか悩んでいます。 ほんとうは上記の様な2つのプログラムを1つのプログラムで出来ればいいなぁ~と考えているのですが、、 実現方法が判りません。。 なにか名案はございませんでしょうか? わかりづらい説明でもうしわけございません。 参考になるかわかりませんが、イメージ図を、 <イメージ図> デ  data   開  data    ク ー --------> 発 -------->  ラ タ        中         イ 鯖        鯖         アント          ↑          |          |設定変更          |       管          └--------- 理                   者 よろしくおねがいします。

    • ベストアンサー
    • Java
  • プログラムの手法について

    プログラム初心者です。同僚の書いたVBAのプログラムを勉強のために見ていました。彼のプログラムは X=-1 関数1 ・・・・・関数の処理 X=1 関数1終 もしX=1じゃなければエラー処理へ。 もしX=1ならばプログラムは続く。 といった内容です。 関数直前で変数に値を持たして、関数脱出後にその変数が変わっていなければエラー処理へといった手法はよく使われるんでしょうか?自分はそんな処理の仕方をおもったことすらなかったので、そんな手法があるんだ。それって一般的なのかな?と思って質問させて頂きました。お願いいたします。

  • 物理数値シミュレーションの結合と通信

     数値シミュレーションの技法に関する質問です。(以下、長文ですみません)  2つの数値計算プログラムがあり、それぞれ単独で、まあ正常に動作しています。その2つのプログラムは別の例えで言うと、プログラムAは空、プログラムBは海というものに対応しており、海面という境界では通信する必要がある、というようなものです。プログラムA,Bを何とか結合して全体を含んだプログラムCを作りあげるのが一般的なのかもしれませんが、プログラムA、Bについてそれぞれにあまり手を加えず、通信ができる仕組み(ファイル入出力で対応など)を少しだけ付加してプロセスとしては別々に実行できないかなと考えています。A,Bともに時間的に変化していくので、境界面での通信もそのつど計算する必要があるのです。  まず、Aを実行して、あるところで一旦休止して、Bが動き始め、あるところで休止し、またAが動く...というようなことなのかなと思いますが。この場合、A,Bが交互に動くという意味で同時性がないように思われますが、Aが終わったあと、Bが後ろから追いかけてくるというイメージです。1つのアイディアですが、AからBを呼び出すことができれば、AがBを呼び出し、実行している間、Aは待っており、Bが終わったらまたAが動き出す(そのあとまたBが呼び出される)という方法です。  2つのプログラムは変数名が同じだったりするので変数管理が大変で間違いそうなのでできればソースを編集して結合するのはやりたくないと思っています。  Linuxのシェルスクリプトだったら何でもできるというのかもしれませんが、私は主にWindowsユーザで言語はFortran, シェルというよりバッチ(バッシュよりバッチ)という環境で使っています。(Fortran90以降はモジュールという考え方も出ているようですが、どんなものかなと思いますが。) 何かアイディアがあれば教えて頂きたいのですが。よろしくお願いします。 ※今回の質問はプログラム2つでしたが、うまくいったら3つ4つとなっていく可能性ありです。 ※適当なカテゴリが見つからず、Cのユーザだったらシステムのキモの部分から何でも知っているはずなので、このカテゴリにアップしました。

  • java初心者です。

    java初心者です。 イクリプスを使って、以下文のようなプログラムを実行しようとしたのですが、何度も「エディターにはメイン型が含まれていません」という画面が出てきて実行してくれません。 分かりやすい解決策をお待ちしています。よろしくおねがいします。 1class Sample1 2{ 3public static void main(String args[]) 4{ 5int num1=2; 6int num2=3; 7int sum =num1+num2 8 9System.out.prtintln("変数num1の値は"+num1+"です。"); 10System.out.prtintln("変数num2の値は"+num2+"です。"); 11System.out.prtintln("num1+num2の値は"+sum+"です。"); 12 13num1= num1+1; 14 15System.out.prtintln("変数num1の値に1をたすと"+num1+"です。"); 16} 17} 以上

  • C++のcin命令について

     私は、C++言語を勉強している初心者です。  ある日、C++言語では、   「cin >> a >> b >> c;」と書くと、プログラムを実行したときに、   「3 4 5」と入力すれば、変数aには 3 が、変数bには 4 が、変数cには 5 が代入されるということを知りました。  けど、今まで私がC言語を使う際に使っていた、   「scanf("%d,%d,%d",&a,&b,&c);」という文では、プログラムを実行したときに、   「3,4,5」と入力すれば、変数aには 3 が、変数bには 4 が、変数cには 5 が代入されるというように、3つの数字の間にカンマを入れて数を代入するというプログラムを作りたいのですが、どうやってもcin命令では再現できません。  超初心な質問ですが、わかる方がいらっしゃったら、やり方を教えてください。