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 Interoperating with Golang V2
Search
swt02026
May 28, 2019
Programming
0
37
Java Interoperating with Golang V2
GraalVM
JNI
JDK 13 Panama( new!!!)
swt02026
May 28, 2019
Tweet
Share
More Decks by swt02026
See All by swt02026
Interoperating Golang with Swift
swt02026
0
36
Java Interoperating with Golang
swt02026
0
50
Other Decks in Programming
See All in Programming
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
370
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
600
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
680
AIエージェントのキホンから学ぶ「エージェンティックコーディング」実践入門
masahiro_nishimi
3
280
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
620
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
510
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
990
CSC307 Lecture 04
javiergs
PRO
0
650
AIエージェントの設計で注意するべきポイント6選
har1101
7
3.4k
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
970
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
160
CSC307 Lecture 01
javiergs
PRO
0
690
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
2
210
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
47
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
80
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
230
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
640
Being A Developer After 40
akosma
91
590k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
240
Music & Morning Musume
bryan
47
7.1k
AI: The stuff that nobody shows you
jnunemaker
PRO
2
240
Documentation Writing (for coders)
carmenintech
77
5.2k
Transcript
在 Java 使用 Go 函式Ver.2 使用JDK 13 Panama Colab: http://bit.ly/2Ex4clY
簡報: http://bit.ly/2HXFYST
已知的解決方案 • Java Native Interface • GraalVM Native-Image • GraalVM
sulong + llgo • JDK 13 Panama
Java Native Interface Java Go C Header X 2 Library
jar Library 2
Java Native Interface 原理 • 撰寫 C 程式,將 JNI 與
cgo 產生 Library 包裝 優點 • 相關教學資源多 • Android 也適用 缺點 • 需要寫 C 、Java、Go • 產生的中介檔多
GraalVM Native-Image Java Go Header Library ELF or Mach-O .class
GraalVM Native-Image 原理 • 把 Java 程式編譯成 Native Binary,與 cgo
Library 進行 Linkage 缺點 • 編譯時間長,產生的執行檔很肥 • JVM 的功能無法完全取代 • Java 程式需要提供編譯器相關資訊 • 目前只提供 Java 8 的語法 • Android 尚未支援 優點 • 不用 JVM 就能執行 • 只需要寫 Java 、Go
GraalVM sulong + llgo Java Go LLVM bitCode jar
GraalVM sulong + llgo 原理 • 用 llgo 將 Go
程式編譯成 LLVM bitcode • 使用 GraalVM sulong 執行 LLVM bitcode 缺點 • llgo 已經五年沒維護,沒安裝成功.... • 可能會遇到 bitcode 版本相容問題 • Java 程式中要處理 bitcode Lifecycle • 編譯時期 Go 與 Java 產生檔案沒有直接相依,不易偵錯
JDK 13 Panama Java Go Library Header jar
JDK 13 Panama 原理 • 使用 jextract 工具,將 Header 與
Library 相關資訊包裝成 Java Package 優點 • Java 程式只需 Import Package 就可以使用 • 未來會取代 Java Native Interface,Android 不確定 缺點 • 目前文件很少 • 產生的 Java Package 資訊不透明,decompile 才能了解如何使用
None
我們都用GO直接重寫,沒在跨語言der
參考資料 https://hg.openjdk.java.net/panama/dev/raw-file/c359a9e944de/doc/panama_forei gn.html https://jdk.java.net/panama/