• ベストアンサー

Javaのよさについて

結構前から、”これからはJavaを勉強した方がいい”と か、”インターネット関連のアプリにはJavaがいい (?)”とか言われてますよね。でも、JBuilderを使っ て、JBuilderのTutorialをやってみた感想は、すごく遅い と思うんです。なんだか動作の全てが...。Appletにして も、普通のモデムの人にとっては、Loadingの時間はかなり耐 え難いものがあると思います。そこで質問です 1.Javaは実際にはどのような場面で使われるのでしょう? 2.JavaでWinアプリを作る意味はあるのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • alfeim
  • ベストアンサー率58% (114/195)
回答No.5

下記のオーバーヘッドについてです。 HTTPではブラウザがwebサーバにリクエストを出して、webサーバが対象のファイルをブラウザに送り返し、そしてブラウザがそのhtmlや画像を解釈して表示されます。 一般にcgiと呼ばれるものの違いはサーバにあるものがhtmlや画像ファイルそのものではなく、プログラムであり、そのプログラムで処理した結果がブラウザに送られる、という事です。 それでcgiでよく使われるperlは通常webサーバがリクエストを受け取るたびにperlインタプリタを立ち上げ、処理をして結果を受け取りperlインタプリタを終了します。そのためリクエストが発生するたびにperlインタプリタの起動と終了というオーバーヘッドが発生します。 ServletではwebサーバとJavaインタプリタが一緒に起動してメモリ上に居座っているため、上記のperlインタプリタで発生したオーバーヘッドはありません。これが「Servletは早い」という売り文句になります。 というのが建前です。 実際はmod_perlと呼ばれるapacheというwebサーバの組み込みシステムがあるため、上記の事柄は現状ではほぼ当てはまりません。また、PHPというものもあり、これもwebサーバのプロセスとして実行されるため、違いはほとんどありません。 逆に開発時においてはPHPやperlの方が細かなテストがしやすいので楽なくらいです。 ただ、大規模開発になるとオブジェクト志向中居発のしやすさからJavaは良いと思いますけど。(PHPもPHPLIB使えばかなり楽に出来ますが、多少パフォーマンスが犠牲になる。)

northcurlcurl
質問者

お礼

細かいところまでわかりやすく説明していただいたにもか かわらず、返事が遅れて大変申し訳ありませんでした。自 分は、いまいち何を目標にプログラムを作ったらいいのか が、わかっていません。C++もJavaも壁にぶつかるごとに” こんなことやって、いったい何になるんだろう”って思っ てました。しかし、alfeimさんの説明で、どんなことを意 識して、Javaを勉強したらいいか、わかったような気がし ます。本当にありがとうございました。 また、その他の皆さんもありがとうございました。

その他の回答 (4)

  • usap
  • ベストアンサー率33% (525/1577)
回答No.4

JAVAをちょこっとかじったものです。 HTMLをしたあと、JAVAに興味を持ちました。 趣味で個人サイトを持っています。 はじめはjavascriptを知り、そのあとにJAVAでアプレットを作ってみました。 プログラムそのものはぜんぜんできませんが、私がJAVAをやろうと思ったのは、CやVBよりやりやすかったからです。CやVBだと、本格的にプログラムを設計して構築していかなくてはなりませんし、VBだとソフトが必要です。その点、JAVAはオブジェクト指向なので、プログラムの構造が単純に感じますし、エディターを起動してすぐに書き込むことができ、コンパイラも手軽で、アルゴリズムもよくわからない一般人の私でもわりとやりやすいです。プログラム自体が簡単で効率的にできてしまうところがJAVAの魅力じゃないかなぁと思います。私は複雑なプログラムではなく、web上で使えるアプリを簡単に作りたいと思ってJAVAをはじめました。ソフト開発など、専門家にとってはJAVAはそんなにおもしろいものではないのかな・・・(私は趣味なので、おもしろいのかも) JAVAアプレットで画像を表示させるだけだったり、マウスが乗って画面を変えるとか、画像すり替えくらいなら、JAVAよりもHTMLとかjavascriptのほうが表示も速いし、作るのももっとラクチンです。私が使うとしたら、動画を作ってみるとか、ゲームを作ってみるとか、チャットルームを作ってみるとか、そんな感じかもしれません。掲示板もJAVAでやれるみたいだけど、私はperlのほうが慣れてるのでperlでやってます。(間違いで無限ループ作ったらどうしよう、なんてちょっと心配。Cは私には無理だし、JAVAでやれるならそんな心配無用かなぁとか思ったりします。) HTMLやCSSやjavascriptでできないことをできるのがJAVAの良さかなぁと思っています。やっぱり、お手軽さってところなのかな(笑) プログラム初心者からでした(笑)参考程度に。

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.3

