Maxで使えるJavaのバージョンが8になっていた

Ableton/Cycling'74のMaxでは、いくつかの(Max以外の)プログラミング言語を使えるようになっています。Cycling'74が公式にサポートしているものにはJavaJavaScriptLuaがあり、エクスターナルを書くことを考えるとC/C++もあります。Max専用のDSLとしてGenExprもありますね。

Mac向けのMaxでは、Appleが用意していたJava 6だけがサポートされていて、Oracle版のJava 7以降はMaxでは使えないという状況が続いていました。Ableton/Cycling'74のユーザーフォーラムにも「Is installing Apple Java SE 6 unavoidable to use Max for Live on Mavericks?」などのスレッドが立っていて、セキュリティの心配があるJava 6を使わないといけないことへのJavaユーザの不満が綴られています。(Windowsではこの問題はなかったようで、新しいJavaへの対応は進んでいたようです)

そのスレッドに数ヶ月前、「Max 7.3ではOracle Javaの新版をサポートしたみたいだよ」とリンク(https://cycling74.s3.amazonaws.com/support/java_install.html)が張られました。Max 7.2.5Max 7.3.0のリリースノートを読み比べると、Java対応に関しての記述が変更されています。このリンク先をザックリまとめると、

となっています。ただ、文書内のJavaバージョンは「jdk1.8.0_91」となっていて、macOS 10.13 High SierraならびにJava 9の登場前のドキュメントっぽいです。

ためしに、今日時点で入手できるJava 8の最新版JDK 8u151をmacOS 10.13にインストールして試してみました。

$ java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

で、/Application/Max.appについて「情報を見る」で「32ビットモードで開く」をオフにします。(下記スクリーンショットではオンになっています)

f:id:amarui:20171023123808p:plain

すると、ちゃんとmxj~のヘルプも動いてくれるようになりました。

f:id:amarui:20171023124057p:plain

ただ、64ビットモードにするといくつかのオブジェクトが動作しなくなる問題があります。また、Java 8で自作エクスターナルを作ったとしても、他の人に使ってもらうためにはJava 6への下位互換性を考慮して「javac -target」の指定をする必要がありそうです。

なお、Max 7のオンラインドキュメントにはmxjとmxj~のリファレンスが見つからない状態になっていますし、ローカルにインストールされているチュートリアルやドキュメントはMax 4時代から更新がなさそうで、今後のJava対応に関しては悲観的ではあります。ちなみにJava関連の一式は /Applications/Max.app/Contents/Resources/C74/packages/max-mxj にインストールされています。

*1:2015とあるけど中身のバージョンは2013年から変更なしのJava SE 1.6.0_65です。