- クラスファイルはなんのために必要なのですか?集団で開発するときにクラスファイルを共有するんですか?
「集団で開発する」ことができるかどうかは副次的なことでしかありません。クラスファイル*.class
は、Javaプログラムを実行するための仮想マシン(JVM/Java Virtual Machinne)で動作させる際のEXEファイルと言えるものです。EXEファイル中のマシン語のようなものが、classファイル内に中間言語(Javaバイトコード)として収められています。コンパイルした結果としての成果物(≒実行ファイルの一部)なので、Javaプログラムそのものです。
- 仮にjavaで作ったシステムをリリースした時、実行可能ファイルを生成しないでいちいち"java sample"の記法で実行するつもりでjavaそのものは作られたのでしょうか?
いいえ。Java仮想マシンが常に稼働しているような環境では、*.classファイルを即読み込み、"java sample"などと人間が入力するまでも無く実行されます。"java sample"と入力するのは"java"コマンドを実行することでそのOS上にJava仮想マシンを起動し、コマンドラインオプションで指定した"sample"という"sample.class"のJava実行プログラムを、Java仮想マシン上で実行させることを指定しています。
"java sample"の記法で実行するつもりで作ったと言うよりは、Java自体がもともと「Java仮想マシンがあればどんなOS/プラットフォーム上でもJavaプログラムが動作する」ことを目指していて、WindowsやLinuxなどの各種OS上でjava
コマンドを実行することで、そのOS上でJava仮想マシンが使えるようになりますし、その為のjava
コマンドです。言わば「おまけ」です。("Write once, run anywhere"/”一度、コードを書けばどこでも実行できる” と言うJavaのキャッチフレーズがありましたが、実際はなかなかそうはいかないので、今は鳴りを潜めましたね)
- java sample"以外でexeファイルと同じようにワンクリックで実行できる形にはできますか?
*.class
や *.jar
ファイルを関連付けすることで実行できるようになる場合もありますが(<ただし、それでは不充分なことも多いです。)、別回答もいただいているので、本回答では割愛させていただきます。
本質問で疑問に思われているようなことは、Javaプログラミングの解説の最初の方に載っているようなこともあります。(Javaとは/なぜ、Javaを使うのか、等)一度、ていねいに読んでみると良いです。