Tags: java

早い話

MacOSとOracle JDK 8u65 以上の組み合わせだと、たいていのJavaアプリはやたら遅くなるようです。MacOSにJDKをいれてEclipseやIntelliJでJavaを書いている人は要注意です。Sierraでの現象ですが、El Capitanでも同じかもしれません。

2016/12現在の最新版である8u112でも解消されていませんでした。一番確実に解消する方法は、Oracle JDK 8u51まで戻ることです。少なくとも私の環境ではそれで解決しました。

ことの発端

秋にようやくMacBookの新製品が発表されたので、やや年季の入った開発用のPCを買い換えたエンジニアは多いのではないでしょうか。私もその一人です。

ESCキーが無い!という新Mac Book Proの大胆なデザインに若干の不安を覚えつつも、慣れの問題だな、という程度だったことにほっとしつつ開発環境を作り終えて、いざ自分のコードをgit cloneして起動してみると、なんだかやたら時間がかかる。

古いMac(El Capitan)で10秒かからず起動していたSpringBoot/SpringMVCアプリケーションが、起動処理の終了までに30秒以上かかるようになってしまいました。

brew cask install java でインストールされていたJDKは8u112 . 実はこれが敗因だった模様。アンインストールして手動でダウンロードした8u65を入れたのですが、症状は変化なし。そこでさらに8u51まで戻したら、ようやく従来通りの起動スピードにまで回復しました。

あれこれググっている間に見つけたのがこれ。


どうやらMacOSのネットワークまわりのAPIとJDK 8u65以上のそれとの接続部分に問題を抱えたままのようです。/etc/hosts の調整でどうにかなりそうという話もありますが私はためしていません。

古いJDKに戻ることを推奨するのは正直気が進みませんが、開発作業にここまで影響を与えるようでは背に腹はかえられません。それにこれはMacOSとJDKの間の限定の問題なので、開発したアプリをLinux等にデプロイして運用する場面では問題ないでしょう。

年末年始、ちまちまと勉強したりしようと思ってるJavaエンジニアのみなさまにお役に立てれば幸いです。
Happy Hacking ! そして Merry Christmas.