Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

詳説GraalVM(2) 背景事情と情報収集法

詳説GraalVMの第1回として、GraalVMの概要を書きました。

www.sakatakoichi.com

第2回は開発の背景事情と情報収集方法を書きます。使い方はきっといろんな方が書いておられると考えたからです。GraalVMファンとして、他の方があまり書かないマニアック情報を提供します。

GraalVMの日本語初出記事

GraalVMの日本語初出記事は、おそらくJava Magazineではないでしょうか。

http://www.oracle.com/webfolder/technetwork/jp/javamagazine/Java-SO12-Polygot-interview.pdf

これはJava Magazineの2012年9月10月号です。Java Magazineって何?という方は私の過去のエントリをお読みください。

この記事でインタビューを受けている方が、Thomas Wuerthingerさんです。現時点までずっとGraalVM関連の開発者です。Oracle Labsという研究部門?所属です。

ヨハネス・ケプラー大学

Oracle Labsもロケーションが複数ありますが、ThomasさんはOracle Labs Austria(オースト"リア")所属です。Oracle Labs Austriaはなんとヨハネス・ケプラー大学内にあります。

Oracle Labs Austria is located at the Johannes Kepler University, Linz. https://labs.oracle.com/pls/apex/f?p=94065:23:9603388030587::NO::P23_LOCATION_ID:24

つまり、Oracle Labs Austriaはヨハネス・ケプラー大学と共同で研究をしています。Oracle Labs AustriaはGraalプロジェクト = GraalVMの開発がメインですので、GraalVMはOracle Labs Austriaとヨハネス・ケプラー大学によるものと捉えてよいでしょう。Thomasさんもこの大学の卒業生です。

GraalVMについて学ぶときは、このヨハネス・ケプラー大学(JKU)は避けて通れません。JKUのwebサイトにはJVM研究のページがあります。

Compiler and JVM Research at JKU

ここに第1回で説明しているGraal JITコンパイラ、そしてTruffleの項目があるのがわかります。ほかにもCoroutinesやContinuationsなど、興味をそそられるものがあります。

この話で何が大事なのかと言うと、大学で研究しているということは、"論文が書かれている"ということです。論文は非常に優れたドキュメントです。推敲して書かれ、データが取られ、レビューされた良質なものです。パブリックに公開されているものもありますし、ACM Digital Libraryにある場合は論文1つ$15です。論文を読み進めていくと、GraalVMについて多く知ることができます。

私もいくつか読んでいます。英語論文!?と身構えてしまった方は私の過去のエントリをぜひお読みください。私は文系プログラマ、留学/外資系経験なしの受験英語のみですが、読めています。

日本語情報

やはり日本語での情報は極めて少ないです。先日のGraalVMリリースに合わせて技術系サイトInfoQからThomasさんへのインタビュー記事が出ており、その翻訳も出ています。

www.infoq.com

出ています、というか翻訳したのは私です。GraalVMの歴史や概要、今後について、そしてOpenJ9とのアプローチの違いなどを話されています。

GraalVMとOpenJ9それぞれの言語実装アプローチの違いについては、少し私のスライドにも記載しています。

www.slideshare.net

他の日本語資料として昨年JJUG CCC 2017 Springで日本オラクル西川さんが話されたスライドがあります。

www.slideshare.net

カンファレンス動画

GraalVMについて情報収集する別のアプローチがあります。今や世界中のカンファレンスがYouTubeにセッション動画をアップしています。"Graal java"で検索すれば、簡単にGraalVM/Graal JITコンパイラのセッション動画を見つけられます。そして、それらのセッションのスピーカーは前述のThomasさんのものも多いです。

www.youtube.com

私もこうしてGraalVMのセッション動画をおそらくすべて見ました。また、著名なカンファレンスはチャンネル登録しておくのがオススメです。私は"Devoxx"、"Jfokus"、"FOSDEM"、"jeeconf"、"Devoxx Poland"、そして"Java"チャンネルを登録してます。とくにDevoxxはVoxxed Daysという子カンファレンスも配信していますので、毎月のように更新されます。

Twitter社

上述のInfoQの記事にもあるように、Twitter社はGraal JITコンパイラを数年前から本番環境で使用しています。

Twitterはアーリーアダプタとして記録されており本番環境でGraalを実行しています。

Twitter社にはVMチーム(=JVMチーム)があります。OpenJDK 8にGraalをバックポート(!)し、C2の代わりにGraalを使用してリソースの使用率を少し下げ、(Twitter社では多くのサーバを使っていることから)かなりのコスト削減となったそうです。

YouTubeで検索すると、Twitter社のChris Thalingerさんのセッションも多く出てきます。

www.youtube.com

私も海外カンファレンスに参加した際、2回ほどChrisさんのGraalのセッションを聴いており、さまざまなカンファレンスでGraalのことを話されています。ChirisさんはVMチームのメンバーです。

このChrisさん、実は今月5月17日にあるJava Day Tokyo 2018に来られます!

www.oracle.co.jp

"Graal: How to use the new JVM JIT compiler in real life"というセッションです。すでに満席のようですが、当日多少の席はあるかと思います。日本でのセッションなので同時通訳があります!

他にもたくさん開発者がおられます

GraalVMにはほかにもたくさん開発者がおられます。たとえばGraalVM上のRuby実装TruffleRubyを"インターンで"開発したChris Seatonさん。GraalVMそのものもセッションで話されています。

www.youtube.com

とくに個人サイトに書かれたGraal JITコンパイラとJVMCIについての記事は"最高"にいいです!

Understanding How Graal Works - a Java JIT Compiler Written in Java

今回はここまで。