Fight the Future

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

Graalのノードからマシンコードの生成

jvm

前回はグラフノードの生成を見ました。 jyukutyo.hatenablog.com この記事に沿ってGraalの理解を深めています。 Understanding How Graal Works - a Java JIT Compiler Written in Java 最終的には、グラフにある各ノードに対してマシンコードを生成します(…

GraalでのJavaバイトコードからグラフの生成

前回はGraalのグラフを見ました。 jyukutyo.hatenablog.com 実際にどのようにグラフを作るかという謎はありますが、視点を変えて実際にJavaバイトコードをマシンコードに変換する部分を見てみます。 Chris Seatonさんの記事に沿ってGraalの理解を深めます。 …

Graalのグラフ

こちらの内容に沿って、Graalの理解を深めています。 Understanding How Graal Works - a Java JIT Compiler Written in Java 前回はGraalにJITコンパイルをさせました。 jyukutyo.hatenablog.com 今回はGraalのグラフについてです。いわゆるプログラム依存…

JITコンパイルが使うコードキャッシュ

jvm

前回JITコンパイラで"コンパイルしたコードは戻り値で返すのではなくコードキャッシュにインストールする"と書きました。 jyukutyo.hatenablog.com ではコードキャッシュとは何でしょう?単純化して言うとJITコンパイル後のマシンコードをキャッシュする場所…

Graalが使うJVMCIとは

前回ではGraalをJITコンパイラとして使うため、EnableJVMCIでJVMCIを有効にしました。 jyukutyo.hatenablog.com 引き続き Understanding How Graal Works - a Java JIT Compiler Written in Java を参考に、Graalの理解を深めます。 ところでJVMCIとは何なの…

GraalでJITコンパイルする

きしださんに教えていただいた、Graalについての非常によい入門記事があります。 Understanding How Graal Works - a Java JIT Compiler Written in Java Graalの上のTruffleでのRuby実装であるTruffleRubyを開発しているChris Seatonさんのブログです。この…

Java 9では"-XX:CompileOnly"は"-XX:CompileCommand=quiet"と組み合わせでおこう

jvm

前回のの投稿で、Java 8と9ではjava -XX:+PrintCompilation -XX:CompileOnly=xxxの出力が異なると書きました。 jyukutyo.hatenablog.com すると、OpenJDK Reviewerである末永さんからヒントをいただきました。 Excluding compileって特徴的ですね。これでHot…

Java 9から"-XX:CompileOnly"の出力が違ってるけどどうして?

Java 9とJava 8では-XX:CompileOnlyでの出力が異なってる…すごく大量に出力されるようになってる。 理由やここに仕様が載ってるよ、という方がいればぜひ教えてください!! 対象クラス class Demo { public static void main(String[] args) { while (true)…

JJUG CCC 2017 Fallでスピーカーをしました #jjug_ccc #ccc_c5

5回目のCCC登壇です! JJUG CCC 2017 Fall オレオレJVM言語を作ってみる from Koichi Sakata www.slideshare.net ソースコードはこちらです。 github.com このブログ投稿で実装した四則演算のTruffleでの言語実装について、セッションという形で話しました。…

Graalをビルドした

Graalはこちらからダウンロードできるのですが、 Oracle Labs GraalVM: Download ソースを読むついでにビルドしました。 Graalとmxが要ります。Graalはバージョン0.29を使います。 $ git clone https://github.com/graalvm/graal.git $ cd ../graal $ git ch…

OpenJDKのビルドに関するドキュメントがあった!

OpenJDKビルドの前回のエントリ jyukutyo.hatenablog.com で、--disable-warnings-as-errorsについて、 このオプションの公式な説明を検索しましたがうまくヒットせず と書いたところ、OpenJDK Authorの久保田さんから教えていただけました! https://t.co/K…

OpenJDKビルド時に設定するオプション

前回panamaビルド時にいろいろとオプションを設定しました。 jyukutyo.hatenablog.com が、よりよい方法をOpenJDK Reviewerである末永さんに教えていただきました!--disable-warnings-as-errorsをつければOKです。 bash ./configure --disable-warnings-as-…

macOSでOpenJDK(panama)ビルドするとエラーになってたのをクリアしてビルドし、Vector APIを試す

前回amberはビルドできたのですが、panamaはmakeでエラーになりました。 jyukutyo.hatenablog.com 今回panamaもビルドしてVector APIを試すことができました。 結論 configureでオプションを付ける。つまり、エラーを無視しているだけである。 $ bash ./conf…

macOSでOpenJDK(amber)ビルドするとエラーになってたのをクリアしてビルドした

OpenJDKのビルド方法そのものはきしださんのブログをご覧ください。 d.hatena.ne.jp JavaOneから帰国後、僕も最新のOpenJDKビルドするぞ!とmakeしてたのですが、エラーが出てちょっと挫折していました。 /Users/jyukutyo/code/amber/src/hotspot/share/logg…

Java 10はあるよ!!(提案段階)

まだProposalなので、正式決定ではありません。 2018年3月リリースのJavaが10、18年9月が11と半年ごとのリリースでインクリメントしていく。 Javaのチーフアーキテクトである、Mark Reinholdさんがツイートしています。 Proposal: Newer version-string sche…

JavaOne 2017 報告会 in 大阪を開催しました! #kanjava #j1jp

kanjava.connpass.com 懇親会 終了後そのままおやつと飲み物で簡素な懇親会にしました。ごみは各自で手提げごみ袋に入れて持ち帰るスタイルです。運営としてはみなさんの協力で非常に助かりました…なぜなら、当日参加、当日キャンセルOKにすると、事前調査よ…

JavaOne 2017 移動&滞在(もしくは海外カンファレンス参加Tips) #JavaOne #j1jp

2015年から3年連続JavaOneに参加しています。これから参加してみたいという方の役に立てばと思い、情報をまとめます。 ホテル 今年2017年から、JavaOneの会場がモスコーニに戻りました(モスコーニ・ウエスト。モスコーニはノース、サウスもありそちらではOr…

JavaOne 2017 5日目 #JavaOne #j1jp

Java Community Keynote コミュニティキーノートは、技術的な内容ではありません。Javaコミュニティのメンバーによる演劇ですが、これがまたおもしろい!!Javaに関するウィットに富んだ内容となっています。今年はマトリックスがモチーフでした(昨年はスタ…

JavaOne 2017 2日目 #JavaOne #j1jp

Java Keynote 昨年のキーノートでは"火星の悪夢"があったことをご存知の方も多いでしょう。Javaと関係のない火星の話が1時間もあるという悪夢のキーノートでした。 今年は、そつなくまとまっていて合格点はある気がします。3年連続3度目のJavaOneでしたが、…

JavaOne 2017 0日目〜1日目 #JavaOne #j1jp

10/1-5までサンフランシスコで開催される、JavaOne 2017に参加しています。 1日目はコミュニティセッション、Java User Group (JUG)やJCPのセッションです。本格的な技術セッションは2日目から5日目の昼過ぎまで、というのが例年の流れです。1日目は英語セッ…

副業、始めました

意図していたわけではありませんが、副業を始めました!写真は研修会社の営業の方と。 9/2(土)、ラクス株式会社様で1日講義をしました。社員で3年未満のJavaエンジニアの方を対象に、Javaエンジニアから見たRuby、Pythonを学ぶという内容です。言語仕様をR…

ポノス株式会社に入社しました!

8/1からポノス株式会社に勤務しています! どんな会社? スマートフォン向けゲーム会社です!歴史は長く1990年(27年前)に設立し、プレイステーション用ゲームからガラケーの公式コンテンツ、そしてスマートフォン向けゲームと提供を続けています。もっとも…

【PR】メガ恐竜展2017にブロガー招待で行ってきました

このエントリはブロガー招待を受けたもので、PR内容を含んでいます。 長男次男ともに恐竜が大好き(というかオタク)のため、夏休みに開催される"メガ恐竜展2017"へ行くことを計画していました。たまたま大阪市立自然史博物館へ行くときに、このメガ恐竜展に…

Reactive Spring in DevoxxUS 2017

セッション動画からソースコードを写経する職人のようになっていますが、DevoxxUS 2017の"Reactive Spring"というセッションを紹介します。このセッションはライブコーディングでした。 www.youtube.com スピーカーのJosh LongはPivotal社のSpring Developer…

オレオレJVM言語を作ろう! How to create a new JVM language #Graal #Truffle

DevoxxUSに参加した際、とてもおもしろかったセッションがありました。Oleg Šelajevの"How to create a new JVM language"というセッションです。 www.youtube.com OlegはvJUG(virtual JUG: オンライン上の仮想Java User Group)のOrganiser、JRebelやXRebe…

フリュー株式会社を退職します #退職エントリ

私ことじゅくちょーは、7月末でフリュー株式会社を退職することにしました。約5年半の在籍でした。 現在は有給消化中です。また、次の勤務先も決まっています。関西です!! 得たこと アジャイル開発のチームリーダ フリューではアジャイル開発がベースにあ…

関西Javaエンジニアの会 7/12 日本マイクロソフト様関西支店にて!

kanjava.connpass.com 7/12 19時から、JR福島駅(JR大阪環状線 大阪駅の隣駅)徒歩1分の日本マイクロソフト様関西支店にて! 12 Factor App on Kubernetes on Azureをデモを交えながらのセッションです。スピーカーは日本マイクロソフトのJavaエヴァンジェリ…

JavaエンジニアとしてJavaチャンピオンについて知ろう!

関ジャバをやっていると参加者の方でJavaチャンピオンについて知らない方ももちろんおられます。こうしたことを広めるのもJUGの務め!と思い書きます。 Javaチャンピオンについては以前ここに書きました。 jyukutyo.hatenablog.com ただ、これを書いた2014年…

KANJAVA PARTY 2017を開催しました&発表資料まとめ #kanjava #KanJavaParty

kanjava.connpass.com 私が代表を務めている関西Javaエンジニアの会(関ジャバ)の、過去最大規模のイベント"KANJAVA PARTY 2017"を開催し、無事終了することができました! 参加者のみなさん、スピーカーのみなさん、そして運営メンバー陣、ありがとうござ…

JavaエンジニアとしてJCPについて知ろう!その2 #jcp #jug

前回はJCPそのものについて解説しました。 jyukutyo.hatenablog.com 今回はみなさん自身がJCPメンバーになるメリットやメンバーの種類、具体的な手順を解説します。 個人でJCPメンバーになって何がいいのか JCPメンバーには企業や非営利団体、JUGだけでなく…