JavaのJREとJDKの違い

投稿者: Anonymous

JREとJDKの違いが、いまいち分かっていません。
JREは実行時に必要、JDKは開発時に使う、JREはJDKに含まれている、というような、ここに書かれているような内容程度のことは分かっています。

開発環境にJDKが必要なのは間違いないと思いますが、では、本番環境は常にJREを使うべきなのでしょうか?
ここで想定しているアプリケーションは、JBossEAPなどの上で動くウェブアプリケーションであり、本番環境とは、自社で運営するクラウドサービスのサーバであったり、顧客に社内に構築されたサーバであったり、というものです。

「JREは実行時に必要、JDKは開発時に使う、JREはJDKに含まれている」という程度の知識しか無いため、本番環境は常にJREにすべきなのか、JDKを使っても良いのか、あるいはJDKを使う方が良いケースがあるのか、その判断基準がありません。

この判断基準となるような、具体的な違いを知りたいです。

また、OracleJDKのサポートサイクル(バグフィックスやセキュリティパッチのリリース)が変更になりますが、この点についても疑問があります。
もし本番環境にはJREしか使わない場合、開発環境のJDKにセキュリティパッチが当たらなかったとして、本番環境にはどのような影響があるのでしょう?
本番環境のJREにきちんとパッチがあたっていれば、アプリケーションの運用には特に問題が無いのでしょうか?

解決

ミドルウェアなどの動作にJDKが必要であればJDKを使いますが、基本的にそれらはJREだけで動くようにつくってあるはずなので、JREだけで十分です。ただし、障害時の解析に必要なjstackやjmapなどのコマンドはJDKに含まれているので、JDKを入れた方が無難です。

ちなみに、JBoss EAPはJDKの使用を推奨していますが、JREでも問題なく動作するはずです

[参考]
https://access.redhat.com/solutions/18259

もし本番環境にはJREしか使わない場合、開発環境のJDKにセキュリティパッチが当たらなかったとして、本番環境にはどのような影響があるのでしょう?
本番環境のJREにきちんとパッチがあたっていれば、アプリケーションの運用には特に問題が無いのでしょうか?

本番環境のシステムがJREだけで動作するのであれば、JDK(JREではない部分)にセキュリティ脆弱性があっても問題はありません。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *