jvm
前回ではGraalをJITコンパイラとして使うため、EnableJVMCIでJVMCIを有効にしました。 jyukutyo.hatenablog.com 引き続き Understanding How Graal Works - a Java JIT Compiler Written in Java を参考に、Graalの理解を深めます。 ところでJVMCIとは何なの…
きしださんに教えていただいた、Graalについての非常によい入門記事があります。 Understanding How Graal Works - a Java JIT Compiler Written in Java Graalの上のTruffleでのRuby実装であるTruffleRubyを開発しているChris Seatonさんのブログです。この…
前回のの投稿で、Java 8と9ではjava -XX:+PrintCompilation -XX:CompileOnly=xxxの出力が異なると書きました。 jyukutyo.hatenablog.com すると、OpenJDK Reviewerである末永さんからヒントをいただきました。 Excluding compileって特徴的ですね。これでHot…
Java 9とJava 8では-XX:CompileOnlyでの出力が異なってる…すごく大量に出力されるようになってる。 理由やここに仕様が載ってるよ、という方がいればぜひ教えてください!! 対象クラス class Demo { public static void main(String[] args) { while (true)…
Graalはこちらからダウンロードできるのですが、 Oracle Labs GraalVM: Download ソースを読むついでにビルドしました。 Graalとmxが要ります。Graalはバージョン0.29を使います。 $ git clone https://github.com/graalvm/graal.git $ cd ../graal $ git ch…
OpenJDKビルドの前回のエントリ jyukutyo.hatenablog.com で、--disable-warnings-as-errorsについて、 このオプションの公式な説明を検索しましたがうまくヒットせず と書いたところ、OpenJDK Authorの久保田さんから教えていただけました! https://t.co/K…
前回panamaビルド時にいろいろとオプションを設定しました。 jyukutyo.hatenablog.com が、よりよい方法をOpenJDK Reviewerである末永さんに教えていただきました!--disable-warnings-as-errorsをつければOKです。 bash ./configure --disable-warnings-as-…
前回amberはビルドできたのですが、panamaはmakeでエラーになりました。 jyukutyo.hatenablog.com 今回panamaもビルドしてVector APIを試すことができました。 結論 configureでオプションを付ける。つまり、エラーを無視しているだけである。 $ bash ./conf…
OpenJDKのビルド方法そのものはきしださんのブログをご覧ください。 d.hatena.ne.jp JavaOneから帰国後、僕も最新のOpenJDKビルドするぞ!とmakeしてたのですが、エラーが出てちょっと挫折していました。 /Users/jyukutyo/code/amber/src/hotspot/share/logg…
Java Community Keynote コミュニティキーノートは、技術的な内容ではありません。Javaコミュニティのメンバーによる演劇ですが、これがまたおもしろい!!Javaに関するウィットに富んだ内容となっています。今年はマトリックスがモチーフでした(昨年はスタ…
Java Keynote 昨年のキーノートでは"火星の悪夢"があったことをご存知の方も多いでしょう。Javaと関係のない火星の話が1時間もあるという悪夢のキーノートでした。 今年は、そつなくまとまっていて合格点はある気がします。3年連続3度目のJavaOneでしたが、…
DevoxxUSに参加した際、とてもおもしろかったセッションがありました。Oleg Šelajevの"How to create a new JVM language"というセッションです。 www.youtube.com OlegはvJUG(virtual JUG: オンライン上の仮想Java User Group)のOrganiser、JRebelやXRebe…
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…
I talked about Java Agent and bytecode manipulation libraries in JJUG CCC 2016 fall. My session room was filled to capacity with bytecode fans! This is a material of this session. JJUG CCC 2016 fall バイトコードが君のトモダチになりたがって…
I implement Java Agent which transform classes of a web application running in an application server. To do so, I need a web application classloader which load these classes. I know Instrument#getAllLoadedClasses() method. But this method …
Valhalla adds new bytecode instruction "typed".
Java Day Tokyo 2016に出たところ、hsdisをもうProject Kenaiからダウンロードしてはいけない、古いビルドだから新しいCPUに対応していないということを聞きました。 そのため、帰宅してすぐビルドしました。簡単でした。 まずhsdisディレクトリに移動します…
Twitterでのやり取りでGroovyのinvokedynamicの話題が出たので、まず簡単に試してみました。 まず以下のHelloWorld.groovyを作ります。 println 'Hello, world!' 普通にコンパイルする。 $ groovy -v Groovy Version: 2.4.0 JVM: 1.8.0_65 Vendor: Oracle Co…
JEPにあり、JDK9のターゲットになっている。 JEP 280: Indify String Concatenation Change the static String-concatenation bytecode sequence generated by javac to use invokedynamic calls to JDK library functions. This will enable future optimiz…
クラスファイルはすべからくjavapしよう - Fight the Futurejyukutyo.hatenablog.com ということを言ったので、Scalaのコードもjavapしようと思いました。 もちろんscalacしてからjavapしてもよいのですが、ScalaはなんとREPLからjavapできると知りました。 …
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } } javac HelloWorld.javaしてクラスファイルを生成します。さっそくjavap HelloWorldしましょう。javapコマンドはOpenJDK系(OpenJDKやHotSpot、…
この記事は JVM Advent Calendar 4日目 の記事です。 JVM Advent Calendar 2014 - Qiita JITWatchについて JVMなみなさんは、JITコンパイルをご存知だと思います。 JITWatchは、アプリケーションにおけるJITコンパイルについて、可視化し分析するためのツー…
関西Javaエンジニアの会「HotSpot meeting」と、DevLove関西「5年目、10年目の自分戦略 」にてスピーカーをしました。 JITコンパイルはじめの一歩 from jyukutyo DevLOVE関西 5年目、10年目の自分戦略 20141030 from jyukutyo まだまだJVMについても初心者、…
-serverとか-clientって、オプションの一番最初に書かないといけないんだよね、というのと、 でも実行アーキテクチャでJVMが判断して勝手にserverモードにしてくれるんだよね、 というのを思い返しつつ、ちょっとclientモードにしてみるかと思いきや、 clien…