質問するログイン新規登録

Q&A

解決済

3回答

560閲覧

JDKの選択方法を知りたい

foromipyo

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2025/12/05 06:59

0

0

実現したいこと

JDKのVendorは複数の選択肢があって何を選べば良いですか?

イメージ説明

試したこと

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

maisumakun

2025/12/05 07:33

どのような環境で動かすことを念頭にJavaの開発を行おうとしている状況でしょうか?
foromipyo

2025/12/05 07:38 編集

WindowsでJavaの勉強かつ個人個人開発用途です。 用途に合わせて選択する必要があるのでしょうか?
maisumakun

2025/12/05 08:29

> 用途に合わせて選択する必要があるのでしょうか? はい。例えば、既存のシステムの開発に参画する際には、そのシステムで使われているJDKに合わせるのが妥当となります。
foromipyo

2025/12/05 10:38 編集

「そのシステムで使われているJDKに合わせる」とは具体的にどのように合わせるのでしょうか? JDKのバージョンが一致していればOracleでもIBMでもMicrosoftでも良いですか? 個人開発だと何を基準にしてどのように選べば良いですか?
maisumakun

2025/12/05 10:49

> 具体的にどのように合わせるのでしょうか? 同じ銘柄・バージョンのJDKを使うのがいちばん確実です。
maisumakun

2025/12/05 10:57 編集

> 個人開発だと何を基準にしてどのように選べば良いですか? どのようなものを開発するのでしょうか? (プログラミング自体の勉強などで誰にも配布しないというのであれば、いきなりJDKの差が出るほど深いところへ踏み込むこともないでしょう。どれでもいいので適当に選んで始めることを優先したほうがいいです)
foromipyo

2025/12/05 11:34 編集

> 同じ銘柄・バージョンのJDKを使うのがいちばん確実です。 同じものを使ったほうが良いような「雰囲気」はわかるのですが、そもそもJDKを複数の企業が個別に作る必要も無いと思っています。なぜ同じバージョのJDKが複数あるのですか? OSSであればすべての企業や個人が1つのOpenJDKに対してContributeすれば質の高い1つのJDKが維持できるのではないでしょうか? 添付画像だとvendorですが日本語訳すると「銘柄」と書くのが正しいのですね。1つ理解できました。 JDKのバージョンが一致していればOracleでもIBMでもMicrosoftでも良いのではないですか? NodeやBunやDenoは同じJavaScriptランタイムですが、JDKのようにバージョンが同じという事はないです。それぞれ別々の思想を持って生まれているので、存在理由が分かります。 maisumakun さんはなぜJDKは「どれでも良い」と判断できますか? 判断基準を知りたいです。 逆に、どれでも良くない場合の例も知りたいです。
guest

回答3

0

ベストアンサー

プログラミングによる開発は何かしらのソフトウェアを作ることです。そして、そのソフトウェアは何かしらの環境(パソコン、サーバー、スマホ等)で動作させることを目的としているはずです。この開発したソフトウェアを動作させようとしている環境で使用されるOSを、ここではターゲットOSと呼ぶことにします。(もし、Javaの勉強だとしても、作ったソフトウェアをどこかで動かさなければ、Javaの開発ができた、Javaを学んだとは言えません。そのソフトウェアを動かす環境のOSがターゲットOSです。もし、開発環境でしか作ったソフトウェアを動かす予定がないというのでば、開発環境のOSがターゲットOSになります。)

このターゲットOSが決まっている場合はそのOSと最も親和性が高いJDKを選んでください。最も親和性が高いのはOSの開発元が提供しているJDKです。

OSJDK備考
Microsoft WindowsMicrosoft Build of OpenJDK
Red Hat Enterprise LinuxRed Hat Build of OpenJDKAlmaLinux等のRHEL互換OSを含む
Oracle LinuxOracle JavaRHEL互換OSの例外
Oracle SolarisOracle Java
Amazon LinuxAmazon CorrettoRHEL互換OSの例外
UbuntuUbuntu OpenJDK

※ Oracle製OSであっても、サポート期限が短いOracle OpenJDKは選ばないこと。

上記に記載がなくても、OSの開発元がバイナリパッケージとして提供している場合、親和性が高いとみなすことができます。上記以外にEclipse Temurinの開発はMicrosoftとRed Hatが参加しているため、WindowsやRHELでは第二の選択肢としてはありです。

