• ベストアンサー

アプレットからサーバ側のプログラムを起動したいのですが…

仕事でJavaを使うことになったのですが、プロジェクト員一同Java初心者で、必死にJavaを勉強していますが、以下のことで困っています。申し訳ありません。助けてください。 UNIXサーバ側の設定とかをいじるプログラムがあるのですが、それをアプレットにして、SEさんがリモートからでも操作出来るようにしろ、と言われました。 とりあえず、Javaアプレットからサーバ側(アプレットのクラスが置いてあるのと同じマシン)のCプログラムを起動し、その結果を受け取るようにしたいのですが、Java経験者に相談したら「アプレットにはセキュリティ上の問題があるのでCGIかServletを使わないと出来ない」と言われました。 では…とServletの勉強を初め、サーバー側にServletEngineをいれてみたのですが、 ServletはHTTPポートと違うポート(8000番とか)を開けてそこにアクセスしなくてはいけないようにみえます。それならクライアント側プログラムをアプレットにし、サーバ側プログラムとSocket通信で結び、サーバ側プログラムがCプログラムを起動、としたほうが楽そうですが、ひとつしかポートを開きたくないと言われたのです。 もしかして「アプレット+Servlet が アプレット+CGI相当」じゃなく「Servlet が アプレット+CGI相当」なのでServlet用のポートだけ開けとけばいいとかいうことでしょうか?  とか思っていたら、JNIでC言語のメソッドをJavaメソッド扱いするとかいう話も小耳に挟みました。それでできるのかしら? ・webポートだけを開いて ・サーバ側のCプログラムを起動してその結果を受け取る ・クライアントのマシンにあらかじめインストールしなくても、ブラウザからアクセスすると操作が対話的に出来るような ものを簡単に作ろうとしたら、一体何を勉強するべきなのでしょうか…。 Applet+CGI? Applet+Servlet? RMI? JNI…? 助けてください…(TT)

noname#2875
noname#2875
  • Java
  • 回答数5
  • ありがとう数14

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

  • ベストアンサー
  • hogehoe
  • ベストアンサー率60% (3/5)
回答No.3

ちゃんと、設定すればwebポートだけ開けられます。 Cのプログラムは、コマンドラインで動くものですか? コマンドラインで動作する時は、 サーブレットだけで、実装します。Cのプログラムは、RunTimeExec(だったかな)をしようして、コマンドを起動します。 Cのプログラムがライブラリーの時は、 RunTimeExecの変わりにJNIを使用します。 アプレットは、使用しない方が、いいでしょう。

noname#2875
質問者

お礼

ありがとうございます。 ServletEngineのインストールと設定時にポート80を指定すればよいのでしょうか?やってみます。(^ ^) CはライブラリなのでRuntime.getRuntime().execではなくJNIを使ったほうがよいのですね…。JNIの勉強もしなければ…(^_^;) アプレット使用しないほうがよいのはなぜですか…?クライアントに表示側はGUI画面を持っているので、GUIイメージはアプレットにしたほうがよいのかと思ったのですが、ServletにGUIの表示させたほうがいいのでしょうか? ServletでGUIは出せないのかと何故か思いこんでたのですが、違うのでしょうか…。 あ、サーバ側にGUIおけるのだったら、ひょっとしてサーバ側にSwing置いたらSwing使った画面とかにしても大丈夫?…そんなわけないか。クライアント側はどーやって解釈するのだ(一人つっこみ) なんか頑張ってみます…。

その他の回答 (4)

  • jiri_t
  • ベストアンサー率25% (1/4)
回答No.5

nobi2000さんのarataさんへのお礼に関して一言。 ちょっと認識がずれていませんか? もともとGUIを表示するのはClient(Applet)のはず だからservletでGUIは必要無いと思うのですが... nobi2000さんの質問から察するに appletから設定のためのコマンドをservletに送る(applet-servlet通信) servletがCのプログラムを実行(Runtime.exec) servletが実行結果を受け取る appletがその情報を受け取り表示する と言う手順になりそうなのですが... 参考になれば幸いです

