SlideShare a Scribd company logo
© 2020 NTT DATA Corporation
GraalVMを3つの主機能から眺めてみよう
2020年10月22日 Oracle Groundbreakers APAC Virtual Tour 2020
株式会社NTTデータ 技術開発本部
阪田 浩一
© 2020 NTT DATA Corporation 2
自己紹介
• 阪田 浩一(さかた -)
• 通称 じゅくちょー
• JVMになりたい人
• NTTデータでJava/OpenJDK + GraalVMの
研究開発とそのサポート業に従事しています
• OpenJDK Author
jyukutyo
© 2020 NTT DATA Corporation 3
このセッションの役割
GraalVMの
真の力に目覚める!
(3つの主機能について、
その開発経緯を踏まえながら
概要を理解する)
© 2020 NTT DATA Corporation 4
真の力…?
GraalVMって、
ネイティブイメージ作って
起動を速くする
ツールじゃないの…??
© 2020 NTT DATA Corporation 5
GraalVMの3つの主機能
1. 新JITコンパイラによるパフォーマンス向上
2. JavaScript、Ruby、Pythonといった
(JVM言語でない)言語を実行可能
3. アプリケーションをネイティブイメージにして
JVMなしで実行可能
(JVMでの実行時とは異なる特性を持つ)
© 2020 NTT DATA Corporation 6
結論として
GraalVMは
ネイティブイメージ生成用ツール
ではありません
© 2020 NTT DATA Corporation 7
GraalVMで検索するとネイティブイメージのことばかりなので…
このセッションでは
JITコンパイラと多言語実行に
比重を置きます
© 2020 NTT DATA Corporation
1. 新JITコンパイラ
© 2020 NTT DATA Corporation 9
GraalVM JITコンパイラは
Javaで書かれた
新しいJITコンパイラ
© 2020 NTT DATA Corporation 10
そのJITコンパイラを
HotSpot VM上に搭載
© 2020 NTT DATA Corporation 11
GraalVMとHotSpot VM
• GraalVMはHotSpot VMがベース
HotSpot VM
Compiler Interface
C2C1
HotSpot VM
C++
GraalVM
Compiler
Interface
GraalVM
JITコンパイラC1
HotSpot VM
JVMCI
Java
© 2020 NTT DATA Corporation 12
GraalVMは
JVMの機能を
すべて包含します
© 2020 NTT DATA Corporation 13
既存のJVMにできることは
すべてできます
© 2020 NTT DATA Corporation 14
Oracle Labsが
開発
© 2020 NTT DATA Corporation 15
GraalVMの2つのエディション
https://www.graalvm.org/
© 2020 NTT DATA Corporation 16
GraalVMの2つのエディション
1. Community Edition (CE)
• OSS (クラスパス例外付き GPL v2)
2. Enterprise Edition (EE)
• ライセンス契約が必要 (評価は無償)
• CEより実行パフォーマンスがよい
• CEよりネイティブコードのセキュリティを強化している
© 2020 NTT DATA Corporation 17
以降は
CEを前提にします
© 2020 NTT DATA Corporation 18
GraalVM JITコンパイラの
利点は?
© 2020 NTT DATA Corporation 19
アロケーションの多い
アプリケーションには、
GraalVM JITコンパイラが
有効
© 2020 NTT DATA Corporation 20
たとえば
リアクティブストリーム
で構築したものや
© 2020 NTT DATA Corporation 21
Scalaなど
関数型プログラミング
モデルで構築したもの
© 2020 NTT DATA Corporation 22
C2コンパイラより
パフォーマンスが
向上する場合がある
© 2020 NTT DATA Corporation 23
ベンチマーク
https://renaissance.dev/
Higher is better
© 2020 NTT DATA Corporation 24
Twitter社の事例
• OpenJDKベースの独自JDKにGraalVM JITコンパイラを
バックポート
• 2017年ですでに本番環境で活用
• 数千台のサーバ、Scalaアプリケーション
• サーバリソースを削減し、台数削減
• 大きなコスト削減になった
• 事例発表動画
• Twitter’s Quest for a Wholly Graal Runtime
(JavaOne 2017) https://www.youtube.com/watch?v=G-vlQaPMAxg
© 2020 NTT DATA Corporation 25
GraalVM JITコンパイラの利点
1. Javaで書かれている
• C++で書かれたC2コンパイラは
長年の変更で複雑化
• 新規に開発することで新機能追加、設計改善
• Javaに変更することで開発参加の門戸を広く
• 以前はこのJITコンパイラをGraalと呼んでいた
© 2020 NTT DATA Corporation 26
参考:OpenJDKにもポートされている(Experimental)
http://openjdk.java.net/jeps/317
© 2020 NTT DATA Corporation 27
GraalVM JITコンパイラの利点
2. このJITコンパイラ向けに作られた
言語実装用フレームワーク Truffle がある
• このライブラリを用いて実装した言語は、
すべてGraalVM上で実行できる
• トラフル (英)、トリュフ (仏)
© 2020 NTT DATA Corporation
2. 多言語実行環境
© 2020 NTT DATA Corporation 29
GraalVM JITコンパイラの利点
2. このJITコンパイラ向けに作られた
言語実装用フレームワーク Truffle がある
• このライブラリを用いて実装した言語は、
すべてGraalVM上で実行できる
• トラフル (英)、トリュフ (仏)
© 2020 NTT DATA Corporation 30
サポートする言語
GraalVM バージョン20.1.0時点のもの
言語 プロダクト名 ステータス 対応バージョン
Java - - OpenJDK 8もしくは11から選択
JavaScript graaljs GA ECMAScript 2020準拠
Ruby TruffleRuby Experimental 2.6.2ベース
R FastR Experimental 3.6.1ベース
Python GraalPython Experimental 3.7ベース
WebAssembly GraalWasm Experimental WebAssembly MVP仕様
LLVM Sulong Experimental bitcodeバージョン3.8~9.0を実行可能
© 2020 NTT DATA Corporation 31
(なお、Java 11で
Nashornは非推奨に
なりました)
© 2020 NTT DATA Corporation 32
Truffleでの言語実装
HotSpot VM
JVMCI
GraalVM JITコンパイラ
JVM Lang Truffle
LLVMJS R Ruby
C C++
Fortran
Interpreter
© 2020 NTT DATA Corporation 33
言語実装の仕組み
対象言語の
ASTインタプリタを
Truffle APIを用いて
Javaで実装する
© 2020 NTT DATA Corporation 34
他言語でも高パフォーマンス
対象言語コードのASTと
インタプリタの両方を
JITコンパイラに評価させ
高性能のコードを生成
© 2020 NTT DATA Corporation 35
ゴールドマン・サックス社の事例
• 1990年代初め、独自に言語を開発
• 現在までコードが増え続ける
• 言語自体の運用開発が課題に
© 2020 NTT DATA Corporation 36
ゴールドマン・サックス社の事例
• その言語をTruffleベースに移行
• 他言語との相互呼び出しが可能に
• メトリクス取得やデバッグが容易に
• 実行パフォーマンスが向上
• 事例発表動画
• One VM to Rule Them All? Lessons Learned with
Truffle and Graal (Oracle Code One 2018)
https://www.youtube.com/watch?v=MUECwHdr07Q
© 2020 NTT DATA Corporation 37
究極的には
自分で実装した
プログラミング言語を
GraalVMで実行できる
© 2020 NTT DATA Corporation 38
言語実装サンプル
• GraalVMのリポジトリ内
• SimpleLanguage
• https://github.com/graalvm/simplelanguage
• Simpleとあるけれど、読むのは簡単ではない
© 2020 NTT DATA Corporation 39
私もやってみました(古いバージョンでの実装です)
https://github.com/jyukutyo/JVM-Math-Language
© 2020 NTT DATA Corporation 40
サポートする言語
GraalVM バージョン20.1.0時点のもの
言語 プロダクト名 ステータス 対応バージョン
Java - - OpenJDK 8もしくは11から選択
JavaScript graaljs GA ECMAScript 2020準拠
Ruby TruffleRuby Experimental 2.6.2ベース
R FastR Experimental 3.6.1ベース
Python GraalPython Experimental 3.7ベース
WebAssembly GraalWasm Experimental WebAssembly MVP仕様
LLVM Sulong Experimental bitcodeバージョン3.8~9.0を実行可能
© 2020 NTT DATA Corporation 41
参考:GraalPythonの検証
• 実プロジェクトでの利用は(まだ)現実的ではない
• C拡張しているライブラリの利用するとエラーが発生する可能性があり、
確実性に不安が残る
• Pythonコードの実行が長い
たとえばインポート文の処理に時間がかかる
• Pandasであれば、インポートが数十秒単位であった
• SSLをサポートしておらず、
PythonコードでのHTTPSのAPI呼び出しはできない
• 20.2でpycファイルによるキャッシュ機能が導入されたが、
パフォーマンスは不十分である
© 2020 NTT DATA Corporation 42
デモ(Python3とGraalPythonでのPandasの実行)
© 2020 NTT DATA Corporation 43
Pythonに関しては
やはりまだ
Experimental
© 2020 NTT DATA Corporation 44
単に各言語を
実行できるだけでは
ない
© 2020 NTT DATA Corporation 45
Interoperability
パフォーマンスを大幅に
低下させることなく、
言語間で
相互呼び出しができる
© 2020 NTT DATA Corporation 46
Java <-> Truffle言語
はもちろん
© 2020 NTT DATA Corporation 47
Truffle言語間でも
(Ruby <-> JavaScriptなど)
© 2020 NTT DATA Corporation 48
GraalVMのビジョン
パフォーマンスを
犠牲にせず、
言語間の抽象化をする
© 2020 NTT DATA Corporation 49
あの処理、
別の言語のライブラリを
使うとすぐできるのに…
© 2020 NTT DATA Corporation 50
Javaから先ほどのPandasコードを呼び出す例
© 2020 NTT DATA Corporation 51
開発ツールの
サポートもある
© 2020 NTT DATA Corporation 52
Google Chrome DevToolsでのデバッグ
© 2020 NTT DATA Corporation 53
デモ(Chrome DevToolsでのデバッグ)
© 2020 NTT DATA Corporation 54
Graal VisualVM
© 2020 NTT DATA Corporation
3. ネイティブイメージ生成機能
© 2020 NTT DATA Corporation 56
GraalVMのネイティブイメージ生成
• ネイティブイメージ
(実行可能なバイナリ) を生成する機能
• 生成したイメージ (ファイル) だけで実行可能
• つまり、起動にJVM (JDK/JRE) が不要
© 2020 NTT DATA Corporation 57
Oracle Database
• ユーザ定義関数をJavaで作成できる
しかし、
• GraalVM自体をデータベースに組み込めば、
Javaはもちろん、他言語も使える
• 機能の更新をGraalVM側に任せられる
© 2020 NTT DATA Corporation 58
Oracle Databaseに
GraalVMを組み込む
© 2020 NTT DATA Corporation 59
Oracle Databaseへ組み込むには
• JVMが課題
• サイズが大きい
• 初期化処理が長い
• メモリ使用量が大きい
• そのままではデータベースでの利用はできない
© 2020 NTT DATA Corporation 60
GraalVM自体を
ネイティブイメージに
する!
© 2020 NTT DATA Corporation 61
ネイティブイメージにすると
• JVMが不要
• サイズが小さく済む
• 起動時間が短くなる
• メモリ使用量が少なくなる
• ただし、同じプラットフォームでしか動作しない
© 2020 NTT DATA Corporation 62
参考:Oracle Database MLE
• MLE: Multilingal Engine
• https://www.oracle.com/technetwork/database/multilingual-
engine/overview/index.html
select
validator.isEmail('alice@example.com’)
from dual;
© 2020 NTT DATA Corporation 63
こうした経緯で開発した
ネイティブイメージ
生成機能が
GraalVMの機能の1つ
となった
© 2020 NTT DATA Corporation 64
ネイティブイメージの現状
• Experimental
• サポートプラットフォーム
• x86 64ビットシステム
• Linux、macOS、Windows
© 2020 NTT DATA Corporation 65
ネイティブイメージ生成プロセス
アプリケーション
ライブラリ
JDK
SubstrateVM
下記の繰り返し:
解析ポイント
↓
初期化処理実行
↓
ヒープのスナップショット生成
ELFファイル
コード
(textセクション)
イメージヒープ
(dataセクション)
© 2020 NTT DATA Corporation 66
生成時に
初期化処理を実行し、
起動時間を
短縮する
© 2020 NTT DATA Corporation 67
デモ(ネイティブイメージ生成)
© 2020 NTT DATA Corporation 68
ネイティブイメージ対応フレームワーク
• Micronaut
• Quarkus
• Helidon
• Spring Framework, Bootも対応作業中
(現在はExperimental)
© 2020 NTT DATA Corporation 69
ネイティブイメージのメリットまとめ
• 起動時間が短くなる
• メモリ使用量が少なくなる
• サイズが小さくなる
© 2020 NTT DATA Corporation 70
どんなアプリケーション
でも、
ネイティブイメージに
する方がよいのか?
© 2020 NTT DATA Corporation 71
JITコンパイル (JVM)
と
AOTコンパイル (GraalVM)
© 2020 NTT DATA Corporation 72
GraalVMのネイティブイメージ機能
• AOT(Ahead-of-Time:事前)コンパイル
「実行前」に
機械語へコンパイル!
© 2020 NTT DATA Corporation 73
JITコンパイル
「実行中」に
機械語へコンパイル!
JVM
© 2020 NTT DATA Corporation 74
超簡略化して考えると…
❌
「実行中」に
機械語へコンパイル!
「実行前」に
機械語へコンパイル!
© 2020 NTT DATA Corporation 75
同じようなことを
やっているように
見えませんか?
© 2020 NTT DATA Corporation 76
2つのコンパイラの処理は
重なる部分があるため、
JITコンパイラを元にして
ネイティブイメージ生成機能を
作ることができた
© 2020 NTT DATA Corporation 77
https://openjdk.java.net/jeps/295
© 2020 NTT DATA Corporation 78
ネイティブコンパイルを採用するトレードオフ
• 事前にコンパイルしたものを使うので、
利用できない機能が出てくる
• コードのinstrumentation
• 動的な再最適化
• 性能のトレードオフ
https://twitter.com/thomaswue/status/1145603781108928513
© 2020 NTT DATA Corporation 79
ネイティブイメージが適切なケース
• FaaS
• 起動してすぐに終了する
• クラウドで実行する
大規模アプリケーション
• リソースを節約し、コストを削減する
© 2020 NTT DATA Corporation 80
GraalVMの2つのモード
• JITモード
• JVMとGraalVM JITコンパイラで
アプリケーションを実行
• AOTモード
• ネイティブイメージを生成し、JVMなしで
アプリケーションを実行
• どちらのモードのことなのか、意識する
© 2020 NTT DATA Corporation
4. GraalVMとOpenJDK
© 2020 NTT DATA Corporation 82
Project Metropolis
OpenJDK: Metropolis https://openjdk.java.net/projects/metropolis/
© 2020 NTT DATA Corporation 83
JVMを
再実装する!
(ランタイムの重要な部分中心)
© 2020 NTT DATA Corporation 84
再実装とは?
C++の既存実装
↓
Javaで再実装
© 2020 NTT DATA Corporation 85
Project Metropolisの現在
• 現在:Java 15ベースのEAビルドがある
• https://jdk.java.net/metropolis/
• GraalVM JITコンパイラがデフォルトコンパイラ
• ネイティブコンパイル済み
• 次にどのコンポーネントがJava on Javaとなるのかは明らかでない
• たとえばGCは難しいだろうと言われている
© 2020 NTT DATA Corporation 86
JITコンパイラが
Javaで書かれていると
© 2020 NTT DATA Corporation 87
JITコンパイラの
Javaコードも
JITコンパイルする
必要がある
© 2020 NTT DATA Corporation 88
つまり
アプリケーション起動時に
その分の時間がかかる
© 2020 NTT DATA Corporation 89
JITコンパイラの
コードをAOTコンパイル
(ネイティブコンパイル)
してしまえば
ある程度解決できる
© 2020 NTT DATA Corporation 90
JITコンパイラコードのコンパイル
JavaでJITコンパイラを書く
↓
そうなるとJITコンパイラのJavaコードを
JITコンパイルすることが必要
↓
あらかじめJITコンパイラのJavaコードを
ネイティブコンパイルしておく
(libgraal/libjvmcicompiler)
© 2020 NTT DATA Corporation 91
JVMとGraalVMは
互いに影響を
及ぼし合っている
© 2020 NTT DATA Corporation 92
ただし、互いに
独立した開発
となっている
© 2020 NTT DATA Corporation 93
GraalVMの3つの主機能
1. 新JITコンパイラによるパフォーマンス向上
2. JavaScript、Ruby、Pythonといった
(JVM言語でない)言語を実行可能
3. アプリケーションをネイティブイメージにして
JVMなしで実行可能
(JVMでの実行時とは異なる特性を持つ)
みんなのJava OpenJDKから始まる大変革期! https://gihyo.jp/book/2020/978-4-297-11199-1
© 2020 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です
Ad

More Related Content

What's hot (20)

pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
 
Java仮想マシンの実装技術
Java仮想マシンの実装技術Java仮想マシンの実装技術
Java仮想マシンの実装技術
Kiyokuni Kawachiya
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
 
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
Takahiro YAMADA
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方
Takahiro YAMADA
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
Amazon Web Services Japan
 
Rootlessコンテナ
RootlessコンテナRootlessコンテナ
Rootlessコンテナ
Akihiro Suda
 
[GKE & Spanner 勉強会] GKE 入門
[GKE & Spanner 勉強会] GKE 入門[GKE & Spanner 勉強会] GKE 入門
[GKE & Spanner 勉強会] GKE 入門
Google Cloud Platform - Japan
 
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
Kohei Tokunaga
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
Kohei Tokunaga
 
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
Satoshi Takami
 
AWSではじめるMLOps
AWSではじめるMLOpsAWSではじめるMLOps
AWSではじめるMLOps
MariOhbuchi
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
 
Java仮想マシンの実装技術
Java仮想マシンの実装技術Java仮想マシンの実装技術
Java仮想マシンの実装技術
Kiyokuni Kawachiya
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
 
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
Takahiro YAMADA
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方
Takahiro YAMADA
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
Amazon Web Services Japan
 
Rootlessコンテナ
RootlessコンテナRootlessコンテナ
Rootlessコンテナ
Akihiro Suda
 
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
Kohei Tokunaga
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
Kohei Tokunaga
 
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
Satoshi Takami
 
AWSではじめるMLOps
AWSではじめるMLOpsAWSではじめるMLOps
AWSではじめるMLOps
MariOhbuchi
 

Similar to GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料) (20)

GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
Shinji Takao
 
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
NTT DATA Technology & Innovation
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
NTT DATA Technology & Innovation
 
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
Shinji Takao
 
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
NTT DATA Technology & Innovation
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
Hiroshi Miura
 
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
オラクルエンジニア通信
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
 
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
オラクルエンジニア通信
 
Grailsのススメ(仮)
Grailsのススメ(仮)Grailsのススメ(仮)
Grailsのススメ(仮)
Tsuyoshi Yamamoto
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
Hiroshi Miura
 
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
apkiban
 
HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical Preview
Yuji Kubota
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
NTT DATA Technology & Innovation
 
Introduction to GraalVM
Introduction to GraalVMIntroduction to GraalVM
Introduction to GraalVM
Koichi Sakata
 
Storm×couchbase serverで作るリアルタイム解析基盤
Storm×couchbase serverで作るリアルタイム解析基盤Storm×couchbase serverで作るリアルタイム解析基盤
Storm×couchbase serverで作るリアルタイム解析基盤
NTT Communications Technology Development
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
GAE + Spannerで目指せ No (Uncomfortable) Ops
GAE + Spannerで目指せ No (Uncomfortable) OpsGAE + Spannerで目指せ No (Uncomfortable) Ops
GAE + Spannerで目指せ No (Uncomfortable) Ops
Miniascape
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
Shinji Takao
 
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
NTT DATA Technology & Innovation
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
NTT DATA Technology & Innovation
 
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
Shinji Takao
 
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
NTT DATA Technology & Innovation
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
Hiroshi Miura
 
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
オラクルエンジニア通信
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
 
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
オラクルエンジニア通信
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
Hiroshi Miura
 
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
apkiban
 
HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical Preview
Yuji Kubota
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
NTT DATA Technology & Innovation
 
Introduction to GraalVM
Introduction to GraalVMIntroduction to GraalVM
Introduction to GraalVM
Koichi Sakata
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
GAE + Spannerで目指せ No (Uncomfortable) Ops
GAE + Spannerで目指せ No (Uncomfortable) OpsGAE + Spannerで目指せ No (Uncomfortable) Ops
GAE + Spannerで目指せ No (Uncomfortable) Ops
Miniascape
 
Ad

More from NTT DATA Technology & Innovation (20)

2025年現在のNewSQL (最強DB講義 #36 発表資料)
2025年現在のNewSQL (最強DB講義 #36 発表資料)2025年現在のNewSQL (最強DB講義 #36 発表資料)
2025年現在のNewSQL (最強DB講義 #36 発表資料)
NTT DATA Technology & Innovation
 
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
NTT DATA Technology & Innovation
 
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
NTT DATA Technology & Innovation
 
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
NTT DATA Technology & Innovation
 
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
NTT DATA Technology & Innovation
 
Ad

GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)

  • 1. © 2020 NTT DATA Corporation GraalVMを3つの主機能から眺めてみよう 2020年10月22日 Oracle Groundbreakers APAC Virtual Tour 2020 株式会社NTTデータ 技術開発本部 阪田 浩一
  • 2. © 2020 NTT DATA Corporation 2 自己紹介 • 阪田 浩一(さかた -) • 通称 じゅくちょー • JVMになりたい人 • NTTデータでJava/OpenJDK + GraalVMの 研究開発とそのサポート業に従事しています • OpenJDK Author jyukutyo
  • 3. © 2020 NTT DATA Corporation 3 このセッションの役割 GraalVMの 真の力に目覚める! (3つの主機能について、 その開発経緯を踏まえながら 概要を理解する)
  • 4. © 2020 NTT DATA Corporation 4 真の力…? GraalVMって、 ネイティブイメージ作って 起動を速くする ツールじゃないの…??
  • 5. © 2020 NTT DATA Corporation 5 GraalVMの3つの主機能 1. 新JITコンパイラによるパフォーマンス向上 2. JavaScript、Ruby、Pythonといった (JVM言語でない)言語を実行可能 3. アプリケーションをネイティブイメージにして JVMなしで実行可能 (JVMでの実行時とは異なる特性を持つ)
  • 6. © 2020 NTT DATA Corporation 6 結論として GraalVMは ネイティブイメージ生成用ツール ではありません
  • 7. © 2020 NTT DATA Corporation 7 GraalVMで検索するとネイティブイメージのことばかりなので… このセッションでは JITコンパイラと多言語実行に 比重を置きます
  • 8. © 2020 NTT DATA Corporation 1. 新JITコンパイラ
  • 9. © 2020 NTT DATA Corporation 9 GraalVM JITコンパイラは Javaで書かれた 新しいJITコンパイラ
  • 10. © 2020 NTT DATA Corporation 10 そのJITコンパイラを HotSpot VM上に搭載
  • 11. © 2020 NTT DATA Corporation 11 GraalVMとHotSpot VM • GraalVMはHotSpot VMがベース HotSpot VM Compiler Interface C2C1 HotSpot VM C++ GraalVM Compiler Interface GraalVM JITコンパイラC1 HotSpot VM JVMCI Java
  • 12. © 2020 NTT DATA Corporation 12 GraalVMは JVMの機能を すべて包含します
  • 13. © 2020 NTT DATA Corporation 13 既存のJVMにできることは すべてできます
  • 14. © 2020 NTT DATA Corporation 14 Oracle Labsが 開発
  • 15. © 2020 NTT DATA Corporation 15 GraalVMの2つのエディション https://www.graalvm.org/
  • 16. © 2020 NTT DATA Corporation 16 GraalVMの2つのエディション 1. Community Edition (CE) • OSS (クラスパス例外付き GPL v2) 2. Enterprise Edition (EE) • ライセンス契約が必要 (評価は無償) • CEより実行パフォーマンスがよい • CEよりネイティブコードのセキュリティを強化している
  • 17. © 2020 NTT DATA Corporation 17 以降は CEを前提にします
  • 18. © 2020 NTT DATA Corporation 18 GraalVM JITコンパイラの 利点は?
  • 19. © 2020 NTT DATA Corporation 19 アロケーションの多い アプリケーションには、 GraalVM JITコンパイラが 有効
  • 20. © 2020 NTT DATA Corporation 20 たとえば リアクティブストリーム で構築したものや
  • 21. © 2020 NTT DATA Corporation 21 Scalaなど 関数型プログラミング モデルで構築したもの
  • 22. © 2020 NTT DATA Corporation 22 C2コンパイラより パフォーマンスが 向上する場合がある
  • 23. © 2020 NTT DATA Corporation 23 ベンチマーク https://renaissance.dev/ Higher is better
  • 24. © 2020 NTT DATA Corporation 24 Twitter社の事例 • OpenJDKベースの独自JDKにGraalVM JITコンパイラを バックポート • 2017年ですでに本番環境で活用 • 数千台のサーバ、Scalaアプリケーション • サーバリソースを削減し、台数削減 • 大きなコスト削減になった • 事例発表動画 • Twitter’s Quest for a Wholly Graal Runtime (JavaOne 2017) https://www.youtube.com/watch?v=G-vlQaPMAxg
  • 25. © 2020 NTT DATA Corporation 25 GraalVM JITコンパイラの利点 1. Javaで書かれている • C++で書かれたC2コンパイラは 長年の変更で複雑化 • 新規に開発することで新機能追加、設計改善 • Javaに変更することで開発参加の門戸を広く • 以前はこのJITコンパイラをGraalと呼んでいた
  • 26. © 2020 NTT DATA Corporation 26 参考:OpenJDKにもポートされている(Experimental) http://openjdk.java.net/jeps/317
  • 27. © 2020 NTT DATA Corporation 27 GraalVM JITコンパイラの利点 2. このJITコンパイラ向けに作られた 言語実装用フレームワーク Truffle がある • このライブラリを用いて実装した言語は、 すべてGraalVM上で実行できる • トラフル (英)、トリュフ (仏)
  • 28. © 2020 NTT DATA Corporation 2. 多言語実行環境
  • 29. © 2020 NTT DATA Corporation 29 GraalVM JITコンパイラの利点 2. このJITコンパイラ向けに作られた 言語実装用フレームワーク Truffle がある • このライブラリを用いて実装した言語は、 すべてGraalVM上で実行できる • トラフル (英)、トリュフ (仏)
  • 30. © 2020 NTT DATA Corporation 30 サポートする言語 GraalVM バージョン20.1.0時点のもの 言語 プロダクト名 ステータス 対応バージョン Java - - OpenJDK 8もしくは11から選択 JavaScript graaljs GA ECMAScript 2020準拠 Ruby TruffleRuby Experimental 2.6.2ベース R FastR Experimental 3.6.1ベース Python GraalPython Experimental 3.7ベース WebAssembly GraalWasm Experimental WebAssembly MVP仕様 LLVM Sulong Experimental bitcodeバージョン3.8~9.0を実行可能
  • 31. © 2020 NTT DATA Corporation 31 (なお、Java 11で Nashornは非推奨に なりました)
  • 32. © 2020 NTT DATA Corporation 32 Truffleでの言語実装 HotSpot VM JVMCI GraalVM JITコンパイラ JVM Lang Truffle LLVMJS R Ruby C C++ Fortran Interpreter
  • 33. © 2020 NTT DATA Corporation 33 言語実装の仕組み 対象言語の ASTインタプリタを Truffle APIを用いて Javaで実装する
  • 34. © 2020 NTT DATA Corporation 34 他言語でも高パフォーマンス 対象言語コードのASTと インタプリタの両方を JITコンパイラに評価させ 高性能のコードを生成
  • 35. © 2020 NTT DATA Corporation 35 ゴールドマン・サックス社の事例 • 1990年代初め、独自に言語を開発 • 現在までコードが増え続ける • 言語自体の運用開発が課題に
  • 36. © 2020 NTT DATA Corporation 36 ゴールドマン・サックス社の事例 • その言語をTruffleベースに移行 • 他言語との相互呼び出しが可能に • メトリクス取得やデバッグが容易に • 実行パフォーマンスが向上 • 事例発表動画 • One VM to Rule Them All? Lessons Learned with Truffle and Graal (Oracle Code One 2018) https://www.youtube.com/watch?v=MUECwHdr07Q
  • 37. © 2020 NTT DATA Corporation 37 究極的には 自分で実装した プログラミング言語を GraalVMで実行できる
  • 38. © 2020 NTT DATA Corporation 38 言語実装サンプル • GraalVMのリポジトリ内 • SimpleLanguage • https://github.com/graalvm/simplelanguage • Simpleとあるけれど、読むのは簡単ではない
  • 39. © 2020 NTT DATA Corporation 39 私もやってみました(古いバージョンでの実装です) https://github.com/jyukutyo/JVM-Math-Language
  • 40. © 2020 NTT DATA Corporation 40 サポートする言語 GraalVM バージョン20.1.0時点のもの 言語 プロダクト名 ステータス 対応バージョン Java - - OpenJDK 8もしくは11から選択 JavaScript graaljs GA ECMAScript 2020準拠 Ruby TruffleRuby Experimental 2.6.2ベース R FastR Experimental 3.6.1ベース Python GraalPython Experimental 3.7ベース WebAssembly GraalWasm Experimental WebAssembly MVP仕様 LLVM Sulong Experimental bitcodeバージョン3.8~9.0を実行可能
  • 41. © 2020 NTT DATA Corporation 41 参考:GraalPythonの検証 • 実プロジェクトでの利用は(まだ)現実的ではない • C拡張しているライブラリの利用するとエラーが発生する可能性があり、 確実性に不安が残る • Pythonコードの実行が長い たとえばインポート文の処理に時間がかかる • Pandasであれば、インポートが数十秒単位であった • SSLをサポートしておらず、 PythonコードでのHTTPSのAPI呼び出しはできない • 20.2でpycファイルによるキャッシュ機能が導入されたが、 パフォーマンスは不十分である
  • 42. © 2020 NTT DATA Corporation 42 デモ(Python3とGraalPythonでのPandasの実行)
  • 43. © 2020 NTT DATA Corporation 43 Pythonに関しては やはりまだ Experimental
  • 44. © 2020 NTT DATA Corporation 44 単に各言語を 実行できるだけでは ない
  • 45. © 2020 NTT DATA Corporation 45 Interoperability パフォーマンスを大幅に 低下させることなく、 言語間で 相互呼び出しができる
  • 46. © 2020 NTT DATA Corporation 46 Java <-> Truffle言語 はもちろん
  • 47. © 2020 NTT DATA Corporation 47 Truffle言語間でも (Ruby <-> JavaScriptなど)
  • 48. © 2020 NTT DATA Corporation 48 GraalVMのビジョン パフォーマンスを 犠牲にせず、 言語間の抽象化をする
  • 49. © 2020 NTT DATA Corporation 49 あの処理、 別の言語のライブラリを 使うとすぐできるのに…
  • 50. © 2020 NTT DATA Corporation 50 Javaから先ほどのPandasコードを呼び出す例
  • 51. © 2020 NTT DATA Corporation 51 開発ツールの サポートもある
  • 52. © 2020 NTT DATA Corporation 52 Google Chrome DevToolsでのデバッグ
  • 53. © 2020 NTT DATA Corporation 53 デモ(Chrome DevToolsでのデバッグ)
  • 54. © 2020 NTT DATA Corporation 54 Graal VisualVM
  • 55. © 2020 NTT DATA Corporation 3. ネイティブイメージ生成機能
  • 56. © 2020 NTT DATA Corporation 56 GraalVMのネイティブイメージ生成 • ネイティブイメージ (実行可能なバイナリ) を生成する機能 • 生成したイメージ (ファイル) だけで実行可能 • つまり、起動にJVM (JDK/JRE) が不要
  • 57. © 2020 NTT DATA Corporation 57 Oracle Database • ユーザ定義関数をJavaで作成できる しかし、 • GraalVM自体をデータベースに組み込めば、 Javaはもちろん、他言語も使える • 機能の更新をGraalVM側に任せられる
  • 58. © 2020 NTT DATA Corporation 58 Oracle Databaseに GraalVMを組み込む
  • 59. © 2020 NTT DATA Corporation 59 Oracle Databaseへ組み込むには • JVMが課題 • サイズが大きい • 初期化処理が長い • メモリ使用量が大きい • そのままではデータベースでの利用はできない
  • 60. © 2020 NTT DATA Corporation 60 GraalVM自体を ネイティブイメージに する!
  • 61. © 2020 NTT DATA Corporation 61 ネイティブイメージにすると • JVMが不要 • サイズが小さく済む • 起動時間が短くなる • メモリ使用量が少なくなる • ただし、同じプラットフォームでしか動作しない
  • 62. © 2020 NTT DATA Corporation 62 参考:Oracle Database MLE • MLE: Multilingal Engine • https://www.oracle.com/technetwork/database/multilingual- engine/overview/index.html select validator.isEmail('[email protected]’) from dual;
  • 63. © 2020 NTT DATA Corporation 63 こうした経緯で開発した ネイティブイメージ 生成機能が GraalVMの機能の1つ となった
  • 64. © 2020 NTT DATA Corporation 64 ネイティブイメージの現状 • Experimental • サポートプラットフォーム • x86 64ビットシステム • Linux、macOS、Windows
  • 65. © 2020 NTT DATA Corporation 65 ネイティブイメージ生成プロセス アプリケーション ライブラリ JDK SubstrateVM 下記の繰り返し: 解析ポイント ↓ 初期化処理実行 ↓ ヒープのスナップショット生成 ELFファイル コード (textセクション) イメージヒープ (dataセクション)
  • 66. © 2020 NTT DATA Corporation 66 生成時に 初期化処理を実行し、 起動時間を 短縮する
  • 67. © 2020 NTT DATA Corporation 67 デモ(ネイティブイメージ生成)
  • 68. © 2020 NTT DATA Corporation 68 ネイティブイメージ対応フレームワーク • Micronaut • Quarkus • Helidon • Spring Framework, Bootも対応作業中 (現在はExperimental)
  • 69. © 2020 NTT DATA Corporation 69 ネイティブイメージのメリットまとめ • 起動時間が短くなる • メモリ使用量が少なくなる • サイズが小さくなる
  • 70. © 2020 NTT DATA Corporation 70 どんなアプリケーション でも、 ネイティブイメージに する方がよいのか?
  • 71. © 2020 NTT DATA Corporation 71 JITコンパイル (JVM) と AOTコンパイル (GraalVM)
  • 72. © 2020 NTT DATA Corporation 72 GraalVMのネイティブイメージ機能 • AOT(Ahead-of-Time:事前)コンパイル 「実行前」に 機械語へコンパイル!
  • 73. © 2020 NTT DATA Corporation 73 JITコンパイル 「実行中」に 機械語へコンパイル! JVM
  • 74. © 2020 NTT DATA Corporation 74 超簡略化して考えると… ❌ 「実行中」に 機械語へコンパイル! 「実行前」に 機械語へコンパイル!
  • 75. © 2020 NTT DATA Corporation 75 同じようなことを やっているように 見えませんか?
  • 76. © 2020 NTT DATA Corporation 76 2つのコンパイラの処理は 重なる部分があるため、 JITコンパイラを元にして ネイティブイメージ生成機能を 作ることができた
  • 77. © 2020 NTT DATA Corporation 77 https://openjdk.java.net/jeps/295
  • 78. © 2020 NTT DATA Corporation 78 ネイティブコンパイルを採用するトレードオフ • 事前にコンパイルしたものを使うので、 利用できない機能が出てくる • コードのinstrumentation • 動的な再最適化 • 性能のトレードオフ https://twitter.com/thomaswue/status/1145603781108928513
  • 79. © 2020 NTT DATA Corporation 79 ネイティブイメージが適切なケース • FaaS • 起動してすぐに終了する • クラウドで実行する 大規模アプリケーション • リソースを節約し、コストを削減する
  • 80. © 2020 NTT DATA Corporation 80 GraalVMの2つのモード • JITモード • JVMとGraalVM JITコンパイラで アプリケーションを実行 • AOTモード • ネイティブイメージを生成し、JVMなしで アプリケーションを実行 • どちらのモードのことなのか、意識する
  • 81. © 2020 NTT DATA Corporation 4. GraalVMとOpenJDK
  • 82. © 2020 NTT DATA Corporation 82 Project Metropolis OpenJDK: Metropolis https://openjdk.java.net/projects/metropolis/
  • 83. © 2020 NTT DATA Corporation 83 JVMを 再実装する! (ランタイムの重要な部分中心)
  • 84. © 2020 NTT DATA Corporation 84 再実装とは? C++の既存実装 ↓ Javaで再実装
  • 85. © 2020 NTT DATA Corporation 85 Project Metropolisの現在 • 現在:Java 15ベースのEAビルドがある • https://jdk.java.net/metropolis/ • GraalVM JITコンパイラがデフォルトコンパイラ • ネイティブコンパイル済み • 次にどのコンポーネントがJava on Javaとなるのかは明らかでない • たとえばGCは難しいだろうと言われている
  • 86. © 2020 NTT DATA Corporation 86 JITコンパイラが Javaで書かれていると
  • 87. © 2020 NTT DATA Corporation 87 JITコンパイラの Javaコードも JITコンパイルする 必要がある
  • 88. © 2020 NTT DATA Corporation 88 つまり アプリケーション起動時に その分の時間がかかる
  • 89. © 2020 NTT DATA Corporation 89 JITコンパイラの コードをAOTコンパイル (ネイティブコンパイル) してしまえば ある程度解決できる
  • 90. © 2020 NTT DATA Corporation 90 JITコンパイラコードのコンパイル JavaでJITコンパイラを書く ↓ そうなるとJITコンパイラのJavaコードを JITコンパイルすることが必要 ↓ あらかじめJITコンパイラのJavaコードを ネイティブコンパイルしておく (libgraal/libjvmcicompiler)
  • 91. © 2020 NTT DATA Corporation 91 JVMとGraalVMは 互いに影響を 及ぼし合っている
  • 92. © 2020 NTT DATA Corporation 92 ただし、互いに 独立した開発 となっている
  • 93. © 2020 NTT DATA Corporation 93 GraalVMの3つの主機能 1. 新JITコンパイラによるパフォーマンス向上 2. JavaScript、Ruby、Pythonといった (JVM言語でない)言語を実行可能 3. アプリケーションをネイティブイメージにして JVMなしで実行可能 (JVMでの実行時とは異なる特性を持つ) みんなのJava OpenJDKから始まる大変革期! https://gihyo.jp/book/2020/978-4-297-11199-1
  • 94. © 2020 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です