現地時間2021年6月8日にリリース予定となっているMinecraft 1.17は日本では時差の関係で9日にリリースされる可能性がありますが待ち遠しい限りです。
さて今回のバージョンは最悪ゲームが起動しない場合があるのをご存知ですか。
Minecraft 1.16までは正式サポートされていたJavaのバージョンがJava 8だったのに対しMinecraft 1.17からはJava 16に変更される予定になっています。
この変更はMinecraft 1.17 スナップショット 21w19aのリリースより適用されており、今後のアップデートもJava 16となる予定です。
とにかくゲームが遊べない問題を解決したい方は下記の記事を参考にJava 16をインストールしましょう。
Javaのアップデートが必要な環境
公式による発表では下記のような内容がアナウンスされました。
Minecraft now uses a more recent version of Java. If you are using a default setup the Launcher will download and install the correct version. If you are using a custom Java setup or a third-party launcher, you will need to ensure that your Java installation is version 16 or above.
https://www.minecraft.net/en-us/article/minecraft-snapshot-21w19a
Javaをカスタマイズしてセットアップしている方、公式以外のランチャーを使用している方はMinecraftが起動しないようです。
その場合はJava 16をご自身でインストールする必要があります。
ここからは余談ですが、MinecraftがJava 8からJava 16へ乗り換えを行った経緯を掘り下げていきます。
探求心旺盛の方向けの情報になりますので必要に応じて用語などは検索してください。
基礎知識
Java 8
Java 8はLong Term Support (以下LTS)と呼ばれる長期サポートが提供されているバージョンです。
このバージョンは個人向けには現在無期限でアップデートを提供するとOracleが発表しており、サポートの期限を今後設ける場合は18ヶ月前までに告知するとのことです。
商用向けの有料の延長サポートは最大で2030年12月までですが、無償の延長サポートは2019年1月をもって終了されました。
更新サイクルの変更
Java 8を最後に更新サイクルが大きく変更されました。
現在Javaは毎年3月と9月に新しいJavaをリリースするようになり、表記上のバージョンがJava 9、Java 10などのようにあがっていきます。
LTSでない通常のサポート期限はリリースより1年半(18ヶ月)で、対してLTSの場合は5年とされています。
Java 8からJava 16へアップデートされた背景
Java 8とMinecraft
Minecraftは長年Java 8で開発されてきました。
Java 8は前述のとおり商用向けのサポートが2019年1月で終了しています。
有償で商用サポートが延長されていますが、古いJavaを永遠に使いづつけるのは現実的ではありません。
今回MinecraftはJava 8での開発を終了しJava 16に移行したのは時代に沿った流れだといえます。
Javaに限らずプログラムの言語は日々進化し続けていますので、いつか大きな移行を伴うこともあります。
Java 16とJava 17 LTSとMinecraft
Java 16は通常のサポート期限のためリリースより1年半(18ヶ月)でサポートが終了します。
Java 17はLTSでリリース予定であるため5年間サポートがされる予定です。
次期バージョンを待てばLTSに乗っかることができますが、Java 16に以降がされる選択がされた理由はMinecraftの時期バージョンのリリース予定時期が関係します。
Minecraft 1.17は2021年夏頃を予定しておりますが、Java 17のリリース予定は2021年9月です。
同じ言語とはいっても長い年月Javaをアップデートしてこなかったため新バージョンへの移行をすることで思わぬ不具合が出たり、そもそも仕様が変わった部分などが出てきます。
Minecraft 1.17のリリース予定次期あたりでJava 17へ急いでアップデートするのは難しいため一旦Java 16へのアップデートを決めたのだと想定されます。
Minecraftの今後とModder
Minecraft 1.18ではJava 17(LTS)へ移行すると思われます。
今回開発者がJava 16(非LTS)を使用したのはLTS版でなくても時期によってはJavaをアップデートする可能性があることを示した例であると考えられます。
MinecraftをカスタマイズするModderと呼ばれる方たちにとっては賛否が分かれるのではないかと勝手に思っていたり。
私はBukkit/SpigotプラグインをJava 8で書いているが、Java 8以降のバージョンのうま味は分からないもののバージョンが突然大きく上がるより小さいステップを上がっていく方が楽な気はしている。
どちらにせよMinecraftを深堀するプレイヤーの根気強さは並大抵ではないので心配はしていないっ。
私が今まで開発してきたBukkit/Spigotプラグインは大概Java 8なので是非プルリクエストを送って欲しい。