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
JVM の仕組みを理解して PHP で実装してみよう
Search
memory
PRO
May 23, 2025
Programming
650
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JVM の仕組みを理解して PHP で実装してみよう
Nextbeat Tech Bar: Java/JVM祭り
memory
PRO
May 23, 2025
More Decks by memory
See All by memory
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
2
2.1k
pnl で簡易的に作る PHP ネイティブアプリケーション
m3m0r7
PRO
0
62
セグメントとターゲットを意識するプロポーザルの書き方 〜採択の鍵は、誰に刺すかを見極めるマーケティング戦略にある〜
m3m0r7
PRO
1
1.2k
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
520
PHP でエミュレータを自作して Ubuntu を動かそう
m3m0r7
PRO
2
270
AI 時代だからこそ学ぶべき PHP の基礎
m3m0r7
PRO
7
2.6k
コードゴルファー道
m3m0r7
PRO
0
670
ChatGPT とつくる PHP で OS 実装
m3m0r7
PRO
3
560
事業観点から見る技術的負債の返済
m3m0r7
PRO
4
1.3k
Other Decks in Programming
See All in Programming
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
120
速習iPhone Duo対応
yuukiw00w
1
340
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
270
一人だけ、Kiroが静止する日
hideg
0
110
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
240
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
260
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
0
150
巨大モノリシックアプリ モダン化大作戦
ktcryomm
0
1k
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
2.9k
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
950
FreeBSDでZabbixを動かす.pdf
kenkino
0
280
SREの越境 / SRE Collaboration
y0hgi
0
110
Featured
See All Featured
Practical Orchestrator
shlominoach
192
12k
For a Future-Friendly Web
brad_frost
183
10k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Documentation Writing (for coders)
carmenintech
77
5.5k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Claude Code のすすめ
schroneko
67
230k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
Building the Perfect Custom Keyboard
takai
2
870
Transcript
ΊΓʔ +7.ͷΈΛཧղͯ͠ 1)1Ͱ࣮ͯ͠ΈΑ͏ /FYUCFBU5FDI#BSɿ+BWB+7.ࡇΓ 1
ΊΓʔ NNS ෳͷϕϯνϟʔاۀελʔτ Ξοϓاۀɼ্اۀͰιϑτΣ ΞΤϯδχΞ$50ͱͯ͠׆ಈɻ ීஈ3VCZͱ5ZQF4DSJQUॻ͍ͯ ·͢ɻ 2 NNS NNS
3 NEW!
1)1Ͱ+7.ͷ࣮ !1)1FS,BJHJ 4 1)1Ͱ3VCZ7.ͷ࣮ !3VCZ,BJHJ աڈͷ࡞ʜ
7.ʢ7JSUVBM.BDIJOFʣͷΈ +7.ͷ࣮ํ๏ 1)1Ͱͷ࣮ํ๏ %&.0 5 ͋͐͡Μͩ
ҙࣄ߲ 6
࣮ͷ͢͠͞ͷ؍Ͱ+%,Λڭࡐͱ͠·͢ ίϯύΠϥʹ͍ͭͯ͠·ͤΜ 1)1 +BWBͷॻ͖ํʹ͍ͭͯ͠·ͤΜ +7.4QFDJ fi DBUJPOͷৄ͍͠ಡΈํʹ͍ͭͯ 7 ҙࣄ߲ ͠·ͤΜ
8 ϦϙδτϦͷ͝հ IUUQTHJUIVCDPNQIQKBWBQIQKBWB
ଟ͘ͷਓ͕֤ʑͷ͖ͳݴޠͰ +7.Λ࣮͢Δ͜ͱ͕ྲྀߦΓ·ͨ͠Ͷ ʢલʣ 9
ࠓ--.͋Γɼੲ΄Ͳ࣮ʹ ۤ৺͠ͳ͍ͩΖ͏ͱࢥ͍·͢ɻ ϓϩάϥϛϯάॳ৺ऀͷํઓ͕Ͱ͖Δ ͱͯྑ͍͕࣌౸དྷ͖ͯ͠·ͨ͠ɻ 10
ͷͰͥͻઓͯ͠ΈͯͶʂ 11
7. 7JSUVBM.BDIJOF ʹ͍ͭͯ 12
+7.Λ࣮͢Δʹ͋ͨͬͯ7.ͷཧղඇৗʹॏཁͰ͢ɻ 7.7JSUVBM.BDIJOFͱ͍͍ɼͦͷίϯϐϡʔλͷಈ࡞ΛιϑτΣΞ্Ͱ࠶ݱ ͢ΔͷͰ͢ɻ ྫ͑7JSUVBM#PYͳͲ͕Πϝʔδʹ͍ۙΜ͡Όͳ͍Ͱ͠ΐ͏͔ɻ ͨͩɼ͜ΕΒͷ΄ͱΜͲɼ+7.ͷΑ͏ͳ7.ͱগ͠ҟͳΓ·͢ɻ 13
7. 7JSUVBM.BDIJOF ʹ͍ͭͯ
ҰํͰɼ+7.ʢ+BWB7JSUVBM.BDIJOFʣ;FOE7. 1)1༻ͷ7JSUVBM.BDIJOF ɼ 3VCZ7.ͳͲશ͘ҟͳΓ·͢ɻ ઌ΄ͲͷྫϋʔυΣΞϨϕϧͷͷͰ͕͢ɼ͜ΕΒΞϓϦέʔγϣϯϨϕϧ ͷͷͰ͢ɻ 7.ͱॻ͍͍ͯͯɼ͍͔ͭ͘छྨ͕͋ΔΜͩɼͱ͓΅͓͖͑ͯ·͠ΐ͏ɻ
࣍ʹྫͷਤΛࣔ͠·͢ɻ 14 7. 7JSUVBM.BDIJOF ʹ͍ͭͯ
15 7. 7JSUVBM.BDIJOF ʹ͍ͭͯ macOS VirtualBox (VM) JVM Java ϓϩάϥϜ
JVM Java ϓϩάϥϜ Zend VM PHPϓϩάϥϜ
ͦͯ͠ɼ΄ͱΜͲͷΞϓϦέʔγϣϯϨϕϧͷ7.ελοΫϚγϯʹ͍͔ۙͨͪͰ ࣮ͯ͠͞Ε͍ͯ·͢ʢ%BMWJLͳͲআ͘ʣɻ ͪΖΜ+7.3VCZ7.ελοΫϚγϯͷΑ͏ͳܗͰɼ$16ͷ΄ͱΜͲ ʢYʣϨδελϚγϯͰ͢ɻ ελοΫϚγϯͱɼࢦఆ͞Ε͍͔ͨͭ͘ͷϨδελ্ʹԿ͔Λ֨ೲ͢ΔͷͰͳ ͘ɼσʔλΛελοΫʢੵΈ্͛ʣͳ͕Βɼॲཧ͍ͯ͘͠ํ๏Ͱ͢ɻ
ҰํϨδελϚγϯɼ͋Β͔͡ΊܾΊΒΕͨϨδελͱݺΕΔྖҬʹΛ֨ೲ ͯ͠ܭࢉΛߦ͍ͬͯ͘ͷͰ͢ɻ 16 7. 7JSUVBM.BDIJOF ʹ͍ͭͯ
ϨδελϚγϯͷݩΛ֞ؒݟ͍ͨͷͰ͋ΕɼΞηϯϒϦݴޠΛॻ͍ͯɼ֤$16ʹ ࠷దԽ͞ΕͨܗͰτϥϯεύΠϧ͢Εɼ͋ΔఔཧղͰ͖ΔΜ͡Όͳ͍͔ͳͱࢥ͍ ·͢ɻ ༨ஊͰ͕͢ɼελοΫϚγϯҰ෦ͷϨδελϚγϯͷΈΛऔΓೖΕ͍ͯΔ͜ͱ ͋Γ·͢ɻ 17 7. 7JSUVBM.BDIJOF
ʹ͍ͭͯ
ελοΫϚγϯ ʙ Λٙࣅ໋ྩηοτͰܭࢉ͢Δʙ 18
Λٙࣅ໋ྩηοτͰܭࢉ͢Δ 19 7. 7JSUVBM.BDIJOF ʹ͍ͭͯ constadd (operand: 1)
constadd (operand: 2) constadd (operand: 3) plus plus output - constadd ໋ྩ 1 ͭͷΦϖϥϯυΛऔΓɼͦΕΛελοΫ ʹϓογϡ͢Δ໋ྩ - plus ελοΫ͔Β 2 ͭΛϙοϓ͠ɼͦΕΛՃࢉͨ͠ͷ ΛελοΫʹϓογϡ͢Δ໋ྩ - output ελοΫ͔ΒҰͭϙοϓ͠ग़ྗ͢Δ໋ྩ - ্هͷ 3 ͭͷ໋ྩͰ࣮ݱՄೳͰ͢ɻ͜ͷҰ࿈ͷྲྀΕΛ໋ྩ γʔέϯεͱݴͬͨΓ͠·͢ɻ
Λٙࣅ໋ྩηοτͰܭࢉ͢Δ 20 7. 7JSUVBM.BDIJOF ʹ͍ͭͯ constadd (operand: 1)
constadd (operand: 2) constadd (operand: 3) plus plus output ελοΫ 1 ελοΫʹ 1 Λϓογϡ
Λٙࣅ໋ྩηοτͰܭࢉ͢Δ 21 7. 7JSUVBM.BDIJOF ʹ͍ͭͯ constadd (operand: 1)
constadd (operand: 2) constadd (operand: 3) plus plus output ελοΫ 1 ελοΫʹ 2 Λϓογϡ 2
Λٙࣅ໋ྩηοτͰܭࢉ͢Δ 22 7. 7JSUVBM.BDIJOF ʹ͍ͭͯ constadd (operand: 1)
constadd (operand: 2) constadd (operand: 3) plus plus output ελοΫ 1 2 ͭͷσʔλΛϙοϓ 2 3 Ճࢉͨ݁͠ՌΛϓογϡ
Λٙࣅ໋ྩηοτͰܭࢉ͢Δ 23 7. 7JSUVBM.BDIJOF ʹ͍ͭͯ constadd (operand: 1)
constadd (operand: 2) constadd (operand: 3) plus plus output ελοΫ 3 ελοΫʹ 3 Λϓογϡ 3
Λٙࣅ໋ྩηοτͰܭࢉ͢Δ 24 7. 7JSUVBM.BDIJOF ʹ͍ͭͯ constadd (operand: 1)
constadd (operand: 2) constadd (operand: 3) plus plus output ελοΫ 3 2 ͭͷσʔλΛϙοϓ 3 6 Ճࢉͨ݁͠ՌΛϓογϡ
Λٙࣅ໋ྩηοτͰܭࢉ͢Δ 25 7. 7JSUVBM.BDIJOF ʹ͍ͭͯ constadd (operand: 1)
constadd (operand: 2) constadd (operand: 3) plus plus output ελοΫ 6 1 ͭͷσʔλΛϙοϓ
ϨδελϚγϯͷΈ $16ʹΑͬͯҟͳΔͷͰׂѪ͠·͢ 26
+7.ͷ࣮ํ๏ 27
7.ͷ࣮ํ๏͕֓ͶΘ͔Γ·ͨ͠ͶɻͰɼ࣮ࡍʹ+7.ͷ࣮ํ๏ʹ͍ͭͯཧղ ΛਂΊ͍͖ͯ·͠ΐ͏ɻ +7.DMBTTϑΝΠϧͱݺΕΔσʔλߏͷू߹Λ໋ྩͱղऍͯ͠ಈ࡞ͤ͞ΔΞ ϓϦέʔγϣϯϨϕϧͷ7.Ͱ͢ɻ DMBTTϑΝΠϧɼ+7.ͷنʹଇΓɼҰൠతʹ+BWBϓϩάϥϜ͔ΒίϯύΠϧ ͞Ε·͢ɻ
͋Δ͍ɼ,PUMJO 4DBMBͷΑ͏ͳ+7.ݴޠͱݺΕΔϓϩάϥϜɼͪΖΜ ίϯύΠϥΛࣗ࡞ͯ͠+7.ݴޠͱ͢Εɼࣗࣗͷ͖ͳͷؚΈ·͢ɻ 28 +7.ͷ࣮ํ๏
ͦͯ͠ɼ͜ΕΒ+7.4QFD 5IF +BWB7JSUVBM.BDIJOF 4QFDJ fi DBUJPO ͱݺΕΔɼυΩϡϝϯτ͕ΦϯϥΠϯͰެ։͞Ε͓ͯΓɼ+7. Λࣗ࡞͢ΔڭՊॻͱͳΓ·͢ɻ
+%,͔Βɼจࣈྻॲཧͷ࠷దԽͳͲ͕͋Γ࣮͕ࡶʹͳΔͨΊɼखܰʹΔ ͨΊʹ+%,Λਪ͠·͢ɻ +%,͕͍͍ײ͡ʹಈ͍ͨΒɼ+%,ͳͲʹγϑτ͍ͯ͘͜͠ͱΛ͓͢͢Ί͠ ·͢ɻ υΩϡϝϯτͪ͜ΒIUUQTEPDTPSBDMFDPNKBWBTFTQFDTKWNTTFIUNM 29 +7.ͷ࣮ํ๏
ͱ͍͑ʜ 30
ۙͰ--.ൃల͖͍ͯͯ͠ΔͷͰɼ$IBU(15ɼ$MBVEFɼ(FNJOJͳͲΛύʔτ φʔͱͯ͠ɼ࣮͢Δશવ͋ΓͰ͢ɻ ྫ͑ɼDMBTTϑΝΠϧͷࠜఈͷσʔλߏ$MBTT'JMF4USVDUVSFͱݺΕΔͷ Ͱ͕͢ɼ$IBU(15PͰదͳճΛग़ͯ͘͠Ε·͢ɻ 31 +7.ͷ࣮ํ๏
32 +7.ͷ࣮ํ๏ +7.4QFDΛಡΜͰ͍͘߹ IUUQTEPDTPSBDMFDPNKBWBTFTQFDTKWNTTFIUNM KWNTIUNMKWNT $IBU(15ͱҰॹʹ࡞͍ͬͯ͘
ͦͯ͠$IBU(15ͱ͍ͬ͠ΐʹ ࡞͍ͬͯ͘߹ྫࣔͯ͘͠Ε·͢ 33
34 +7.ͷ࣮ํ๏ $IBU(15ͱҰॹʹ࡞͍ͬͯ͘ͱʜ
$MBTT'JMF4USVDUVSFDMBTTϑΝΠϧͷߏΛఆٛ͢ΔॏཁͳσʔλߏͰ͢ɻ 㙽ʹ֯ʹ͜ͷΈΛΒͳ͚ΕɼଞݴޠͰ࣮Ͱ͖·ͤΜɻ ຊࢿྉΛࢀߟʹ࣮தʹ͍᪴ͨ߹ɼͥͻ--.ʹฉ͖ͳ͕ΒͬͯΒ͑Δͱ εϜʔζ͔ͳͱࢥ͍·͢ɻ Ͱɼ$MBTT'JMF4USVDUVSFΛಡΈࠐΉΈ1)1Ͱ࣮ͭͭ͠ɼࠓճ )FMMP8PSMEͷग़ྗΛΰʔϧͱ࣮ͯ͠·ͰͬͯΈ·͠ΐ͏ɻ
)FMMP8PSMEͷग़ྗͰ͋Εɼ+7.4QFDʹهࡌ͞Ε͍ͯΔ༰ͯ͢Λɼ దʹཧղ࣮ͯ͢͠Δඞཁͳ͍ͷͰɼָ࣮͘͠Ͱ͖Δ͜ͱؒҧ͍ͳ͠Ͱ͢ɻ 35 +7.ͷ࣮ํ๏
1)1Ͱͷ࣮ํ๏ 36
1)1ͰόΠφϦΛಡΉʹʜʁ 37
1)1ʹόΠφϦΛಡΈࠐΉํ๏͕ఏ ڙ͞Ε͍ͯ·͢ɻ͜͏͍ͬͨέʔεͰ GPQFO GSFBE VOQBDLͳͲ͕ ศརͰ͢ɻ DMBTTϑΝΠϧσʔλߏͱ͍͑ɼ +40/ͷΑ͏ʹϚγϯϦʔμϒϧͰ
ώϡʔϚϯϦʔμϒϧͰͳ͘ɼόΠ φϦͰ͢ɻ 38 1)1ͰόΠφϦΛಡΉʹʜʁ
όΠφϦΛಡΈࠐΜͰ͍͘ྲྀΕ 39
40 όΠφϦΛಡΈࠐΜͰ͍͘ྲྀΕ ClassFile Structure ΛಡΈࠐΉ Constant Pool ΛಡΈࠐΉ ϝιουͷใΛಡΈࠐΉ Code
Attribute ΛಡΈࠐΉ ΦϖίʔυΛ࣮ߦ͢Δ ΦϖίʔυʢϓϩάϥϜʣΛ࣮ߦ͢ΔͨΊͷ લॲཧ
$MBTT'JMF4USVDUVSF 41
$MBTT'JMF4USVDUVSFDMBTTϑΝΠϧ ͷϝλใͳͲ͕֨ೲ͞Ε͍ͯΔσʔλ ߏͰ͢ɻ ྫ͑ɼίϯύΠϧ࣌ʹ༻͍ΒΕͨ +BWBͷόʔδϣϯɼ͜ͷ͋ͱղઆ͢ Δ+7.Λ࣮͢ΔࡍͷίΞͱͳΔ $POTUBOU1PPMɼϑΟʔϧυͷใɼ ϝιουͷใͳͲͰ͢ɻ
42 $MBTT'JMF4USVDUVSF
43 $MBTT'JMF4USVDUVSF $MBTT'JMF4USVDUVSFDMBTTϑΝΠϧ ͷϝλใͳͲ͕֨ೲ͞Ε͍ͯΔσʔλ ߏͰ͢ɻ ྫ͑ɼίϯύΠϧ࣌ʹ༻͍ΒΕͨ +BWBͷόʔδϣϯɼ͜ͷ͋ͱղઆ͢ Δ+7.Λ࣮͢ΔࡍͷίΞͱͳΔ
$POTUBOU1PPMɼϑΟʔϧυͷใɼ ϝιουͷใͳͲͰ͢ɻ
$POTUBOU1PPM 44
45 $POTUBOU1PPM $POTUBOU1PPM$MBTT'JMF 4USVDUVSFͷσʔλߏͷҰ෦Ͱ +7.ʹͱͬͯಛʹίΞͱͳΔσʔλߏ Ͱ͢ɻ ɼจࣈྻɼϝιου໊ʢҾؚ ΉʣͳͲͷσʔλ͕֨ೲ͞Ε͍ͯ·͢ɻ
͜ΕΒΛऔΓग़͢͜ͱʹΑͬͯ)FMMP 8PSMEΛग़ྗ͢Δ͜ͱ͕Ͱ͖ΔΑ͏ ʹͳΓ·͢ɻ
ϝιου 46
47 ϝιου ϝιουɼ$MBTT'JMF4USVDUVSFͷ σʔλߏͷҰ෦ͰɼΞΫηεम০ࢠ ɼҾͷใΛɼͲͷ$POTUBOU 1PPM͔Βࢀর͢Δ͔Λ͍ࣔͯ͠Δͷ Ͱ͢ɻ ͜ΕΛಡΈࠐΉ͜ͱͰɼ)FMMP
8PSMEͷग़ྗ͕࣮͞Ε͍ͯΔ QVCMJDTUBUJDNBJO 4USJOH<> BSHT ͷใ͕औಘͰ͖·͢ɻ
$PEF"UUSJCVUF 48
$PEF"UUSJCVUF$MBTT'JMF4USVDUVSF Ͱఆٛ͞Ε͍ͯΔͷϝιουͷσʔλߏͷ Ұ෦Ͱ͢ɻ ϝιουʹଐੑͱͯ͠ϓϩάϥϜͷใ͕ ਵ͍ͯ͠·͢ɻ $MBTT'JMF4USVDUVSFࣗମͷ"UUSJCVUFͱ ͯ͠ɼίʔυͷߦΛ֨ೲ͍ͯ͠Δଐੑͷ
ใͳͲ͕͋Γ·͢ɻ 49 $PEF"UUSJCVUF
Φϖίʔυͷ࣮ߦ 50
Φϖίʔυʢ0Q$PEF0QFSBUJPO$PEFʣɼ໋ྩΛ͘ϚγϯϦʔμϒϧʹදݱ͠ ͍ͯΔͷͰ͢ɻ·ͨҾͷ͜ͱΛΦϖϥϯυͱ͍͍·͢ɻ $PEF"UUSJCVUFΛಡΈࠐΉ͜ͱͰɼ͜ͷ໋ྩΛऔಘͰ͖·͢ɻ 51 Φϖίʔυͷ࣮ߦ B2 00 02
12 03 B6 00 04 B1 getstatic ͷΦϖίʔυ getstatic ͷΦϖϥϯυ (Constant Pool ͷ2 ൪)
ώϡʔϚϯϦʔμϒϧͰͳ͍ͷͰɼཧղ ͕͍͠Ͱ͕͢ɼ͜ΕΒΛώϡʔϚϯϦʔ μϒϧʹͨ͠ͷ͕͋ΓɼͦΕΒΛχʔϞ χοΫʢNOFNPOJDʣͱݺΜͩΓ͠· ͢ɻ ΞηϯϒϦݴޠΛॻ͍ͨ͜ͱ͕͋Δਓ ɼͳΜͱͳ͘Πϝʔδ͔ͭ͘ͳͱࢥ͍ ·͢ɻ
+BWBKBWBQDίϚϯυͰɼͲ͏͍͏ ίʔυ͔͚·͢ɻ 52 Φϖίʔυͷ࣮ߦ
͜ͷKBWBQίϚϯυͱ ಉ͡ΦϖίʔυΛ࣮͢ΕΑ͍Ͱ͢ 53
54
KBWB-BOH4ZTUFN1)1ͷ OBNFTQBDFΛ͏·͘׆༻ͯ͠ʜ 55
56
%&.0 57 IUUQTHJTUHJUIVCDPNNNSEEDFBGFDFFBGCFDBBF
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 58