Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
JavaとWebAssembly
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kazuhiro Seo
July 16, 2024
Programming
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JavaとWebAssembly
Kazuhiro Seo
July 16, 2024
Transcript
19 slides
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 等を動かすのには使えるかもしれない
ありがとうございました
More Decks by Kazuhiro Seo
See All by Kazuhiro Seo
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
590
GitHub ActionsとAWSをOIDC認証で連携する
kazuhiro1982
1
260
Gradleとちょっと仲良くなろう
kazuhiro1982
0
140
SpringBoot 3.0 のNative Imageを試してみた
kazuhiro1982
0
480
セッションデータの管理にSpring Sessionを利用する
kazuhiro1982
0
3.8k
AWSのLake Formation Governed Tablesを触ってみた
kazuhiro1982
0
470
VS CodeとRemote Containerで開発環境もコード管理しよう
kazuhiro1982
1
790
SpringBootをコンテナで動かしてみる
kazuhiro1982
0
450
Serverless FrameworkでWebサイトの更新を検知して通知する
kazuhiro1982
0
550
Other Decks in Programming
See All in Programming
GraphQL の onError と Nullability のこれから
quramy
0
210
Enforcing Your Architecture with Unit Tests in the AI Era (Swift Connection X)
steliosf
PRO
1
170
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
2k
オーケストレーション記述言語 Katari
yukikurage
0
250
Materialが消えた日 〜真っ白なFlutterキャンバスにRenderObjectで絵を描く〜
umigishiaoi
0
160
SODA - FACT BOOK(JP)
sodainc
1
40k
protojson における文字化けの扱い
kazuki1023
0
400
flutter_test のその先へ — Flutter アプリの LLM 機能に「評価」という品質保証を
kosukesaigusa
0
200
조합이폭발하는디자인시스템이걸눈으로도테스트하라고요
giljongyu
0
750
Kawaiicon: Kubernetes, it's no longer cool, but let's secure it anyway!
barnbarn
0
130
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
310
Apple Intelligenceとオンデバイス時代の到来
yahir0
0
240
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
225
10k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
530
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.7k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
2
3.8k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1.1k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
WCS-LA-2024
lcolladotor
0
990
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
300
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
4
1.2k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
300
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
760