ターゲットOSが決まっていない、または、複数ある、または、上記リストにないという場合は、次の選考基準として開発環境のOSで判断します。例えば、Microsoft Windowsで開発する場合はMicrosoft Build of OpenJDKになります。

もし、開発環境のOSでも決定できない場合は、次は開発に使うIDE(統合開発環境)との親和性になります。

IDEJDK備考
Eclipse IDEEclipse Temurin
JetBrains IntelliJ IDEAJetBrains Runtime
Apache NetBeansEclipse Temurinインストーラーで同包されているため

上記に無いIDEを使っている、または、IDE自体使わないという場合になると、総合的な判断になります。ターゲットOSが対応しているかどうか(複数ある場合はそれらすべてが対応しているかどうか)、製品として動作させるときにJDK自体の有償のサポートを想定すべきかどうか、開発元に将来的なリスクがないかどうかなどです。よくわからないから決めてほしいと言われると難しいです。最も人気があるといわれているのはEclipse Temurinですが、初期の頃からあるAzul Zulu Builds of OpenJDKも人気ですし、JavaFX同包版があるLiberica JDKを使う人もいます。あとから切り替えはできますので、片っ端からいれてみて、自分にあったものを見つけるのも一つです。

それでも一つだけ決めてほしいというのであれば、Liberica JDKをすすめておきます。理由は、Full版にはJavaFXが含まれているからです。JavaFXを使いたいという場合、他のJDKは別途用意する必要がありますが、Liberica JDKのFull版なら最初からついています。

最後にバージョンですが、これから開発するのであれば、LTSの最新バージョンを選んでください。2025年12月6日現在の最新LTSは25ですので、バージョン25を使用してください。


提供されるJDKが移り変わっても、上記の方針が変わることはありません。開発が終了したとか、統合されたとか、優勝になったとかはあるかもしれませんが、同じ方針で決定できるはずです。これは個人でも商用でも変わらないです(ただし、商用の場合は、複数のターゲットOSに優先順位をつける、有償サポートを考慮する、等のより総合的な判断になります)。

投稿2025/12/06 04:03

raccy

総合スコア21840

foromipyo

2025/12/06 09:35

raccyさん 回答ありがとうございます。 選択方法について具体的な手順を踏まえた内容を紹介していただきとても理解しやすかったです。
guest

0

勉強なら何かサイトとか動画とか書籍とかを参考にされると思います。その際指定されるのは java のバージョンだけで、何処製かというのを指定される(もしくは除外される)ことはまず無いはずです。ですので『どれでも良い』ということになります。
どうしても何かということなら、大手っぽい Microsoft とか Oracle とか、開発で良く聞く JetBrains や Eclipse 等、ご自身が信用できる名前から選ぶのは如何でしょう。

心配なら自分がどれを使っているのかさえ把握していれば、参考するモノに『○○では動きません』『○○でしか動きません』とあった時に判断出来るでしょうし、何ならその時にJDKを変えれば良いのではないでしょうか。
ちなみに私は java は少し使えますが今までそのような但し書きは見たことはありません。

投稿2025/12/05 17:38

jimbe

総合スコア13448

foromipyo

2025/12/06 09:19 編集

jimbeさん 回答ありがとうございます 「どれでも良い」という表現は理由が曖昧で「なぜどれでも良いと言えるのか」が疑問でした。 自分で調べた結果Technology Compatibility Kit (TCK) が存在している事がわかりました。 「質問内容の画像の選択肢に存在するJDKは全てTCKを実行して合格しているJDKなのでどれでも良い」という回答が自分にとっては納得のいく表現でした。
jimbe

2025/12/06 15:54

お役に立てなかったようですが、納得できるものが見つかって良かったです^^
guest

0

OSSであればすべての企業や個人が1つのOpenJDKに対してContributeすれば質の高い1つのJDKが維持できるのではないでしょうか?

多くのJDKは、OpenJDKの「ディストリビューション」というもので、OpenJDKのソースコードを元にビルドされたものです。ソースコードは共通なので、(一部に独自拡張をしているものがありますが)機能的には基本的に同じです。

どれでも良くない場合の例も知りたいです。

各ディストリビューションはOpenJDKの機能性については等しく備えていますが、実用する場合のサポート(無償でのサポート期間や有償サポートの有無)が違ったり、テストコードや独自拡張などが追加されていることもあります。

