ほんとはjdk10をビルドしてvarの世界を体験するエントリだったのだけど、ここでバイナリが提供されたので、Amberの話にします。
Project Amberは、Javaにパターンマッチングを導入するプロジェクトです。
varによるローカル変数型推論もAmberの一部だったのだけど、これはjdk10に取り込まれました。jdk10はリポジトリ名で、実際のリリースがJDK10になるかどうかは不明です。
Amberのパターンマッチングがどうなるかというのは、以前ブログにまとめています。
http://d.hatena.ne.jp/nowokay/20170103#1483451037
で、これを試してみるために、ソースをビルドして動かしてみます。今回は、Linux、Mac、Ubuntu on Windowsで試します。
Linux(Ubuntu)でのビルド
ソースをとってきて、ブランチを切り替えて、configureしてmakeというのがビルドの流れです。
ちなみに、OSと必要なライブラリなどあわせて15GBくらいディスクを使うので仮想環境では20GBくらいディスクをとっておく必要があります。ソースとビルド生成物はあわせて6GBくらい。
ビルドにはJDK 9が必要です。
~$ mkdir java ~$ cd java java$ wget http://download.java.net/java/GA/jdk9/9.0.1/binaries/openjdk-9.0.1_linux-x64_bin.tar.gz java$ tar zxf openjdk-9.0.1_linux-x64_bin.tar.gz
Mercurialをインストールします。
java$ apt update java$ apt install mercurial
ソースをとってきて、patternsブランチに切り替えます。cloneは結構時間がかかるので、お風呂とか入るといいと思います。
java$ hg clone http://hg.openjdk.java.net/amber/amber java$ cd amber amber$ hg update patterns
今までのビルド手順だとget_source.shを動かしてソースをとってきていましたが、リポジトリ一本化によってcloneだけでよくなったみたいです。amber/amber10-oldなどだと古いパッケージ構成なので、get_source.shが必要のはず。
必要なパッケージをインストールします。
amber$ apt install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev amber$ apt install lib-cups2-dev lib-freetype6-dev lib-asound2-dev
では、ビルドを。ビルドにはかなり時間がかかるので、ごはんの支度とかするといいと思います。
amber$ bash configure --with-boot-jdk=~/java/jdk-9.0.1 amber$ make images
configureのときに足りないパッケージはエラーメッセージで教えてくれるので、うまくconfigureできないときは確認してインストールしてください。
さて、ごはんもできたと思うので、おいしくいただきましょう。ついでにJShellも起動してみます。
というか、matches???聞いてないよーーー
matches、キーワードがどうなるかはともかく、かなりキモい仕様になっています。ということで、あとでこのあたりまとめてみます。
ここで試してないけど、ステートメントとしてのswitchもパターンマッチができています。いまのところ、ソースをみる感じswitch式については実装されてない感じです。
※ matchesが使えないときは、patternsブランチに切り替え忘れてないか確認してください。
Macでのビルド
Macでのビルドには、freetypeをインストールしてFreeType関係のオプションを指定する必要があります。
brew install freetype
configureはこんな感じ
bash configure --with-freetype-include=/usr/X11/include/freetype2 --with-freetype-lib=/usr/X11/lib --with-boot-jdk=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
※ 11/14 追記 XCodeをインストールしておく必要があるっぽい。XCode8が入ってたので大丈夫だったみたい。あと--disable-warnings-as-errorsをつけたほうがいいのかな。
macOSでOpenJDK(amber)ビルドするとエラーになってたのをクリアしてビルドした - Fight the Future
※ 2018/6/14 追記 High Sierraにしたらfreetypeの指定をするとconfigureが通らなくなっている。あとautoconfをインストールする必要があった
Ubuntu on Windows
Windows用のビルドがやりたかったのだけど、どうもVisual Studio Express 2010が必要ぽくて、インストールできなかったのであきらめた。
Ubuntuとほぼ同じだけど、makeとかが入ってないのでインストールが必要です。
~$ apt install build-essential
あとはUbuntuと同じ手順でいけるはず
2018/8/9追記
loomのインストールしてたらzipやunzipも必要だった。あとcups2などはパッケージが変わってた。
~$ apt install unzip zip ~$ apt install libcups2-dev libfontconfig1-dev libasound2-dev
プログラミングの基礎 ((Computer Science Library))
- 作者: 浅井健一
- 出版社/メーカー: サイエンス社
- 発売日: 2007/03/01
- メディア: 単行本
- 購入: 17人 クリック: 409回
- この商品を含むブログ (127件) を見る