質問する背景
私は以前からJavaEEを使用してWebアプリケーションを作っていました。
JavaSEの提供体系が大きく変わり、有償サポートとなること、無償でサポートを受ける場合OpenJDKへ移行する必要が有ることなどをきっかけにJDKやJavaSE、JavaEEについて調べ始めました。
調べているうえで分からない点を質問させて下さい。
調べた事
- JavaSEとは標準のAPIであり、例えばSystem.out.printlnなどもこれに含まれる。(参考(1)では「JavaSE API」参考(2)では「JavaSE」と表記されている。個人的にはこれ自体をJavaSEというのではなく、これはあくまでJavaSE APIと解釈した方がしっくりくる。)
- JREとはJavaを実行するJVMやAppletなどの実行環境と上記APIを合わせたもの。
- JDKとはJavaを開発する時に必要なものであり、例えばjavacやjavadocなどがこれに含まれる。また、上記JavaSEやJREも含まれる。
- 上記3つを合わせてJavaSEと呼ぶ(一つ目の項目がJavaSE APIであり、JDK全体をJavaSEと呼ぶのが個人的にはしっくりくる。)
- JavaEEはJavaSEにWebアプリケーション開発用の機能を足したもので、例えばJSPやServletがこれに含まれる。動かすためにはglassfishなどの対応したサーバーが必要。TomcatはJavaEEの一部機能に対応している。
参考
(1)https://www.oracle.com/technetwork/java/javase/tech/index.html
(2)https://ossipedia.ipa.go.jp/nfs/pdf_pub/1007/208/671/671.pdf
質問0
上記調べた事のうち、間違えて解釈している部分があったら教えてください。
質問1
①https://www.oracle.com/technetwork/java/javase/tech/index.html
②https://ja.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition
①の画像ではJDKはJRE(JVM等)を含んでいますが、②の画像ではJDKはJRE(JVM等)を含んでいません。どういうことでしょうか?
②の画像を見るに、JavaEEがJavaSEをすっぽり包んでいるので、JavaEEのバイナリファイルがあって、その中にJavaSEも含まれると思い込んでいたのですが、調べるとどうやらその解釈は間違っていますよね?
質問2
なぜJavaSEは「JDK」 JavaEEは「SDK」という表記なのでしょうか。その違いはなんなのでしょうか。
JavaSE
https://www.oracle.com/technetwork/java/javase/downloads/index.html
JavaEE
https://www.oracle.com/technetwork/java/javaee/downloads/index.html
質問3
JavaSEはJDK 8, JDK8u5, JDK 8u11...のように定期的にバージョンアップしていますが、JavaEEはずっとバージョンが7.0や8.0のままなのはなぜでしょうか。脆弱性対応等のバージョンアップはJavaEEにはないのでしょうか。
仮にそうだとしたら、JavaEEは脆弱なのではないでしょうか。
質問4
https://384uqqh5pka2ma24ild282mv-wpengine.netdna-ssl.com/wp-content/uploads/2016/04/release-dates-1.png
JavaSE〇リリースの約2年後にJavaEE〇がリリースされていますが、両JDKは対応しているのでしょうか。
※例えばJDK8のサポートが2019年1月で終了(=JDK8の脆弱性修正パッチが提供されないようになる)しますが、それは「JavaEE8のサポートが2019年1月で終了する」と読み替えて良いのでしょうか?
違うとしたら、JavaEE8のサポートはいつまでなのでしょうか?(そもそも、質問3にあるようにJavaEE8の修正パッチが配布(=サポート?)されているのか不明なのですが・・・。)
質問5
IDEでWebアプリケーションを開発するときに、Tomcatでサーバーを起動し実行しているのですが、
TomcatでJavaプラットフォームを選択するときにJDK 1.8(これがなぜ8ではなく1.8という表記なのかも良く分かりません。)を選択しています。
そもそもTomcat自体はJavaのコンパイル等はせず実行するだけだと思うのでJREで足りると思うのですがなぜJDKが使われるのでしょうか。
質問6
セキュリティ面で理想的なプラットフォームの選択肢として、開発環境ではJavaEEの最新版であるJavaEE8を使い、本番サーバーではJavaSEの最新版であるJDK11を使うという運用になるのでしょうか。
その場合、バージョンの違いによる仕様の違いは影響ないのでしょうか、あるとしたらどのように吸収するのでしょうか。
JavaEEのバージョンはそのままに、JavaSEのJDKのバージョンだけ上げて行っても問題ないのでしょうか。
補足
調べれば調べるほど、良く分からなくなってきます。
恐らく根本的な解釈が間違っているので頓珍漢なことを聞いていると思います。
何処の考えたかがそもそもおかしいかを教えて頂けると助かります。
レベルの低い質問だと思いますが、宜しくお願い致します。
回答3件
あなたの回答
tips
プレビュー