また、AWSやRedHatなど、自前環境で動かすことを念頭に独自ディストリビューションを提供している場合もありますので、そういった環境で使うなら環境に合ったJDKが第一選択となるかと思います。

投稿2025/12/05 12:30

maisumakun

総合スコア147003

foromipyo

2025/12/05 14:14

先程maisumakunさんが「銘柄」と書いていましたが、日本語訳は「ディストリビューション」が正しいのですか? Vendorは「銘柄」と「ディストリビューション」どちらが正しい書き方でしょうか? 新しい単語が出てきて混乱しています。言い回しを統一していただくか、本当に言い回しに意味の違いがあるのであれば、違いについて補足していただきたいです。
maisumakun

2025/12/05 14:54

言い方の差は、深く考えたものではないです。 ……というより、気になるところはそこなのですか?
KT001

2025/12/05 15:25

横からですが、「ベンダー」と「ディストリビューション」は、どちらも正しいので自分も気にしたことがありません。 あえて言うなら、提供者を強調したい時に「ベンダー」で、配布物を強調したい時に「ディストリビューション」と言います。英語圏では「ベンダー」と言うのも見ますが、日本の開発現場であれば「ディストリビューション」と言う方が多い気がします。
KT001

2025/12/06 02:26 編集

なお、個人開発で人気があるのはEclipse Temurinなので、迷ったらこちらを推奨します。 https://ja.wikipedia.org/wiki/OpenJDK#ディストリビューション https://newrelic.com/jp/resources/report/2024-state-of-the-java-ecosystem-jp#jdk-eclipse-adoptium ※ベンダーと表現した場合、本来はEclipse TemurinではなくEclipse Adoptiumが提供団体なのですが、Intellijは区別していませんので、「ベンダー」と「ディストリビューション」は無理に区別しなくて良いと思います ※参考までに、最後のURLにある元が英語の記事では、「JDK vendors」と「JDK 11 distribution」で使い分けています(ちゃんと英語で使い分けるとこのようになります)
foromipyo

2025/12/06 09:11 編集

IT001さん 回答ありがとうございます。 言い回しについて理解を深めることが出来ました。 Eclipse TemurinはTechnology Compatibility Kit (TCK)だけでなくEclipse AQAvitという実運用も考慮したテストも通過している事が評価されてデファクトスタンダードになっているのですね。 Eclipse Adoptium自体も1つの企業に依存しているわけではなくアライアンスのような形態になっているように見えるので個人的は安心感があります。 強く興味を持ちました。 ※追記 アライアンスではなくスポンサーが存在する団体のようでした。 投資金額によってパワーバランスが変化しそうな点は少し気になるところです。
foromipyo

2025/12/06 09:03

maisumakunさん IT001さんの回答の通り、結果的に同じ意味を表す単語でもあえて言い回しを変えてニュアンスを変える場合があります。 ニュアンスの変化ですらなく、一般的に利用されない単語を利用する事は混乱を生むだけですので利用を避けたほうが良いと考えます。 友人と一般的な雑談をしているような場であれば気に留めたり指摘するまでもないささいな事ですが、学問や技術的な内容であれば別です。 私のように混乱して学習の妨げにしかならないです。 また、teratailのような不特定多数の人が閲覧するような場所では一般的な言い回しのみをするべきだと考えます。 「サーバー」の事を「鯖」と表記する人も居ますが一般的には伝わりません。 誰かにとっては「鯖」のことは周知の事実かもしれないですが、別の誰かにとっては「鯖」は意味が伝わらない単語です。 念の為明示しますが、私が指摘している内容は「サーバー」ではなく「サーバ」と書くべきという論点とは異なります。 また、初学者が検索エンジンなどで検索した結果maisumakunさんの回答をみて「銘柄」という言い回しを利用しだしたときの影響も考えていますか? あえて別の単語や言い回しをするのであれば相応の理由が必要だと考えます。 今回の「銘柄」に関してはそもそも利用すべきではない言い回しだと考えます。 これ以上はコンテキストから外れるので返信しません。 maisumakunさんはteratailで多く回答されているようですので技術者の技術力向上やteratailのコミュニティの為に時間を割いていると推察します。 今後も誰かのためにより良い回答をしていただけることを願っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問