Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
JavaとWebAssembly
Search
Kazuhiro Seo
July 16, 2024
Programming
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JavaとWebAssembly
Kazuhiro Seo
July 16, 2024
More Decks by Kazuhiro Seo
See All by Kazuhiro Seo
GitHub ActionsとAWSをOIDC認証で連携する
kazuhiro1982
1
210
Gradleとちょっと仲良くなろう
kazuhiro1982
0
110
SpringBoot 3.0 のNative Imageを試してみた
kazuhiro1982
0
450
セッションデータの管理にSpring Sessionを利用する
kazuhiro1982
0
3.4k
AWSのLake Formation Governed Tablesを触ってみた
kazuhiro1982
0
440
VS CodeとRemote Containerで開発環境もコード管理しよう
kazuhiro1982
1
750
SpringBootをコンテナで動かしてみる
kazuhiro1982
0
430
Serverless FrameworkでWebサイトの更新を検知して通知する
kazuhiro1982
0
530
Other Decks in Programming
See All in Programming
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
120
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
150
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
1.6k
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
160
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
240
霧の中の代数的エフェクト
funnyycat
1
280
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.8k
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
230
継続モナドとリアクティブプログラミング
yukikurage
3
410
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
110
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
1
120
Featured
See All Featured
The Spectacular Lies of Maps
axbom
PRO
1
850
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
What's in a price? How to price your products and services
michaelherold
247
13k
Navigating Team Friction
lara
192
16k
Speed Design
sergeychernyshev
33
1.9k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
350
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.1k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Transcript
Java とWebAssembly
自己紹介 妹尾一弘 サーバーサイドエンジニア Java Do スタッフ 興味分野 AWS/ 開発環境/Java
今日のテーマ 最近興味のある技術をテーマにワイワイ語る会
None
WebAssembly でOpenJDK のJava ランタイムを実装 !? なにそれ面白そう
WebAssembly に詳しくない人間が 興味駆動で触ってみたお話
WebAssembly 略称: Wasm アセンブリ風のバイナリ命令セット ネイティブに近い性能が出る ほぼすべてのブラウザで動く 処理が重たいタスクに向いている 画像処理や機械学習など エッジコンピューティングでの利用も Cloudflare
Fastly (local i32 i32 i32 i32 i32 i32) local.get 0 call $meth_otr_RuntimeClass_getClass local.set 1 i32.const 8 local.set 2 local.get 1 i32.load offset=32 i32.const 0 i32.eq if ;; label = @1 local.get 1 call $meth_otr_Allocator_allocate local.set 3 local.get 1 i32.load offset=8 local.set 4
言語に依存しない 任意の言語からWasm にコンパイル出来る C/C++/Rust/Go など もちろん( 理屈としては)Java からも生成できる Rust ⬇️
Wasm // src/lib.rs #[no_mangle] pub extern "C" fn add(a: i32, b: i32) -> i32 { a + b } (module (type (;0;) (func (param i32 i32) (result i32))) (func $add (export "add") (type 0) (param i32 i32) (result local.get 0 local.get 1 i32.add) (table (;0;) 1 1 funcref) (memory (;0;) 16) ...
CheerpJ ブラウザで動作するWasm ベースのJava ランタイム Jar ファイルをJavaScript にJIT コンパイルして動かす 商用利用にはライセンスが必要 個人利用や非商用利用は無料
現在はJava8 に対応
寄り道 Java のコードをWasm に変換するには? OSS のプロダクトは?
TeaVM オープンソース Java コードをJavaScript に変換するツール WebAssembly にも変換可能 Experimental Status いくつかのJava
API は非対応 リフレクション、クラスローダ、JNI など
Demo - TeaVM
CheerpJ に戻って
4 つの動作モード Application Applet Library JNLP
Demo - ライブラリモード jar ファイルを直接ロード JavaScript 内でJava のメソッドを呼び出せる
ライブラリモードの制限事項 同一スレッド内では1 つのjar しか呼び出すことができない 複数ライブラリを呼び出す場合は、必要なjar を含んだFatJar を作る必要がある 呼び出せるメソッドと呼び出せないメソッドがある 非対応なJava API
を含むもの Java8 互換じゃないもの? overload がある場合も呼び出せない気がする?
Demo2 - Application モード UI を持つExecutable Jar をロードして起動する
いかがでしたか? おもしろ技術ではあった 実用性なんて飾りですよね レガシーなApplet 等を動かすのには使えるかもしれない
ありがとうございました