• 締切済み

Eclipseに「JDK」を設定する理由が不明です

Eclipseの設定「インストール済みのJRE」に「JDK」を設定する理由が分かりません。 WEBや書籍では、「JRE」から「JDK」に変更しなければならないと非常に多くの記載が見受けられるのですが、理由がよく分かりません。 「JRE8」を設定しているのですが、Tomcat8ならJSPをコンパイルできますし、何も困ることはないのでは? と思っています。 実際、開発で困ることは何があるのでしょうか? 現状、何も困っていません。 Eclipseには独自のJavaコンパイラが搭載されていますので、JavaのコンパイルにJDKは不要です。 昔はTomcatでJSPがコンパイルできないからということで注意書きが多かったですが、未だにそういうことを書いてあるWEBや書籍があります。今のTomcatならJREのままでも問題ないので、結局、何の為にJDKに設定し直しているのか分からないWEBや書籍ばかりです。 実は不要なのでは? という疑問が湧きます。

みんなの回答

noname#247307
noname#247307
回答No.3

> 未だにそういうことを書いてあるWEBや書籍があります。 そうした説明をしているのは、たいてい入門書の類ではないでしょうか。ビギナーには、なるべく問題を起こしにくい環境を提示すべきです。何か問題が発生したとき、その原因を特定しやすくするためです。JDKではなくJREを指定したがためにうまくいかないことがあるとビギナーは困りますから。 >実際、開発で困ることは何があるのでしょうか? 既にあがっていますが、デバッグ時の問題。またEclipseではJavaDocの説明をポップアップする補完機能がありますが、これはJREでは使えません(ソースがないため)。JDKを設定する必要があります。 また「Tomcat8ならJREでもいい」ということは、逆にいえばTomcat8でない環境の場合はJREでは困ることになります。Webアプリケーションは最終的にサーバーにデプロイして動かしますから、サーバー側がTomcat7のままの場合、開発環境もTomcat7で開発するでしょう。 また、Tomcat以外のサーバーを使う場合も多々あります。例えば、最近はWebアプリケーション開発にフレームワークを利用するケースが増えていますが、Play FrameworkやSpring Bootを利用する場合、これらは外部サーバーを使用しません。フレームワーク内にサーブレットコンテナをもっており、それをアプリケーションとして起動して動きます。こうしたフレームワークを使用している場合、JDKを使って起動しないとトラブルに見舞われるでしょう。 更には、フレームワーク利用のプロジェクトでは、ビルドツールとしてMavenを利用することが多いと思います。MavenはJREでは動きません。JDKが必要です。 この他にも、JREでは動かずJDKが必要となるプラグインやフレームワークはけっこうあります。単純に「Tomcat8でJSP/サーブレットだけで開発する」というなら別ですが、Web開発においては幅広いフレームワークを利用することが多く、そんなシンプルな開発ケースのほうが少数派でしょう。さまざまなフレームワークやプラグインの利用を考えたら、最初からJDKを設定しておいたほうが安全確実です。

ultra_haha_hair
質問者

お礼

こんなにも分かりやすく解説くださった方は初めてでした。 本当に、ありがとうございました。 すごく参考になりましたし、納得できました。 こちらで質問して、本当に良かったです。

  • KSOH
  • ベストアンサー率93% (29/31)
回答No.2

JDKを設定する利点は標準提供ライブラリ内がソースレベルでデバッグ可能になることだと思います。これは必ずしも必要ではないでしょうが、ライブラリの中の動作を確認したいというときには便利です。 個人的には自分がよく仕組みを理解できてなかったり、仕様を勘違いしていたりという場合に、デバッガでライブラリの中の動きを観察することで問題を解決するということがままあります。

  • ninoue
  • ベストアンサー率52% (1288/2437)
回答No.1

あまり詳しくはありませんが、breakpoint設定、step実行などのデバッグ時にアプリケーション側のみで対応出来るのであればJREのままでも良いのだと思われます。 しかしruntime package内やOSインターフェイス等も調べていく必要が出てきた場合などでは、JDKの中のjava runtime source等も含めてステップ実行、subroutine parameterの確認等が必要になりそうです。 JREだけではこれらも含めての詳細デバッグ等に対応出来ないので、JDKもインストールしておく必要があるのだと思われます。

関連するQ&A