Slide 1

Slide 1 text

JEPs の変遷から眺める Vector API 2024-07-30 関ジャバ'24 7月度 BABY JOB 株式会社 浅野 正貴 (@mackey0225)

Slide 2

Slide 2 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP 自己紹介 名前:浅野 正貴 所属:BABY JOB 株式会社 最近は AWS や SRE がメイン X: @mackey0225 Java についてしゃべるのが久しぶりです

Slide 3

Slide 3 text

いきなりだけど 今回のきっかけ

Slide 4

Slide 4 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP 某所にて

Slide 5

Slide 5 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP 某所にて

Slide 6

Slide 6 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP 某所にて 自分が面白いとおもった Vector API の一連の JEPs についてしゃべります

Slide 7

Slide 7 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP 某所にて

Slide 8

Slide 8 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP 某所にて 軽い気持ちで聞いて下さい🙇

Slide 9

Slide 9 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP なんで、Vector API の話なの? ● Vector API 自体に興味があったから ○ 個人的な興味(Not 業務利用) ● 長い事 Incubator のままだから ○ 8回は JEP の中でも一番長い Incubator ○ JEP 読めば何か分かるかもという好奇心 ■ 登壇駆動学習の一端

Slide 10

Slide 10 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP 諸注意 ● Vector API の技術的な詳細説明はしないです ● 実装の話もしないです ○ 下の Youtube 観てもらってもいいかも ■ The Vector API in JDK 17 ■ Vector API: SIMD Programming in Java ■ Vector API for Java

Slide 11

Slide 11 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP Vector API とは ● 一言でいうと、SIMD の Java 実装 ○ Single Instruction, Multiple Data ○ 一つの命令で複数のデータを同時に処理する技術 ● 画像処理、科学計算など大量データの並列処理で効果 ● CPU アーキテクチャーによらない実装を目指している

Slide 12

Slide 12 text

ここから本題 各 JEP (8本)について

Slide 13

Slide 13 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP JEP 338: Vector API (Incubator) ● https://openjdk.org/jeps/338 ● すべてのはじまり ● Java 16 でリリース ● 当初の Component は hotspot / compiler ○ 2nd 以降は core-libs になっている ● 多かれ少なかれ、大体は大きな変更は見えない(JEP 上)

Slide 14

Slide 14 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP JEP 414: Vector API (Second Incubator) ● https://openjdk.org/jeps/414 ● Java 17 でリリース ● 1st 比べてあまり変わりない ○ Summary の記載がちょっと変わった ○ Component が core-libs になった

Slide 15

Slide 15 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP JEP 417: Vector API (Third Incubator) ● https://openjdk.org/jeps/417 ● Java 18 でリリース ● 1st, 2nd と比べて全体的に記載の変更があった ○ 全体的に文体が変わった ○ History セクションの追加 ○ Description の記載構成が変わった

Slide 16

Slide 16 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP JEP 426: Vector API (Fourth Incubator) ● https://openjdk.org/jeps/426 ● Java 19 でリリース ● 3rd との比較 ○ History が長い ■ FFM API (JEP 424) の活用 など

Slide 17

Slide 17 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP JEP 438: Vector API (Fifth Incubator) ● https://openjdk.org/jeps/438 ● Java 20 でリリース ● 機能的には大きな変更はない ● 本論ではないが、このタイミングでドメインが変わる ○ @openjdk.java.net → @openjdk.org ● Goals に Project Valhalla に関する記載が追加

Slide 18

Slide 18 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP JEP 438: Vector API (Fifth Incubator) ● https://openjdk.org/jeps/438 ● Java 20 でリリース ● 機能的には大きな変更はない ● 本論ではないが、このタイミングでドメインが変わる ○ @openjdk.java.net → @openjdk.org ● Goals に Project Valhalla に関する記載が追加

Slide 19

Slide 19 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP Alignment with Project Valhalla

Slide 20

Slide 20 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP Alignment with Project Valhalla

Slide 21

Slide 21 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP Alignment with Project Valhalla 【意訳】 Vector API ちゃんにとって必要となる機能が、 Project Valhalla くんのプレビュー機能として利用可能になるまで、 複数のリリースにわたってインキュベートのままにしとくね!(`・ω・´)

Slide 22

Slide 22 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP Alignment with Project Valhalla 【意訳】 そのため、Vector API ちゃんにとって必要となる機能が、 Project Valhalla くんのプレビュー機能として利用可能になるまで、 複数のリリースにわたってインキュベートのままにしとくね!(`・ω・´) Valhalla 待ちでした!

Slide 23

Slide 23 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP Alignment with Project Valhalla 【意訳】 そのため、Vector API ちゃんにとって必要となる機能が、 Project Valhalla くんのプレビュー機能として利用可能になるまで、 複数のリリースにわたってインキュベートのままにしとくね!(`・ω・´) おしまい!

Slide 24

Slide 24 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP Alignment with Project Valhalla 【意訳】 そのため、Vector API ちゃんにとって必要となる機能が、 Project Valhalla くんのプレビュー機能として利用可能になるまで、 複数のリリースにわたってインキュベートのままにしとくね!(`・ω・´) おしまい! もうちっとだけ 続くんじゃ

Slide 25

Slide 25 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP JEP 448: Vector API (Sixth Incubator) ● https://openjdk.org/jeps/448 ● Java 21 でリリース ● あんまし変わりがない ○ History の記載にある変更ぐらい ○ ほかは、細かい表現ぐらい

Slide 26

Slide 26 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP JEP 460: Vector API (Seventh Incubator) ● https://openjdk.org/jeps/460 ● Java 22 でリリース ● あんまし変わりがない ○ History の記載にある変更ぐらい ○ ほかは、細かい表現ぐらい

Slide 27

Slide 27 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP JEP 469: Vector API (Eighth Incubator) ● https://openjdk.org/jeps/469 ● Java 23 でリリース ● あんまし変わりがない ○ History の記載にある変更ぐらい ○ ほかは、細かい表現ぐらい

Slide 28

Slide 28 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP まとめ(という名の個人の感想) ● 当初からの目標は大きく変わっていない ● 他のプロジェクトとの関係が垣間見えた ○ Panama の FFM API や Valhalla の Value Object ■ ばあさんや、Valhalla はまだかのう。。。 ● 本当は実装レベルでの確認はしたかった(今後の課題) ● CPU や低レイヤにも興味が出た(いつ調べるかは知らん)

Slide 29

Slide 29 text

ご清聴いただき ありがとうございました

Slide 30

Slide 30 text

JEPs の変遷から眺める Vector API #kanjava #25YearsOfJCP 参考 ● Youtube ○ Vector API: SIMD Programming in Java ○ The Vector API in JDK 17 ○ Vector API for Java ● JEPs ○ JEP 338: Vector API (Incubator) ○ JEP 414: Vector API (Second Incubator) ○ JEP 417: Vector API (Third Incubator) ○ JEP 426: Vector API (Fourth Incubator) ○ JEP 438: Vector API (Fifth Incubator) ○ JEP 448: Vector API (Sixth Incubator) ○ JEP 460: Vector API (Seventh Incubator) ○ JEP 469: Vector API (Eighth Incubator)