noname#2875
質問者

お礼

ありがとうございます。 自分がものすごく根本的に間違ってたことに気づいて恥ずかしいです。ご指摘ありがとうございます。(__) Servlet→Server側で動く Applet→Cliant側で動く とわかっているつもりで全然わかっていませんでした。 「servletでGUI」って サーバー側で「出せ!」と命令すれば、画像だけクライアント側に現れると解釈していたということですよね。 NO.#3 hogehoeさんのお答えを見て、 (hogehoeさんは「HTMLとJavaScriptで代用すればよい」という意味で「Appletを使わないほうが」とおっしゃったのに) 「Appletを使わなくてもGUI出せるからApplet使わないほうが」の意と勘違いしたのですが、 arataさんに教えていただいたURLをみて 先ほどの(Appletを使わなくてもGUI出せるから~)解釈は勘違いでは?とうすうす気づいたのに自信が持てなかったので書いたのですが、考えが足りない発言でした。 でもその勘違いを丁寧に正してくださって嬉しいです。 参考の手順をみてもやもやしていた気持ちがクリアになりました。 ありがとうございました!

  • hogehoe
  • ベストアンサー率60% (3/5)
回答No.4

GUIですが、 HTMLとJavaScriptで実現できそうなので アプレットを使用する時は、NNとIEでは、動作が多少違うので、 Java-PlugInをブラウザーに組み込まないといけません。

noname#2875
質問者

お礼

なるほど!ありがとうございました。 自分で勝手に変な解釈して勝手に混乱してたみたいです。ごめんなさい。 そうか、ダイアログとかだすくらいならJavaScriptで実現すれば、Servletに作らせるHTML文の中にJavaScriptのコードを組み込めばいいのですものね…。そういう使い方があるのですね! お答えありがとうございました(^ ^)

  • vcmshiro
  • ベストアンサー率44% (32/72)
回答No.2

私もJAVAアプレット&CGIで色々やっています。 今回のご質問では、どこまで何をするか?によるかと思います。 リアルに近い形でサーバとクライアントで情報のやり取りをやるのであれば、サーブレットを勉強すれば良いかと思いますが。。。どうですか? ご存じの通り、サーブレットはサーバー側で起動するアプレットの様なものですのでサーバー側で色々設定ができる様になっていて、他のソフトウエアとの親和性もアプレットに比べて緩和されています。 アプレットは、クライアントマシンでのセキュリティーに大きく依存してしまうので色々できない事があります。 私は今、JAVAで占いやアンケートなどを行わせてその結果をサーバに保存だけしたいので、アプレット&CGIで色々やっています。 似たような悩みを最初は抱えておりましたが、CGIをC言語で開発しコンパイルした実行コードをサーバ上で動作させてしまうのが一番簡単では無いでしょうか? 但し、サーバーは自分で管理し設定しなければなりません。 そして、DLLなどで共通の動的ライブラリーも作ったり二重起動せずスレッドなどで対応できるソフトウエアにしておけば、メモリも少なく、起動も早いソフトになります。(その分デバックし難くなりますが・・・) ご参考まででした。

noname#2875
質問者

お礼

ありがとうございます。 CGIのほうが簡単ですか…。CGIのほうがいい気がしてきました。 サーバの管理設定はCGIを使ったときもServletを使ったときもいっしょですよね…?たぶん… 共通のライブラリ…? スレッド対応…?ってCGIってアクセスごとにプロセス立ちあがるのですよね…?ごめんなさい。なんかイメージがつかめませんでした。(TT)

  • arata
  • ベストアンサー率49% (139/279)
回答No.1

Applet、Servlet間の通信についてですが、下記のURLを参照してください。

参考URL:
http://www.t3.rim.or.jp/~yoko-k-h/java/servlet/programming/applet-servlet.html
noname#2875
質問者

お礼

