- ベストアンサー
JDKのPATHの設定は何故?
java初心者です、宜しくお願いします。 Eclipseをpcに積もうとするとき、必ず先にJDkを積んでくださいとPCから要求されます。 JDkを積んだ場合、必ずPATHの設定を要求されますが、これが理解出来ません。 これはFileへアクセスするためのルートを指定するものだろうと思っていますが、普通のアプリケーションをDLした場合にはこのような作業は行いませんが、なぜJDkの場合にはこのような作業が必要になるのでしょうか。 またどのようなアプリケーションの場合にはこれが必要になるのでしょうか。 PATH設定の画面を見ると他にもPATHが自動的に?設定されているようでした。 また、Eclipse単独(JDkを含んでいる?)ですべてインストールできるパックのようなものを以前DLしたことがあるのですが、何処かからDL出来るのでしょうか。 この場合はなぜPATHを設定してやらなくても良いのでしょうか。 以上、宜しくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
自分はSunの人間ではないので、真意は不明ですが、 基本的にはKyon2_PaPaさんの言っていることに同意です。 PATHの自動設定なんて不要、セキュリティ的にいらない、 元からあった設定が変えられる、という意見があるからでしょう。 >ワードとかはインストール時には少なくともユーザーはPATHの設定を求められませんが。 >JDKはPATHの設定(環境変数の設定のことです)を求められます、その単純な違いと疑問 >の答えが知りたいだけなのですが。 JDKとワードを一緒に並べると余計混乱するでしょう。利用対象のユーザが違います。 ワードはPCのことをほとんど知らないユーザでも使用するソフトであり、 JDKはPG開発を行う開発者が使うものですから。 そもそも、インストールすれば自動でPATHが通ってる、という考え方もWindows独自のものです。 これはシングルユーザで、初心者でも使いやすいように、極力難しい部分は除く、 という思想によるものです。 他のOSでは、カレントディレクトリにPATHを通すこと自体控えているのに、 一般アプリ(JDK)が勝手にPATHをいじる、というのも考え物です。 JavaはWindowsだけのものではなく、いろんなOSで使われるのが最大のメリットですから。 最終的にこれは考え方の問題でもあるとは思います。 「インストーラが自動でPATHを設定してくれる」と考えるのと、 「インストーラが勝手にレジストリをいじった」と考えるのと。 個人的には、JDKは最小構成の開発環境ですから、これで十分だと思ってます。 いろいろ必要ならAll-in-Oneを使えばいい、とも思います。 極論ですが、自分にとってはインストーラすら不要です。 できるなら、圧縮ファイルだけ用意してもらって、 自分で解凍、PATH設定をしたいくらいです。 なんたってインストールすればレジストリが汚されますから。
その他の回答 (6)
- bnosuke-x
- ベストアンサー率39% (43/110)
ご質問とご回答のやりとりを拝見して、私も「はて?」と思ったのでちょっと調べてみました。 http://java.sun.com/javase/ja/6/webnotes/install/jdk/install-windows.html ↑SUNのインストール説明によると、 「省略可」とあり、説明も「コマンドラインでの実行時にフルパスを入力せずとも良くなる」と言う旨の説明がありました。 つまり、単に、コマンドラインでの実行時に楽ができると言うことですね。 それ以上でも以下でもないと、私の中では決着がつきました。 皆さんはどうですか?
- myst_scientist
- ベストアンサー率27% (10/37)
>ユーザーが作成したfileをコンパイルするために関連付けが必要ということでよいのでしょうか・・・。 「関連付け」とは、ファイルの種類によって処理するアプリケーションを決めることを言います。 (ファイルの拡張子が"doc"であり、ダブルクリックでWordが開くのは、「docという種類のファイル」はWordに「関連付け」られていて標準の動作が「開く」に設定されているから) また、PATHの設定は必須ではなく、記述を短くするためのものですので、この表現は適切ではありません。 >DOS上(JDK)からコンパイルする時には、相互のパスは必要 必要です。 しかし、DOS上ではCDコマンドによってフォルダを移動できます。 たとえば、Aフォルダまで移動したらその中のファイルはファイル名だけで判別できるようになります。 また、PATHを設定しておけばフォルダを移動せず、判別はできます。 先例あげた"javac"コマンドは"C:\Program Files\java\jdkxxxx\bin"フォルダ下の"javac.exe"を表しており(EXEファイルなら拡張子を付ける必要はない)、このファイルに対して、ファイル名を渡すことで該当のファイルをコンパイルしてくれます。 またEclipseは統合開発環境で、少なくともコンパイルは自動で行ってくれます。 しかし、コンパイルを行うにはコンパイラが必要でありますが、EclipseでSun Microsystems社のJavaコンパイラ(javac.exe)を使う場合は、その場所を知らせる必要があるのでそのためのPATHの設定だとおもいます(PATHの設定を求められた事が無い(JDKのインストールの後で行っている)ので確証無し)
- myst_scientist
- ベストアンサー率27% (10/37)
>ワードとかはインストール時には少なくともユーザーはPATHの設定を求められません ワードはユーザ独自のファイルを用いて実行していないので、本体の場所さえわかれば実行できます。この場所を示しているのがショートカットです。 対して、コンパイルを行うときは、自分で作成したファイルを用いる必要があります。 しかし、その時ショートカットでファイルの場所を渡す(ショートカットの「リンク先」にファイルの場所と名前を加える)というやり方は(多分)可能ですが非現実的である(コンパイル対象が毎回違うから)のでコマンドプロンプトで記述する方法をとります。 >「PATHを設定することでコマンド名だけで実行できるようにさせることもできますよ」 >これはショートカットからEclipseを立ち上げることを言ってるのでしょうか。 全く違います。 PATHに C:\Program Files\java\jdkxxxx\bin と設定していれば C:\Program Files\java\jdkxxxx\binフォルダの直下の実行ファイルがコマンドのように扱えるという意味です。 要するにPATHを設定していなければ C:\Program Files\java\jdkxxxx\bin\javac ファイル名 設定していれば javac ファイル名 でコンパイルできるということです。 この意味が分かれば 「パスを記述してコマンドを実行させるのは面倒くさいという人のために、PATHを設定することでコマンド名だけで実行できるようにさせることもできますよ」 の意味も理解できます。 あるいは C:\Program Files\java\jdkxxxx\binフォルダ(インストール方法、バージョンによって違いあり、xxxxはバージョン)の中を見に行けば、理解しやすいと思います。 >どのようなアプリケーションの場合にはこれが必要になるのでしょうか。 わたしの経験の中ではボーランドのC/C++コンパイラでこれを行いました。 >PATH設定の画面を見ると他にもPATHが自動的に?設定されているようでした。 大体はOSのインストール時に設定されるもので、 OSの本体の場所、一時ファイルの保管の場所などが記述されています。 OSを除くアプリケーションインストール時に設定されるものは少ないと思います。
>何故JDkの場合には普通のアプリケーションをDLした場合とは違ってこのような作業が必要なのでしょうか。 JDKを利用するのに、PATHの設定は「不要」だからです。必要ないから設定しない、ということでしょう。 PATHを指定しなくてもJDKは使えます。ただ、面倒くさいだけです。 「パスを記述してコマンドを実行させるのは面倒くさいという人のために、PATHを設定することでコマンド名だけで実行できるようにさせることもできますよ」ということであって、「そうしなければいけない」ということではないのですから。 また、PATHを追加すれば常に便利になるわけでもありません。例えば、複数のJDKがインストールされている状態ですべてのJDKのPATHを設定してしまったら、特定のJDKを利用するのが恐ろしく面倒くさくなります。また、PATHはJDK以外のアプリケーションも使用しますから、もし、たとえばたまたまあるプログラムをインストールしたら、そのプログラムが「javac.exe」というファイル名だったら? JDKのjavacコマンドが機能しなくなるでしょう。 更には、利用するJavaの開発環境によっては、PATHの設定方法を変更しなければならないこともあります。広く使われるのが、JDKのインストール先をJAVA_HOME変数に設定し、これをPATHに追加するというものですね。これは普通のJava SE開発ではほとんど不要ですが、サーバーサイド開発を行う場合(Tomcat等を利用する場合)は必ず行うことになるでしょう。 こうしたことを考えると、PATHは利用者自身が自己の責任において設定したほうがはるかに安全です。逆に、何の説明もなく勝手にPATHを追加してしまうプログラムのほうが問題のように私などは思うのですが。
補足
>JDKを利用するのに、PATHの設定は「不要」だからです。必要ないから設定しない、ということでしょう。 余計に混乱してきたのですが、他のワードとかのアプリもある意味では「コマンドを実行してる」と思うのですが、ワードとかはインストール時には少なくともユーザーはPATHの設定を求められませんが。JDKはPATHの設定(環境変数の設定のことです)を求められます、その単純な違いと疑問の答えが知りたいだけなのですが。 >「PATHを設定することでコマンド名だけで実行できるようにさせることもできますよ」 これはショートカットからEclipseを立ち上げることを言ってるのでしょうか。 >「パスを記述してコマンドを実行させるのは面倒くさいという人のために、PATHを設定することでコマンド名だけで実行できるようにさせることもできますよ」 これはDOSからコマンドプロンプトで実行することを言ってるのでしょうか。 以上宜しくお願いします。
- koko_u_
- ベストアンサー率18% (459/2509)
>普通のアプリケーションをDLした場合にはこのような作業は行いませんが、 >なぜJDkの場合にはこのような作業が必要になるのでしょうか。 人は「スタート」→「プログラム」からアプリケーションの実行ファイルを探しますが、コンピュータはアプリケーションの実行ファイルを %PATH% 配下のディレクトリから探すから >Eclipse単独(JDkを含んでいる?)ですべてインストールできる >パックのようなものを以前DLしたことがあるのですが、 >何処かからDL出来るのでしょうか。 All-In-One-Eclipse カナ? インストーラが %PATH% 変数を設定してくれたりするのでしょう。
補足
>人は「スタート」→「プログラム」からアプリケーションの実行ファイルを探しますが、コンピュータはアプリケーションの実行ファイルを %PATH% 配下のディレクトリから探すから ⇒ このコメントは理解出来ましたが、何故JDkの場合には普通のアプリケーションをDLした場合とは違ってこのような作業が必要なのでしょうか。 要は自動で「実行ファイルのPATHを」書き込まないということでしょうか。
- x1va
- ベストアンサー率26% (802/3006)
javaに限った話ではないのですが、頻繁に使うコマンドの場合、環境変数PATHにコマンドが格納されているフォルダを登録しておくと、呼び出す際にいちいちフルパスで記述せずに済むからです。 C:\Program Files\Java\jre[バージョン番号]\bin\java とするよりも単に java で呼び出せた方が楽ですよね。
補足
でも、他のアプリケーションは、実行ファイルを、「C:\Program Files\Java\jre[バージョン番号]\bin\java」とフルパスでは呼び出さずにショートカットのアイコンからアクセスしていますが、これは基本的にパスが構成されているからですよね。 JDKはbinFileの場所を人間が指定してやった後にショートカットからアクセスしていますが、他のアプはこの作業を行いません。 この違いが理解出来ないのですが。 単にJDKの場合は、わざわざ人間が指定してやるスペック?になっているという理由だけですかね。
補足
myst_scientistさん、回答有難う御座います。 ユーザーが作成したfileをコンパイルするために関連付けが必要ということでよいのでしょうか・・・。 Eclipseをエディターとして使ってJAVAのコードを書いているので、自分のエディター上にあるコード(file)のパスはわかるような気がするのですが。 メモ帳で書いたコードをDOS上(JDK)からコンパイルする時には、相互のパスは必要みたいな気もするのですが・・・。