1.Javaは実際にはどのような場面で使われるのでしょう? やはり、実行するOS等を選ばない状況で使われると思います。 インターネット関連のアプリケーションにもいいと言われているのは、 インターネットに接続する環境がWindowsだけとは言えず、いろいろな物があるからでしょう。 AppletがLoading時間がかかるのは確かですが, あまり意味が無いと感じるのは,やらせていることが 単純だったりするからのような気がします。 例えば,VBで作成したプログラムをダウンロードして 使うことと比較すると、Appletだから時間がかかるというわけではないことが分かると思います。 プログラムの勉強という意味では、VBなんかよりすっきりしてますので、やりやすいでしょう。 また、Cよりへんなことが出来ないという意味でも やりやすだろうと思います。 2.JavaでWinアプリを作る意味はあるのでしょうか? Windows上でしか動作させないなら、使う人にとってはあまり意味はないでしょうね。 作る人にとっては、Javaしか使えない,Javaだと作りやすい,JBuilderだと作りやすいという意味が ある人もいるでしょう。 ちなみにプログラムそのものは専門家ですが、Javaは手付かずです。

  • alfeim
  • ベストアンサー率58% (114/195)
回答No.2

#回答だけではないですが・・・ >WinアプリをC言語やビジュアルCで作成すると、 >膨大な命令文が長く、計算処理速度がかかります。 >WinアプリはWindowsのOS上で >動作させるためにブラウザーで使用されるJava命令は >C言語やビジュアルCでの処理速度を向上させている。 ?? 言ってる意味がよく分かりません。 どう考えてもNativeCodeアプリケーションの方がByteCodeアプリケーションよりオーバーヘッドがちいさいのは自明ですし、Javaは実行時束縛型のリンクシステムのため、関数呼び出しは静的束縛であるC/C++、VBなどに比べると一歩劣ります(VCに関しては仮想関数使えば一緒ですが・・・)。 また、動的結合のためにクラスシンボルなどを完全修飾名でclassファイルに保存するため、サイズも大きくなります。 さらにNativeCode系はグローバルな実行最適化を施せます。JavaでもNativeCodeに落とす事は出来るため、施せなくはないですが、そうした場合、Write once run anywhereの特徴は失われます(このWrite once run anywhereもかなり眉唾物ですが・・・)。 #ちなみに最近のCPUでは命令数がどうの・・・というよりもレイテンシを減らす方が効果があります。CPUキャッシュがミスヒットするだけで数十クロックのペナルティ食らうような状況になってますから。 また、 同じ処理を同じアルゴリズムで作成した場合、Javaの方が(バイトコード処理によるオーバーヘッドがあるため)NativeCodeに勝つ事は出来ません。 簡単に言えば(日本語のみを解する)日本人に仕事をさせる場合、日本語で直接命令する(NativeCode)のと、英語で翻訳者に翻訳させながら命令(ByteCode Interpreter)するのではどちらが効率的かは自明でしょう。 #基本的に否定派なんで否定的意見ばっかりだ(^^; Javaの長所を上げろ、といわれれば、個人的には開発におけるObject志向開発のしやすさ、だと思います。 一応C++を反面教師として作られただけあって、そのへんは(C++よりは)しっかりしています。 >インターネット関連のアプリにはJavaがいい に関してはServletの方についてではないでしょうか? 基本的にHTTP廻りに関してはsocket制御(こっちはServletEngineの仕事ですが)と文字列処理が主体なのでそれほどInterpreterである事が問題になりません(というより競合相手、PHPやPerl、ColdFusionもInterpreterなので差が無い、というのが正しいかも)。 また、ServletEngineを起動させれば、すべてメモリに読み込むため、httpリクエストによるオーバーヘッドが、他のcgi(PHPやperlなど)に比べると少ない事が上げられます。 <質問に対する回答> 1.Javaは実際にはどのような場面で使われるのでしょう? 私が知る限り、実用的なものはほとんどServletです。 昔はAppletも流行ましたが、最近ではほとんど見かけません。これはAppletの仕組み自体に問題があるような気もしますが(出来る事が限定されすぎているため)。 2.JavaでWinアプリを作る意味はあるのでしょうか? 「Winアプリ」を作る意味はほぼありません。ですがグロスプラットフォームなソフトを作る上では意味があるでしょう。JREがあれば、何処でも動く、というのがJavaの売りですから、いちいちUNIX版、Windows版と別々に開発する必要が無くなりますから。 #実際にはそれぞれのWindowシステムやOSアーキテクチャを調べ、依存部分だけを作り直せば移植は出来るので設計さえまともならばC/C++で作った方が良いと思いますが。 #学習する、という意味においてはいい言語だと思います。 #資料が多く、言語設計が比較的まともであり、クラスライブラリも豊富ですから。