ありがとうございます。 今みてみました。 これはTextAreaとかのGUI画面もつためにApplet、Servletの通信してるのですよね…?やっぱりServletではGUIだせないのでしょうね…。

関連するQ&A

  • アプレットのプログラムがコンパイルできません。

    import java.applet.Applet; import java.awt.*; public class Lesson1Applet extends Applet { public void init(){ this.add(new Lesson1("")); this.setLayout(null); this.resize(600,450); } } 上記のプログラムがコンパイルできません。 本の通りに作ってみたのですが、コンパイルが出来ず Servlet1118Applet.java:7: シンボルを解決できません。 シンボル: クラス Lesson1 場所 : Lesson1Applet の クラス this.add(new Lesson1("")); ^ という、エラーが出ます。 なぜコンパイル出来ないのか、わかる方がいましたら お返事お願いいたします。

    • ベストアンサー
    • Java
  • JAVAアプレットの仕組みについて

    HTMLに埋め込まれたJAVAアプレットが画像を表示するように記述されている場合、JAVAアプレットは画像をサーバーからダウンロードして表示しているんですよね? JAVAアプレットがサーバーからファイルをダウンロードできるように、 JAVAアプレットがサーバー上にファイルを作り出すこともできるのですか? 今、計算プログラムをダウンロードで配布して、実行して得られた計算結果を投稿してもらう仕組みを作っているのですが、 JAVAアプレットにサーバー上のファイルを操作する能力があるのなら、JAVAアプレットを読み込み実行するだけで配布と投稿の作業が一まとめにできてしまうと思いました。 JAVAアプレットはサーバー上のファイルをどこまで操作できるのでしょうか?

    • ベストアンサー
    • Java
  • アプレットを実行すると、×が表示され、Javaアプレットの読み込みに失敗しました。のメッセージが表示されます。

    Java JDK5をインストールしました。 C:\Program Files\Javaに jdk1.5.0_06 jre1.5.0_06 がインストールされています。 コンパイルは、PATHにC:\Program Files\Java\jdk1.5.0_06\binを追加すれば、できるようになりました。 Javaアプレットの読み込みに失敗しました。のメッセージが表示されます。 // 図形の表示 import java.applet.*; import java.awt.*; public class Test_0002 extends Applet{ public void paint(Graphics g){ g.fillOval(0, 0, 200, 100); } }

    • ベストアンサー
    • Java
  • アプレットがうまく動かない…

    javaを勉強しています。本を参考にして、下記のようなアプレットを書いたのですが、さらにその下のようなエラー(?)が表示されてしまって、画像が表示されません。もしこれだけの情報で見当がつきましたら、よろしくお願いします。 import java.applet.Applet; import java.awt.Graphics; import java.awt.Image; public class main extends Applet{ Image img; public void init(){ img = getImage(getDocumentBase(), "test.jpg"); } public void paint(Graphics g){ g.drawImage(img,0,0,this); } } java.lang.UnsupportedClassVersionError: main (Unsupported major.minor version 49 .0) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:537) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12 3) at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:157) at java.lang.ClassLoader.loadClass(ClassLoader.java:289) at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:123) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at sun.applet.AppletClassLoader.loadCode(AppletClassLoader.java:561) at sun.applet.AppletPanel.createApplet(AppletPanel.java:617) at sun.applet.AppletPanel.runLoader(AppletPanel.java:546) at sun.applet.AppletPanel.run(AppletPanel.java:298) at java.lang.Thread.run(Thread.java:534)

    • ベストアンサー
    • Java
  • Javaアプレットについて

    今、Javaを勉強中なのですが、Javaアプレットとは下記の様なブラウザ上で起動するもののことをいうんでしょうか? http://www.typing.sakura.ne.jp/sushida/ これはJavaアプレットに入るのでしょうか? また、CabosやiTunesはJavaアプレット?? 電化製品店で売ってるようなIEを経由しないタイピングソフト等はJavaアプレットではないですよね?

  • レンタルサーバでJAVAを起動させられませんか?

    JAVAアプリケーションをサーバに置き、クライアント側のJAVAアプレットと通信させたいのですが、レンタルサーバにFTPでJAVAアプリケーションをアップしましたが、起動させられません。 レンタルサーバで提供されているSSHでサーバにログインしましたが、「>JAVA アプリケーション名」では「command not found」のようなことを言われてしまいます。 何か方法はないのでしょうか? よろしくお願いします。

  • JavaScript &アプレット or JSPで開発か?

    現在のプログラム(Steel ファブリケイション CAD software=こ今後、SFCS)(http://www.bells3.com/tcsweb/tetu/gen.htm )、パラメータ(数字)を入れるだけで、内部CADプログラムで簡単に、ビル鉄骨の設計図が出来、そして、納入、出荷、在庫管理など、事務系systemまで、装備したSFCSです。質問ですが、Javaでsytem を作るにあって、javaスクリプト、javaアプレットがいいか、それとも、JSPがいいか?。JavaScripもアプレットも,クライアント側のブラウザーが解釈し、実行するが、正確には、クライアントがダウンロードしたクラスファイルをブラウザ上の JavaVM というJava実行プログラムが解釈して実行します。サーバーはクラスファイルを提供するだけで、処理は、クライアント側に依存します。JSPの場合は、 サーバ側でプログラムを実行してページを生成するので、サーバ側の豊富な資源を使えます。例えば携帯電話などのようなJavaの実行環境のない環境においても、HTMLさえ解釈できればJavaのテクノロジのメリットを享受できるという利点があります。HTMLさえ解釈できれば、Javaのテクノロジのメリットを享受できる。特徴:1:JSP はサーバが実行するプログラムである .2:<% %> タグを用いることで、HTMLの中にプログラムを埋め込むことができる 。3:CGI と異なり、プロセス起動のオーバーヘッドがない 。(オーバーヘッドの説明=CGIはアクセスがあるたびにサーバが新しいプロセスを起動するので、オーバーヘッドとリソースの消費によるパフォーマンスの低下が避けられないというデメリットがあります。 JSPも同じだが、JSPはJSPコンテナと呼ばれるJSP実行プログラムが一度起動されていれば、その内部で実行されるので、リソースの消費が少なく効率的だというメリットがあります。) 4:Java の文法で記述でき、Java の利点を生かしたシステム構築ができる 。さて、質問、何を使うの?、JSP or アプレットや、Java Script?。

  • JAVAアプレットが動かない

    JAVAの勉強がてら「JAVAアプレット入門」という本をかって勉強をはじめようとおもったのですが、サンプルCDについているJAVAアプレットのサンプルプログラムが全く動きません。 そのまま使っているので動かないはずないと思うのですがうごきません。 そこで、不意に思ったのですが、ひょっとして現在ではJAVAアプレットは過去の技術でドノブラウザもサポートしていないということはありますか? iOSやアンドロイドでは、つかえない(フラッシュと同じような扱いを受けている)という認識があるもので・・・ アプレットという技術は現在もいきているのでしょうか?おとなしくJAVAスクリプトにきりかえたほうがよいでしょうか?

    • ベストアンサー
    • Java
  • サーバとクライアント間でのJAVA APPLETの起動の仕方

    大学の授業でJAVAを少しやっております。 そこで、課題として出されたのが、サーバーにあるJAVA APPLETをクライアント側で起動するというものです。 簡単なものでいいというのですが、どのようにしたらいいのか全くわかりません。 一応RMIとかいうのはやっているのですが、RMIでこのようなことはできるのでしょうか。 もし、できなければどのような方法でやればよいのでしょうか。 回答よろしくお願いします。

  • javaアプレットとCGIの組み合わせについて

    javaアプレットを作ったのですが、 これをCGI(Perl)で制御することは可能でしょうか? HTMLならば<APPLET・・・>で記述できますが、 Perlも同じような記述があるのでしょうか? もしありましたら教えて下さい。 よろしくお願いします。

    • 締切済み
    • CGI