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


1.Javaは実際にはどのような場面で使われるのでしょう?
2.JavaでWinアプリを作る意味はあるのでしょうか?

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (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使えばかなり楽に出来ますが、多少パフォーマンスが犠牲になる。)
    • good
    • 0
この回答へのお礼

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

また、その他の皆さんもありがとうございました。

お礼日時:2001/09/09 19:24

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の良さかなぁと思っています。やっぱり、お手軽さってところなのかな(笑)

プログラム初心者からでした(笑)参考程度に。
    • good
    • 0

1.Javaは実際にはどのような場面で使われるのでしょう?



やはり、実行するOS等を選ばない状況で使われると思います。
インターネット関連のアプリケーションにもいいと言われているのは、
インターネットに接続する環境がWindowsだけとは言えず、いろいろな物があるからでしょう。

AppletがLoading時間がかかるのは確かですが,
あまり意味が無いと感じるのは,やらせていることが
単純だったりするからのような気がします。
例えば,VBで作成したプログラムをダウンロードして
使うことと比較すると、Appletだから時間がかかるというわけではないことが分かると思います。


プログラムの勉強という意味では、VBなんかよりすっきりしてますので、やりやすいでしょう。
また、Cよりへんなことが出来ないという意味でも
やりやすだろうと思います。


2.JavaでWinアプリを作る意味はあるのでしょうか?

Windows上でしか動作させないなら、使う人にとってはあまり意味はないでしょうね。
作る人にとっては、Javaしか使えない,Javaだと作りやすい,JBuilderだと作りやすいという意味が
ある人もいるでしょう。


ちなみにプログラムそのものは専門家ですが、Javaは手付かずです。
    • good
    • 0

#回答だけではないですが・・・



>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++で作った方が良いと思いますが。

#学習する、という意味においてはいい言語だと思います。
#資料が多く、言語設計が比較的まともであり、クラスライブラリも豊富ですから。

この回答への補足

Javaが”遅い”と感じる理由がとても分かりやすかったで
す。ありがとうございました。最後にもう一つ、出来たら
お願いします。

>また、ServletEngineを起動させれば、すべてメモリに読
>み込むため、httpリクエストによるオーバーヘッドが、他
>のcgi(PHPやperlなど)に比べると少ない事が上げられま
>す。

今さっき、e-WordsにてServletの意味をもう一回調べたの
ですが、alfeimも書いてるように、”一度呼び出されると
そのままメモリに常駐するため、高速な処理が可能であ
る”とはどういう事でしょう?これはCGIはPCのキャッシュ
にダウンロードされないので遅い、と考えてよろしいので
しょうか?

補足日時:2001/09/04 04:19
    • good
    • 0

(1)は、はっきり言って、ネットでは使いづらい(書かれている通り、回線速度が遅いので)です。


主にソフトの結果表示に使われています。
Javaのサーブレットでフローチャートの動作をさせて、
Javaアプレットで表示させるのが現在主流です。

(2)は、WinアプリをC言語やビジュアルCで作成すると、
膨大な命令文が長く、計算処理速度がかかります。
WinアプリはWindowsのOS上で
動作させるためにブラウザーで使用されるJava命令は
C言語やビジュアルCでの処理速度を向上させている。

という、私の旦那(Javaの初級資格をもっている)
の言葉を代弁させていただきます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QWinアプリ(c#) webアプリ(c#.net) とは?

4月から社会人になります。
職種はシステムエンジニアです。
社員十数名ほどの小さな会社で、研修はありません。

何かやっておいた方がいい事はないか質問すると、
「Winアプリ(c#)やwebアプリ(c#.net)あたりをやっておくといいかもしれない。」
との事で、とりあえずC#の入門書を買ってみたのですが、
わからない事だらけで困っています。
超初心者なので、細かく教えて頂けないでしょうか。

(1)Winアプリ・webアプリとは何ですか。
(2)C#とC#.netは同じなのですか。違うのなら、C#.netとは何ですか。
(3)C#とはVisual C#の事ですか?

その他知っておくべき事等お教え頂ければ幸いです。
宜しくお願い致します。

Aベストアンサー

>(1)Winアプリ・webアプリとは何ですか。
WinアプリとはWindowsアプリケーションソフトのこと。
その名のとおりWindowsというOSで動作するアプリケーションソフトのことです。
アプリケーションソフトとは『特定の目的のために作られたソフトウェア』って意味です。

webアプリは、
ブラウザ(IEなど)で動作させるアプリケーションソフトです。
ですので、WindowsというOSに限らずLinuxなど他のOSでもブラウザさえあれば動作します。
このOKWave自体もWebアプリケーションですね。

>(2)C#とC#.netは同じなのですか。違うのなら、C#.netとは何ですか。
同一です。

>(3)C#とはVisual C#の事ですか?
ほぼそう考えてよいと思います。
正確にはVisual C#とはマイクロソフトのVisual Studioを使って、C#という言語で開発するって意味です。


最初はとにかく入門書の内容に従ってプログラムを打ち込んで動かしてみることですね。

Q言語[C#、Java]..クラスの扱い方の違い[ファイル名とpublicなクラス名について]

C#とJavaでのクラスの扱い方の違うであろうことに困惑しています。

Javaの場合では、publicなクラス名とJavaファイル名(クラスのファイル名)を一致させる。というのがきまり事だったかと思います。

ですが、

C#の場合では、publicなクラス名とクラスファイル名を一致させなくても動作しています。

C#でのクラス名とクラスファイル名のしばりは何もないのでしょうか?

ご存知の方、助言宜しくお願い致します。

Aベストアンサー

がると申します。
どちらかというと、Javaのように「ファイル名とclass名との間に縛りがある」言語のほうが珍しいと思うので。
記憶しているかぎりでは、C#は「自由に」ファイル名をつけられた記憶があります。

QMATLAB matファイル(名前にピリオドを含む)load時のエラー

MATLAB初心者です。
下記のような名前でデータを保存(mat形式)してしまいました。
  例)file0.2.mat
ファイル名に"."を含むため、
下記のようにloadコマンドを入力しても、
エラーが出てデータを読み込むことができません。
  load file0.2
何かいい手はありませんか?
何卒よろしくお願いします。

Aベストアンサー

多分これでできるのでは

load('file0.2.mat')

詳しくはhelp load で調べてください。

QJAVAプログラマーは人手不足?覚えるならやはりJAVAが良い?

Webデザインをやっていましたが、プログラミングもやらなくてはならなくなりました。
いったいどのプログラミング言語が良いのか考えておりますが、JAVAが人手不足だとスクールから聞きました。ホントのホントか?と聞いても間違いないと言われます。
スクールは売上上げたいだけかも知れないので話半分に聞いていますが、本当にJAVAプログラマは需要が多く人手不足なんでしょうか?
「確かにそうだが、実はハイレベルプログラマしか需要は無い」のが現実とかじゃないでしょうか。

生活の為にツブシをきくようにするのが第一優先なので、プログラミングが嫌でも何でもただただやるだけなんですが、どうせ好きでないことをやるのだからせめて需要が多くツブシがきく言語が良いわけですが、やはり言語としてはJAVAが良いでしょうか?
例え中小企業に多い共用レンタルサーバでPHPやCGIを操ろうとしても、JAVAがわかっていれば楽である、とも聞きますが。

宜しくお願い申し上げます。

Aベストアンサー

こんにちわ

実務現場からの意見ですが、参考までに。
言語を学ぶ、という観点で言えばJavaは学びやすい言語だと思います。簡単、というわけではありませんが現代的な言語として標準的だと思います。つまり勉強することが目的であればJavaは良い候補だと思います。

ただJavaといってもその使われ方は仕事内容によって大きく違います。サーバサイドの技術でもその規模や用途によって、言語としての知識を大きく超えた分野に対する知識が必要です。また開発には特定のフレームワークと呼ばれる開発手法が導入されていますので、学校などで習う程度の知識では実務上歯が立たないのが現実です。今は大学の授業で扱う言語もJavaが導入されていますから、単純に見てその分野の人口は多いと思います。

一般的に見て、Webに関係する分野で仕事をする場合には大きく分けてクライアントサイドかサーバサイドかという分け方ができます。クライアントサイドというのは例えばhtmlやcss、JavaScript、あるいはFlashなどを使ってウェブサイトの画面構成を行ったり、またはMovableTypeのようなCMSの画面を作成する、といった実務が考えられます。サーバサイドというとデータベースを中心にした何らかのシステムが考えられますね。それぞれの分野で使われる言語も必要な知識も違いますから、まずは目指す分野を探すのが良いと思います。

Webデザインの延長上で、スキルとして能力を身につけたいのであればJavaScript、特にAjaxに対する知識とテクニックを身につけるのが有効です。またJavaScript自体の言語仕様を理解しておく必要があります。少なくとも適当なサイトからコードをコピペするような開発者はプログラマーとは言えませんから、ゼロから自分で作成できるか、または適切なライブラリをつかう、という判断ができる能力が必要です。これはJavaScriptに限定した話ではありません。

ただ開発の実務をしている側から見ると、プログラム自体が好きでないと続けるのは難しいと思います。またチームワークの中で開発をすることが多いので、スケジュール的に厳しい状況に直面したり、他のメンバーと共同で開発を行うために、運用上適切なプログラムを求められることもあります。つまり仕事上の要求を満たす為に常に勉強する必要があるということです。趣味でプログラムをするのとは、この辺りが違うと思います。

参考までに

こんにちわ

実務現場からの意見ですが、参考までに。
言語を学ぶ、という観点で言えばJavaは学びやすい言語だと思います。簡単、というわけではありませんが現代的な言語として標準的だと思います。つまり勉強することが目的であればJavaは良い候補だと思います。

ただJavaといってもその使われ方は仕事内容によって大きく違います。サーバサイドの技術でもその規模や用途によって、言語としての知識を大きく超えた分野に対する知識が必要です。また開発には特定のフレームワークと呼ばれる開発手法が導入...続きを読む

Q大学でC言語やJava等を習いました.

大学でC言語やJava等を習いました.
次のセメスターからは手続き型言語とは違う
SMLという関数型言語を講義を履修しなければならないようなので,
春休み中に勉強しておこうかと思いました.
しかしSMLを少しかじってみたのですが関数型言語は代入という概念もなく
数学のような感じであまりおもしろくないと感じ,関数型言語を学ぶ意欲が少し無くなってしまいました.

そこで関数型言語を学ぶ意義についてどなたか教えていただけないでしょうか?
よろしくおねがいします.

Aベストアンサー

確かに「関数型言語」って C や Java のような手続き型言語とはかなり違う面がありますが, そこは逆に「同じものを違う視点から見る」ということを学ぶチャンスであると考えてみてはどうでしょうか.
ちょっと検索したりすると
・手続き型 = imperative = 「どのようにするか」を記述する
・関数型 = declarative = 「何をするか」を記述する
というのも出たりするなぁ. つまり, 手続き型言語の方が記述の抽象度が高いということですね.


人気Q&Aランキング

おすすめ情報