northcurlcurl
質問者

補足

Javaが”遅い”と感じる理由がとても分かりやすかったで す。ありがとうございました。最後にもう一つ、出来たら お願いします。 >また、ServletEngineを起動させれば、すべてメモリに読 >み込むため、httpリクエストによるオーバーヘッドが、他 >のcgi(PHPやperlなど)に比べると少ない事が上げられま >す。 今さっき、e-WordsにてServletの意味をもう一回調べたの ですが、alfeimも書いてるように、”一度呼び出されると そのままメモリに常駐するため、高速な処理が可能であ る”とはどういう事でしょう?これはCGIはPCのキャッシュ にダウンロードされないので遅い、と考えてよろしいので しょうか?

  • yasya
  • ベストアンサー率29% (842/2899)
回答No.1

(1)は、はっきり言って、ネットでは使いづらい(書かれている通り、回線速度が遅いので)です。 主にソフトの結果表示に使われています。 Javaのサーブレットでフローチャートの動作をさせて、 Javaアプレットで表示させるのが現在主流です。 (2)は、WinアプリをC言語やビジュアルCで作成すると、 膨大な命令文が長く、計算処理速度がかかります。 WinアプリはWindowsのOS上で 動作させるためにブラウザーで使用されるJava命令は C言語やビジュアルCでの処理速度を向上させている。 という、私の旦那(Javaの初級資格をもっている) の言葉を代弁させていただきます。

