42086


JREとJDKの違いが、いまいち分かっていません。  
JREは実行時に必要、JDKは開発時に使う、JREはJDKに含まれている、というような、[ここに書かれているような内容](http://www.task-
notes.com/entry/20140810/1407599796)程度のことは分かっています。

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

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

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

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


CC BY-SA 3.0
2018-03-02T00:42:41.733
42085
2018-03-02T12:20:03.360
2018-03-02T00:48:15.423
8078
8078
question
java
JavaのJREとJDKの違い


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

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

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

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

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


CC BY-SA 3.0
2018-03-02T01:00:03.760
42086
2018-03-02T01:12:23.453
2018-03-02T01:12:23.453
21092
21092
42085
answer


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

（ややこしい話なので自信がありません。違うぞという方は訂正をお願いします。）

まず変更されたのはOracleJDKだけではなくOracle Java SE全体の話なのでJREのサポートも影響を受けます。Java
SEのサポート期限が切れるとJDKだけでなくJREのパッチも提供されなくなります。JREにパッチを当てるには最新もしくはLTSのJava
SEに移行する必要があります。そしてその最新もしくはLTSのOracleJDKが有償になるという話ではないでしょうか？  
有償サポート契約を結ぶか無償のOpenJDKを使用すれば問題ありませんが、その場合はそもそもこのような質問には至らないはずですし…。


CC BY-SA 3.0
2018-03-02T03:15:27.447
42088
2018-03-02T03:15:27.447
4236
42085
answer


Server JRE という本番環境用？のJREもあります。  
一般論ですが、特に理由がなければServer JREを使い、ソフトウェアの要件でJDKが必要な場合はJDKを入れるというのが良いかと思います。


CC BY-SA 3.0
2018-03-02T12:20:03.360
42096
2018-03-02T12:20:03.360
5008
42085
answer