Fight the Future

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

プレゼン、ボランティアコーチします!

勉強会で話したいけど、プレゼンが初めて、苦手という方に無償でコーチします!

  • スライドのレビュー
  • 録画リハへのアドバイス

Twitter@jyukutyoまでメンションでもDMでも。 デブサミやJJUG CCCなど200人規模で登壇しました。海外での登壇も短いながらあり。デブサミ2017では公募スピーカー1位でした!

java

GraalでのTrace Register Allocation

Graalのレジスタ割り付けアルゴリズムはlinear scan allocationでした。 jyukutyo.hatenablog.com ただ、org.graalvm.compiler.lir.phases.AllocationStageクラスを見ていると、こういうコードでした。 public class AllocationStage extends LIRPhaseSuite<AllocationContext> </allocationcontext>…

GraalのRegister Allocation

今まで Understanding How Graal Works - a Java JIT Compiler Written in Java に沿ってGraalの理解を深めていたのですが、記事の最後に"Some practicalities that I haven’t talked about"として2つ挙げられています。 Register allocation Scheduling こ…

Graalでのロック粗粒化

前回はGraalでの大域的値番号付けでした。 jyukutyo.hatenablog.com こちらの記事に沿ってGraalの理解を深めます。 Understanding How Graal Works - a Java JIT Compiler Written in Java 今回はロック粗粒化(Lock coarsening)です。同一のモニタに対して…

Graalのノードの正規化

前回はマシンコードの生成処理を見ました。 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のグラフについてです。いわゆるプログラム依存…

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"の出力が違ってるけどどうして?

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

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 移動&滞在(もしくは海外カンファレンス参加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日目は英語セッ…

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だけでなく…

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

このブログを読んでいただいているということは、Javaを少なくとも使っているという状況と想像します。それでは、JCPのことはご存知でしょうか? JCPとは JCPとはJava Community Processのことです。公式サイトはこちらです。 The Java Community Process(SM…

JJUG CCC 2017 Spring 参加&スポンサーセッション登壇 #jjug_ccc

スポンサーセッション 今まで3回CCCではセッションをCfPを出して担当しました。私が所属するフリュー株式会社は、前回2016 Fallからスポンサーになっています。今回は僕がスポンサーセッションを担当しました。 ですが、スポンサーだからといって何を宣伝す…

InfoQ翻訳記事からのJavaニュースレター vol.1: Jigsawはどうなる?

2016年7月から、InfoQ.comの翻訳者として記事を翻訳しています。 https://www.infoq.com/jp/profile/%E9%98%AA%E7%94%B0-%E6%B5%A9%E4%B8%80 ほぼJava関連の記事を翻訳し続け、気づけば50記事になっていました。週1以上ペースですね。せっかく翻訳しているの…

JOnsen 2017 1日目 #JOnsen2017

JOnsenというアンカンファレンスに参加しています。 温泉地でJava Expertで集まってリラックスして話そうぜ、という感じです。 詳しくは、disorganizer(アンカンファレンスなのでorganizeの逆)の1人Sebastianのブログに書かれています。 JOnsen 2017 Uncon…

RxJava 2.0 is released

I've translated a InfoQ's article about RxJava 2.0 into Japanese. www.infoq.com RxJava 2.0 quite differs from version 1.0. Summary of differences is in RxJava's website. github.com By the way, JDK 9 supports Reactive Stream (JEP 266). JEP …

Introduction to Javaslang

I translated this article into Japanese in InfoQ. www.infoq.com I haven't known Javaslang library for now. What is Javaslang? Javaslang's website is below: http://www.javaslang.io/javaslang-docs/ Javaslang brings functional programming to …

Pivotal Cloud Foundryを始めてみる

Pivotal Cloud Foundry(PCF)を試す機会をいただきました。ローカルのPCF Devではなく、パブリッククラウドのPCFの方です! 今後少しずつ、使ってみたログを残していこうと考えています。 今回は、PCFにサンプルのSpringBootアプリケーションをアップすると…

what is JSRs in 900s

Now max JSR number is 380, but JSR has 900s number. For example, JSR 901 is "JavaTM Language Specification". The Java Community Process(SM) Program - JSRs: Java Specification Requests - List of all JSRs What are these? They are completed a…

How to get an application class loader in Java Agent method

In Java Agent method, such as premain() or agentmain(), class loader is system classloader, not application class loader. If you intent to change bytecode of class loaded by application class loader, you will need an application class load…