関連するQ&A

  • Javaの種類ってどんだけあるの?

    はじめまして、現在休職中で今後、仕事で役立てられたらと考えてJavaを勉強しようと、考えているもんです。むろん、仕事はコンピュータ関連でもありませんし、 ソースコードも書いたことございません。 Java Application、Java applet、i-Appliなるものは分かりましたが、 Java servlet、etc...と書店を回っただけでもたくさんあり、どういうものが Javaにはあるのかを詳しく知りたくなりました。 ご存知の方がおられましたらどういう場面で使うのか、もしくはどのような用途にむくのかということを教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • javaといっても?

    いつもお世話になっております。 プログラマーになって、半年ちょっと経ちます。 主にcoldfusion、ときどきphpやaspもいじったりします。 coldfusionには拡張機能でjavaクラスを読み込めたり、javaが動作出来るようになっています。 最近、仕事でちょっとだけかじりました。 そこで今後のことも見据えて、javaを勉強したいなって思っているんですけど、どうjavaというものにとりかかっていけばいいか正直わからないです。 一口にjavaといっても、すごく広い感じがします。 jsp? サーブレット? J2SE? J2EE? EJB? … ひとつひとつの意味はgoogleで検索すれば出てきます。 が、実際のところ、javaの環境で動くということはわかるんですけど、じゃあ、なにから勉強していったらいいのかってことがわかりません。 web用のアプリを作りたいならJ2EE?それともjsp以外はどれも同じってことなんですか? まず、どういったことから勉強していったらいいかご教授いただければと思います。 ちなみにやりたいことはwebアプリ系です。ただwebアプリ系のjavaと組み込み系のjavaは違ったりするのかとか疑問だったりします。 愚問かもしれませんがどうぞよろしくお願いします。 またオススメの書籍等ありましたら教えてください、基本的には自分で本屋で読んであったコレだって思ったものを買えばいいのでしょうが、本屋にいったら、javaに関する書籍(Eclipseで作る関係のjava書籍,EJB関連の書籍,J2EE関連の書籍,…などなどどう選べばいいかわからなかったので。)

    • ベストアンサー
    • Java
  • javaが表示されません

    Win98,IEの5.5を使っています。 javaを使っているホームページを見ると、 javaアプリの部分が、グレーになっていて、表示されないのですが、 どうやったら見られるようになりますか? ちなみに、インターネットオプションのjavaに関する部分は、 すべて有効になっています。 どうしたらいいのか、検討がつきません。 どなたか教えてください!よろしくお願いいたします。

  • Javaとは何をするため?

    JavaScriptを勉強しているのですが、JAVAとはいったい何をするものなのでしょうか。 携帯でのアプリなどでよくJavaをみかけますが、私の先輩は色々な用途がある。といっていました。それによくネットで見かけるオンラインショッピング(カートに物を入れたり)もJavaでできる聞きました。 他にもネット関連でなにかできるもがあるのでしょうか。 それとJavaScriptとJavaの違いを教えてください。初歩的な質問ですみません。

    • ベストアンサー
    • Java
  • Javaコンソールプログラム(CUI)について。

    Javaコンソールプログラム(CUI)について。 キーボードの入力ですが、ノンブロッキングな処理は出来ないのでしょうか? また、エコーもさせない(入力した文字を表示させない)方法はありますでしょうか? (例えばFrameアプリ、Appletで用いられるKeyListenerインターフェイスのような動作) ご回答の程、宜しくお願いいたします。

  • javaが動かなくなって困っています。

    javaが動かなくなって困っています。 昨年末くらいまでリアルタイム為替チャート見たりしてたので動いていたはずです。 久しぶりに見ようとしたら見られなくて困っています。 特に新しくインストールしたソフトも多分無いと思うのですが、競合で動かなくなることって あるのかな? osは、windows xp sp3 IE7 を使ってましたが動かないのでIE8 にしてみましたがやはり動かず。 http://www.java.com/ja/ よりDLした最新版が入っています。 上記サイトの「javaの有無のチェック」試してもやはり動作していません。 ヘルプなどに書いてあるインターネットオプションのセキュリティ関係の設定、詳細設定の <applet>に JRE 1.60_18を使用 にもチェック入っています。履歴クリアもしました。 コントロールパネルからjava呼び出して設定も見直しましたが特に異常見当たりません。 もう一台のパソコンをos、ブラウザ環境同じにして実行するとこちらは動きます。 2台のPC間でjava関係の設定見比べましたが全く同じでした。(証明書の内容は違っています) 一度javaをアンインストール・再起動後、今度はオフラインインストールで最インストール試みましたがインストールは正常に終わりますがやはりsunのテストページが動作しません。 google chromeやfirefoxなどのブラウザからはちゃんと動作します。 他に何を調べればいいでしょうか?宜しくお願いします。 IE以外のブラウザ使えば?リカバリしたら?という回答以外でお願いします。 以前動いていたのに動かなくなった原因を突き止めたいので・・・ 

  • Exception occurred during event dispatching

    こんにちは。 JBuilderでappletを作成しています。 wait()とnotify()をプログラム中で利用したところ, 次のようなメッセージが出ました。 Exception occurred during event dispatching:  java.lang.IllegalMonitorStateException: current thread not owner 具体的にどのようなことを意味しているのかわかりません。 どなたか教えて下さい。お願いします。

    • ベストアンサー
    • Java
  • インストールされているJava VMの確認について

    MS-IE(Win98)でインターネット上のJava Appletの一部が動作しない状態になって困っています。具体的には、Yahoo!オークションの「詳細な残り時間」表示や、Yahoo!ゲームのJavaアプリ、Yahoo!チャットのJava版などが全く起動しません。 同じ接続環境、IEのセキュリティレベルも同じ、別のPC(Win2000)では問題なく動作しているので、Win98マシンのJava VMが壊れているのかな?と思うのですが、Win98のJava VMのインストール状態を確認するにはどうしたら良いのでしょうか?(以前、動いていたこともありましたので、全くインストールされていないということはありません。)

  • Javaでデータベースを操作するアプリ作成

    WinでもMacでも動作するように、Javaでアプリ開発しようと思っています。 そのアプリはデータベースを使った方が管理がしやすいと思っています。 そこで質問ですが、 例えばデータベースにAccessを使った場合、他の人にそのアプリをあげたら その人もAccessをインストールしている必要はあるんでしょうか? ご回答を宜しくお願いします。

  • 画像表示アプレットプログラムについて

    Javaのプログラムを勉強中です。 javaを理解するために下記のプログラム(zukei.java)を作成しました。 このプログラムを実行(appletviewer zukei.java)すると エラーにはなりませんが、(3)の行により画像("b.jpg")がすぐには表示されません。表示されたWindowにほかのWindowをいったんのせてから動かすと(3)行により画像"b.jpg"が表示されます。 (1)(2)の行は最初からうまく動作して表示されます。 もちろん(3)のappletをthisにするとうまく動作します。 理由がわかりません。 どなたかご教授ください。 プログラム zukei.class *<APPLET CODE="zukei.class" WIDTH=500 HEIGHT=500></APPLET> */ import java.applet.*; import java.awt.Graphics; import java.awt.*; public class zukei extends Applet { Applet applet; Image myimage; int iKai; public zukei(){ applet = this.applet; } public zukei(Applet applet) { this.applet = applet; } public void init(){ iKai = 0; myimage = getImage(getDocumentBase(),"b.jpg"); } public void paint(Graphics g) { kaku(); //(1) g.drawArc(100,150,50,50,0,360); //(2) g.drawImage(myimage,10,300,180,180,applet); //(3) } public void kaku(){ System.out.println("ABC" + iKai++); } }

専門家に質問してみよう