- ベストアンサー
サーバーに命令を出すファイルとサーバーとの関係性
- サーバーに命令を出すページファイルとサーバとのやりとりについて質問させてください。
- httpプロトコルを使いwwwサーバに繋げたファイルとのやりとり方法について知りたいです。
- アプリを作る際にディレクトリにたくさんのフォルダやファイルを作る理由とその機能の仕組みについて教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
回答No.2 です。 Java は「1. コンパイルする」方式の言語なのですが、コンパイルの結果作成されるファイルは「実行可能ファイル」ではなく、「Javaバイトコード (通常は拡張子 .class のファイル)」と呼ばれるものを作ります。この「Javaバイトコード」はそのままでは実行できず、JVM (Java仮想マシン) と呼ばれるソフトに読み込ませて起動します(⇒ 通常は java コマンドをWindows 標準コンソールで実行して起動します)。 つまり、「実行可能ファイルをダブルクリックするだけで実行できる」他のコンパイル方式の言語にくらべて、JVM を使って実行しなくてはならないぶん(java コマンドをWindows 標準コンソールで実行しなくてはならないぶん)、手間がかかるということですね。 これは、『Java で作られたプログラムを Windows 以外の OS、例えば Linux などでもそのまま使用できるようにしよう!』というコンセプトのために、このような仕組みになっています。
その他の回答 (3)
回答No.2 です。 質問に回答する前に再訂正を。先の回答で「コマンドプロンプトは正しくない」と書きましたが、「コマンドプロンプト」は事実上コンソール画面という意味でわりと使われていますので、そこまで厳密に考えなくても良いです。逆に「コンソール」という言葉は単語として別の画面にも広く使われていますので、逆に伝わりにくい場面もあるかもしれません。 (よくよく考えてみたら、私も周囲にコマンドプロンプトと普通に言ってました) > メモ帳などのテキストエディタにコードを書いておいて、 > そのファイルをコンパイルしたらそのファイルが動くように > なるということですか? うーん、違います。 まず、きちんと押さえておいてほしいのですが、先の回答に書いた「1.コンパイルする」「2.インタプリタで読み込んで動かす」は、それぞれ全く別の実行方法であることは大丈夫ですよね。 「1. コンパイルする」方法で実行する場合は、ソースコードをコンパイルすると「実行可能ファイル(多くの場合、拡張子 exe のファイル)」という新しい別のファイルが作られます。動かす時は、この新しく作られた実行可能ファイルをダブルクリックするなどの方法で起動します。(Java はちょっと違うのですが、ややこしいので割愛。必要なら再質問してください) コンパイルによって「コードを記述したファイル」が動くようになるわけではありません。 > コンソール画面はただファイルの名前を読み込みURLを発行するくらいの役目ですか? 質問のコンソール画面とは、Windows 標準のコンソール画面のことで良いですかね? まず、誤解されているようですが、Windows 標準のコンソール画面の本来の機能は、「コマンドライン」と呼ばれる命令を使って OS (Windows そのもの) を操作することです。 Windows そのもの操作というと、普通はマウスでファイルを移動したりとか、マウスでブラウザをダブルクリック起動するとか、マウスでコントロールパネルをいじったりとか、とにかくマウス主体で操作することが多いですが、マウスを全く使わずに「キーボード入力」だけで Windows を操作できるようにしているのが Windows 標準のコンソール画面 なのです。 なので、「コンソール画面はただファイルの名前を読み込みURLを発行する」という理解は一面的すぎて良くありません。 Windows 標準のコンソール画面は OS (Windows) を操作するためのものなので、プログラムから OS の機能を使う場合にも利用できないことはありません。ただ、プログラム言語には普通、独自の OS を操作するためのライブラリ(命令)が準備されていますので、わざわざWindows 標準のコンソール画面を使うケースはそう多くはありません。
お礼
回答有難うございます
補足
御礼が遅くなり、大変申し訳ありません。ここ数日間に生活リズムが変わり、あわただしくなり隙間時間を有効活用できていませんでした。 こちらから質問しておいて、御礼を遅らせてしまいすみません。 そして、 コマンドプロンプトでもよいということですね でも確かにコンソール画面といったほうが適切そうですね また、 >>>この新しく作られた実行可能ファイルをダブルクリックするなどの方法で起動します。(Java はちょっと違うのですが、ややこしいので割愛。必要なら再質問してください) と、おっしゃっていますが、、よろしいのでしょうか? もし宜しかったら、その過程を教えていただきたいです。 本当に図々しくてすみません。 そして、改めて再びの回答有難うございました
正直、質問の内容(質問者さんが考えるシステムの仕組み)がチンプンカンプンです。とりあえず私が理解した範囲で回答します。 まず訂正から。コマンドプロンプトとは、正確には (Windows では) 黒いコンソール画面に表示される ">" のことです。 https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88 ">" を表示して入力を促すプログラムのことは「コンソール」とか「CUI」と言います。まぁ、「コマンドプロンプトが出るプログラム」=「コンソール」なので、コマンドプロンプトでも通じますが、正確には間違いです。 > アプリを作る際に、ディレクトリにたくさんのフォルダなり > ファイルを作りますが、あれはすべてファイルという紙であり、 > コマンドプロンプトではないのですがどうしてあれが機能する > のでしょうか??? アプリの作成時に作るファイル群は「ソースコード」です。一般的には、あれがそのまま動くわけではなく、 1. ソースコードをもとに「ビルド」または「コンパイル」という 操作を経て「実行可能ファイル (EXEファイルなど)」を作り、 その実行可能ファイルを動かす 2. ソースコードを「インタプリタ」と呼ばれるプログラムに読ま せて実行する のどちらかの方法で動かします。JAVA や C# などは 1. の方法、javascript は 2. ですね。ソース自体は単なるテキストで、コンソールでないのは当然です。 > 私のイメージを書きますと、、 質問者さんのイメージの方法でも通信できないことはありません。ただ、こんな面倒で無駄が多い手順で通信することは、普通はありません。 自分で作ったアプリで HTTP通信をする場合は、普通はコンソールなど使わずに、使用している言語に準備されている HTTP通信ライブラリを使います。その方法は 1. ライブラリにHTTP通信に必要な情報(URL とか POST情報とか) を渡す (渡しかたはライブラリによって違うが、普通はメソッドの引数などで渡す) 2. ライブラリがサーバにHTTP通信し、結果を持ってくる 以上終わりです。HTTP通信に必要な手順 (3 ウェイ・ハンドシェイクとか) は、ライブラリ内で自動的にやってくれますので、プログラム作成者側は意識する必要がありません。
お礼
回答ありがとうございます
補足
回答有難うございます あの黒い画面はコンソールというのですね なんとなく、理解できたような気もするのですが、つまり、 メモ帳などのテキストエディタにコードを書いておいて、そのファイルをコンパイルしたらそのファイルが動くようになるということですか? コンソール画面はただファイルの名前を読み込みURLを発行するくらいの役目ですか? すみません。 お手数ですが、またの質問に答えてくださることを願います。 宜しくお願いいたします。。
- notnot
- ベストアンサー率47% (4900/10358)
途中から何を言ってるのか分かりませんが、最初の、 >サーバーに命令を出すページファイルとサーバとのやりとりについて質問させてください。 で、HTMLファイルと、サーバーとのやりとりの関係と言うことであれば、 クライアント上のウェブブラウザというプログラムが、HTMLファイルを読んで、そこに書いてある通りのページを作り出して、ブラウザ画面に表示します。そのページのリンクをクリックすると、ブラウザがリンクに対応するURLを認識して、そのURLが示すサーバーに、HTMLファイル(じゃないかもしれませんが)を取得するコマンドを送ります。 「図解ウェブの仕組み入門」みたいなかんじの本を読むといいかと思います。
お礼
回答ありがとうございます 図解ウェブの仕組み入門なるものを見てみようと思います
お礼
回答有り難うございます 再び回答をくださり、有り難うございます そして、丁寧に教えてくださったので、理解しました。 .classというものが拡張子だと知りませんでした。 有り難うございます