SlideShare a Scribd company logo
1 of 34
Download to read offline
VMを改めて学んでみる
~mruby,Java~
横浜Android and モバイルOSプラットフォーム部第 41回勉強会
@kishima
目次
自己紹介
@kishimaといいます
お仕事:組み込み系ソフト研究開発
趣味:
 ・最近は、電子工作的なことも
 ・Ruby関連の活動も最近復活気味
モチベーション
何でこういう話をしたくなったのか
きっかけ
個人的な理由:
・昔から組み込み機器でRuby動いたらいいなと思っていた
・以前Dalvikも少しだけかじってみたりもした(その後、仕事が忙しくなって数年ブランクが)
・Rubyのよりコンパクトな実装として、mrubyというのも2013年ごろ出てきたけど(仕事が忙しくなってry)
・アプリ寄りの仕事が多かったけれど、仕事であるプロダクトの全体を見ることになって、勉強不足を痛感
・楽しくやりたいので、趣味の電子工作を本格的に着手
・最近mruby/cというさらにコンパクトな実装があることを知る
・実装もとても読みやすい
・実装、読んでみて理解が進んだので、昔途中で投げ出したVMについてもまた興味が湧いてきた。工作ネタにも絡められそう
  ・昔のDalvikを勉強したことを思い出しつつ、VMをまた勉強して、その成果をベース自作デバイスにも適用してみたい
大義的な理由:
・モバイル機器などでもVM上で動く言語が前提となることも増えてきているので、VMの動きをよく知っておくことは、mruby、Java
に限らずよいことだと思う
本日は
・mrubyを切り口に、Javaと比較しつつ、VMとバイト
コードについて理解を深めたい
・まだ理解していないことも多いので、入門編的な内
容です
VMのイメージ、どんなふうに使われているか
VMあれこれ
VMとは
「コンピュータの動作をエミュレートするソフトウェアや
 フレームワークである。また、エミュレートされた
 仮想のコンピュータそのものも仮想機械という。」
  From Wikipedia https://ja.wikipedia.org/wiki/仮想機械
  >コンピュータを模擬して動くなにか
なぜVMを使うのか
◦ VMを複数動かすことによるHWリソースの共有
◦ 抽象化による移植性の向上
◦ サンドボックス的な利用
◦ 高速化(高級言語を中間言語を介してJITして速くする)
 あたりかと思います
色々なVM
・ゲストOSを、ホストOSの上で動かすもの
  例:
  ・VMware
  ・VirtualBox
  ・ハイパーバイザー(OSレベルで対応)
   ・KVM
  ・CPUまでエミュレーション
   ・QEMU
処理のイメージ
  通常
   アプリケーション→OS→CPU
  VMあり
   アプリケーション→ゲストOS→ホストOS→CPU
             (VMががんばる)
色々なVM
・言語を特定/不特定のOS, CPU上で動かすもの
 例:このあとで紹介
・処理のイメージ
 通常:
  プログラム→機械語→CPU
    (コンパイラ頑張る)
 VMあり:
  プログラム→中間コード→VM→CPU
  (中間コードへのコンパイラ頑張る)
          (VMも頑張る)
プログラム言語のVM
Jul 2018のWeb上の話題ランキング
https://www.tiobe.com/tiobe-index/
# 言語名 代表的な処理系(kishima調べ)
1 Java Oracle JVM, OpenJDK
2 C (Native)
3 C++ (Native)
4 Python Standalone VM, Python(PyPy), JVM(Jython)
5 Visual Basic .NET .NET Framework
6 C# .NET Framework etc
7 PHP Zend Engine(VM) PHP4より
8 JavaSCript Chrome:V8, Firefox:SpiderMonkey, Edge:Chakra
9 SQL DB system
10 Objective-C (Native)
言語とその処理系
Jul 2018のWeb上の話題ランキング
https://www.tiobe.com/tiobe-index/
# 言語名 代表的な処理系(kishima調べ)
11 Swift (Native based on LLVM)
12 Ruby YARV(CRuby), JVM(JRuby)
13 Assembly lang (Native)
14 R R
15 MATLAB MATLBA
16 Delphi/Object Pascal (Native)
17 Perl Perl5:Perl-Interpreter, Perl6:MoarVM, JVM etc.
18 Go (Native)
19 Visual Basic VBランタイム
20 PL/SQL Oracle DB
言語とその処理系
その他
# 言語名 代表的な処理系(kishima調べ)
1 Kotlin JVM
2 Dart Standalone VM, dart2js, frogc
3 Scala JVM
4 Lua Lua VM
5 Rust (Native rustcコンパイラ)
6 mruby RiteVM, mruby/c
・ ・・・ ・・・
Androidと馴染み深いJavaと
    個人的に馴染み深いmrubyを題材にVMを見てみる
Java
Dalvikが対象ですが、
一般的なVMの勉強のためにも
とてもよい本だと思いました
(内容まだ理解しきれてない)
https://tatsu-zine.com/books/androidvm-dalvik
→の本を読んだりして
 勉強中・・・
Java VMの実装例(ごく一部です)
1. miniJVM [1] — a JVM for iOS/Android/Linux/MacOS/Win. small and fast, minimal foundation class library, about 180 classes.
Implemented extension ios/android GUI class library, write once run ios and android.
2. Avian [2] — a small, easily embeddable Java VM and classpath using just-in-time compilation.
3. Azul Zulu — is an OpenJDK build supported by Azul Systems and is compliant with the Java SE 8, 7, and 6 standards.
4. Bck2Brwsr — small JVM capable to boot fast and run in 100% of modern browsers including those that have no special support for
Java. Last release in April, 2016.
5. CACAO — uses GNU Classpath, supports multiple architectures. GPL. 1.6.0 released September 4, 2012.
6. DoppioJVM — a JVM written in TypeScript capable of running in a browser.
7. Eclipse OpenJ9 — from IBM, for Windows, AIX, Linux (x86 ,PPC and Z), MVS, OS/400, Pocket PC, z/OS.
8. GraalVM CE — an embeddable, polyglot VM from OracleLabs, written in Java. It uses the Graal compiler for both AOT and JIT
compilations, by means of abstract syntax tree and partial evaluation techniques.
9. HaikuVM — for Atmel AVRs (Arduino) and other micros using the leJOS runtime.
10. HotSpot — the primary reference Java VM implementation. Used by both Oracle Java and OpenJDK.
11. Jamiga — for the Amiga platform. Depends on GNU Classpath. GPL.
12. JamVM — developed to be an extremely small virtual machine compared to others. Designed to use GNU Classpath. Supports
several architectures. GPL.
13. Jelatine JVM.
14. Jikes RVM (Jikes Research Virtual Machine) — research project. PPC and IA-32. Supports Apache Harmony and GNU Classpath
libraries. Eclipse Public License.
15. JVM.go — a JVM written in Go.
16. leJOS — Robotics suite, a firmware replacement for Lego Mindstorms programmable bricks, provides a Java programming
environment for the Lego Mindstorms RCX and NXT robots.
17. Maxine — meta-circular open source research VM from Oracle Labs and the University of Manchester.
18. Multi-OS Engine — Java VM for iOS based on ART .
19. RopeVM — the Rope Java Virtual Machine implements the Rope model which is a novel thread level speculative execution model
called Rushing Object Parallel Environment. This is a research project aimed at exploiting parallelism in traditional object oriented
programs.
出典:List of Jave virtual machines ( https://en.wikipedia.org/wiki/List_of_Java_virtual_machines )
多い!
mruby
脈絡なくmruby。使いたいから、使う、のです
mrubyの紹介
◦ 組み込み向けのRuby
▫ アプリケーションへの組み込み
▫ マイコンなどへの組み込み
mrubyの設計ポリシー
◦ 設計ポリシー(”mrubyのすべて”より)
▫ JIS/ISO尊重
▫ 組み込みAPI
▫ 移植性
■ C99
▫ 省メモリー
■ 400KB程度のRAMでも動く
▫ ソフトリアルタイム
■ ハードリアルタイムは目指さない
mrubyの応用例(アプリケーション)
ngx_mruby
Nginx の内部処理をmrubyで
  https://github.com/matsumotory/ngx_mruby
H2O
DeNAが作ったHTTP/2 Webサーバ
 最初からmrubyを内包している
mrubyの応用(組み込み機器)
◦ IoTなどへの適用を期待
▫ 酒蔵向けIoTシステム
■ https://monstar-lab.com/shimane_iot_180426/
◦ プロトタイピング、個人向け
▫ GR-CITRUS
■ http://gadget.renesas.com/ja/product/citrus.html
▫ mruby-esp32
■ https://github.com/mruby-esp32/mruby-esp32
▫ mrubyc_for_ESP32_Ardiono
■ https://github.com/kishima/mrubyc_for_ESP32_Arduino
など
バイトコードを読んでみよう
実際に簡単なコードをバイトコードに変換してみる
バイトコード?
Javaやmrubyのコードを解析、変換して
できるソースコードと機械語の中間的な
コード
最適化の処理を施すなど、機械的な処理
に適している
Javaのバイトコード
・スタックマシンで動く
・1バイトで命令(OPCODE)を表現
     https://en.wikipedia.org/wiki/Java_bytecode_instruction_listings
・引数を取るものもある
mrubyのバイトコード
・レジスタマシンで動く
(CRubyはスタックマシン)
・1命令長は4バイト固定
・引数も命令に含む
バイトコードを読んでみよう
Javaの場合(OpenJDK使用)
javec [xxx.java]
javap -v [xxx.class]
mrubyの場合
mrbc --verbose [xxx.rb]
JavaのバイトコードのOPCODE
1. aaload
2. aastore
3. aconst_null
4. aload
5. aload_<n>
6. anewarray
7. areturn
8. arraylength
9. astore
10. astore_<n>
11. athrow
12. baload
13. bastore
14. bipush
15. caload
16. castore
17. checkcast
18. d2f
19. d2i
20. d2l
21. dadd
22. daload
23. dastore
24. dcmp<op>
25. dconst_<d>
26. ddiv
27. dload
28. dload_<n>
29. dmul
30. dneg
31. drem
32. dreturn
33. dstore
34. dstore_<n>
35. dsub
36. dup
37. dup_x1
38. dup_x2
39. dup2
40. dup2_x1
41. dup2_x2
42. f2d
43. f2i
44. f2l
45. fadd
46. faload
47. fastore
48. fcmp<op>
49. fconst_<f>
50. fdiv
51. fload
52. fload_<n>
53. fmul
54. fneg
55. frem
56. freturn
57. fstore
58. fstore_<n>
59. fsub
60. getfield
61. getstatic
62. goto
63. goto_w
64. i2b
65. i2c
66. i2d
67. i2f
68. i2l
69. i2s
70. iadd
71. iaload
72. iand
73. iastore
74. iconst_<i>
75. idiv
76. if_acmp<cond>
77. if_icmp<cond>
78. if<cond>
79. ifnonnull
80. ifnull
81. iinc
82. iload
83. iload_<n>
84. imul
85. ineg
86. instanceof
87. invokedynamic
88. invokeinterface
89. invokespecial
90. invokestatic
91. invokevirtual
92. ior
93. irem
94. ireturn
95. ishl
96. ishr
97. istore
98. istore_<n>
99. isub
100. iushr
101. ixor
102. jsr
103. jsr_w
104. l2d
105. l2f
106. l2i
107. ladd
108. laload
109. land
110. lastore
111. lcmp
112. lconst_<l>
113. ldc
114. ldc_w
115. ldc2_w
116. ldiv
117. lload
118. lload_<n>
119. lmul
120. lneg
121. lookupswitch
122. lor
123. lrem
124. lreturn
125. lshl
126. lshr
127. lstore
128. lstore_<n>
129. lsub
130. lushr
131. lxor
132. monitorenter
133. monitorexit
134. multianewarray
135. new
156. newarray
157. nop
158. pop
159. pop2
160. putfield
161. putstatic
162. ret
163. return
164. saload
165. sastore
166. sipush
167. swap
168. tableswitch
169. wide
docs.oracle.com/javase/specs/jvms/se10/html/
https://ja.wikipedia.org/wiki/Java仮想マシン
200個ほどあるらしい(下は SE10の仕様からコピーしたもの)
mrubyのバイトコードのOPCODE
OP_NOP
OP_MOVE
OP_LOADL
OP_LOADI
OP_LOADSYM
OP_LOADNIL
OP_LOADSELF
OP_LOADT
OP_LOADF
OP_GETGLOBAL
OP_SETGLOBAL
OP_GETSPECIAL
OP_SETSPECIAL
OP_GETIV
OP_SETIV
OP_GETCV
OP_SETCV
OP_GETCONST
OP_SETCONST
OP_GETMCNST
OP_SETMCNST
OP_GETUPVAR
OP_SETUPVAR
OP_JMP
OP_JMPIF
OP_JMPNOT
OP_ONERR
OP_RESCUE
81個のOPCODE。 
OP_POPERR
OP_RAISE
OP_EPUSH
OP_EPOP
OP_SEND
OP_SENDB
OP_FSEND
OP_CALL
OP_SUPER
OP_ARGARY
OP_ENTER
OP_KARG
OP_KDICT
OP_RETURN
OP_TAILCALL
OP_BLKPUSH
OP_ADD
OP_ADDI
OP_SUB
OP_SUBI
OP_MUL
OP_DIV
OP_EQ
OP_LT
OP_LE
OP_GT
OP_GE
OP_ARRAY
OP_ARYCAT
OP_ARYPUSH
OP_AREF
OP_ASET
OP_APOST
OP_STRING
OP_STRCAT
OP_HASH
OP_LAMBDA
OP_RANGE
OP_OCLASS
OP_CLASS
OP_MODULE
OP_EXEC
OP_METHOD
OP_SCLASS
OP_TCLASS
OP_DEBUG
OP_STOP
OP_ERR
OP_RSVD1
OP_RSVD2
OP_RSVD3
OP_RSVD4
OP_RSVD5
バイトコード:足し算
Javaの足し算とmrubyの足し算の比較
バイトコード:メソッドコール
mrubyの動的なメソッド定義に着目
バイトコード:mrubyっぽいところ1
クロージャ
やってみたいこと
目論見
Uno
当選するかな・・・?
理解したいこと
・JNIのあたり
・ジェネリクスなど
・JITなどの最適化手法
 →JRubyが高速と言われる理由を
・mrubyのJIT
・mrubyとMicroPythonの違い
 など、
Thank you

More Related Content

What's hot

THETA S でライブストリーミング(途中経過)
THETA S でライブストリーミング(途中経過)THETA S でライブストリーミング(途中経過)
THETA S でライブストリーミング(途中経過)KatsuyaENDOH
 
楽しく使おう・始めよう!Raspberry Pi入門〜実践編〜
楽しく使おう・始めよう!Raspberry Pi入門〜実践編〜楽しく使おう・始めよう!Raspberry Pi入門〜実践編〜
楽しく使おう・始めよう!Raspberry Pi入門〜実践編〜Akira Ouchi
 
Unityプロファイラについて
UnityプロファイラについてUnityプロファイラについて
UnityプロファイラについてMio Ku-tani
 
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013晃 遠山
 
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)Takashi Sogabe
 
ゴルフゲームでUnityの限界を突破する方法
ゴルフゲームでUnityの限界を突破する方法ゴルフゲームでUnityの限界を突破する方法
ゴルフゲームでUnityの限界を突破する方法Nohina Hidenari
 
Ruby東京プレゼン 資料
Ruby東京プレゼン 資料Ruby東京プレゼン 資料
Ruby東京プレゼン 資料Kazuaki Tanaka
 
THETA S による身代わりテレビの実装(完結編)
THETA S による身代わりテレビの実装(完結編)THETA S による身代わりテレビの実装(完結編)
THETA S による身代わりテレビの実装(完結編)KatsuyaENDOH
 
Introduction of mruby & Webruby script example
Introduction of mruby & Webruby script exampleIntroduction of mruby & Webruby script example
Introduction of mruby & Webruby script examplekishima7
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Koichi Sakata
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjHisateru Tanaka
 
DockerでJupyter使おうぜ
DockerでJupyter使おうぜDockerでJupyter使おうぜ
DockerでJupyter使おうぜSatoshi Yazawa
 
async/awaitダークサイド is 何
async/awaitダークサイド is 何async/awaitダークサイド is 何
async/awaitダークサイド is 何Kouji Matsui
 
A frameハンズオン 20170129
A frameハンズオン 20170129A frameハンズオン 20170129
A frameハンズオン 20170129Youichi Sugii
 
Aframe詰め合わせ
Aframe詰め合わせAframe詰め合わせ
Aframe詰め合わせYouichi Sugii
 
パノラマ動画VR再生のあれこれ
パノラマ動画VR再生のあれこれパノラマ動画VR再生のあれこれ
パノラマ動画VR再生のあれこれMakotoItoh
 
Unityのasset bundle運用実例@lordofknights
Unityのasset bundle運用実例@lordofknightsUnityのasset bundle運用実例@lordofknights
Unityのasset bundle運用実例@lordofknightsKouji Hosoda
 
NorikraのJVMチューンで苦労している話
NorikraのJVMチューンで苦労している話NorikraのJVMチューンで苦労している話
NorikraのJVMチューンで苦労している話SATOSHI TAGOMORI
 
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2Saya Katafuchi
 

What's hot (20)

THETA S でライブストリーミング(途中経過)
THETA S でライブストリーミング(途中経過)THETA S でライブストリーミング(途中経過)
THETA S でライブストリーミング(途中経過)
 
楽しく使おう・始めよう!Raspberry Pi入門〜実践編〜
楽しく使おう・始めよう!Raspberry Pi入門〜実践編〜楽しく使おう・始めよう!Raspberry Pi入門〜実践編〜
楽しく使おう・始めよう!Raspberry Pi入門〜実践編〜
 
Unityプロファイラについて
UnityプロファイラについてUnityプロファイラについて
Unityプロファイラについて
 
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
 
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
 
ゴルフゲームでUnityの限界を突破する方法
ゴルフゲームでUnityの限界を突破する方法ゴルフゲームでUnityの限界を突破する方法
ゴルフゲームでUnityの限界を突破する方法
 
Ruby東京プレゼン 資料
Ruby東京プレゼン 資料Ruby東京プレゼン 資料
Ruby東京プレゼン 資料
 
THETA S による身代わりテレビの実装(完結編)
THETA S による身代わりテレビの実装(完結編)THETA S による身代わりテレビの実装(完結編)
THETA S による身代わりテレビの実装(完結編)
 
Introduction of mruby & Webruby script example
Introduction of mruby & Webruby script exampleIntroduction of mruby & Webruby script example
Introduction of mruby & Webruby script example
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
 
DockerでJupyter使おうぜ
DockerでJupyter使おうぜDockerでJupyter使おうぜ
DockerでJupyter使おうぜ
 
async/awaitダークサイド is 何
async/awaitダークサイド is 何async/awaitダークサイド is 何
async/awaitダークサイド is 何
 
A frameハンズオン 20170129
A frameハンズオン 20170129A frameハンズオン 20170129
A frameハンズオン 20170129
 
Aframe詰め合わせ
Aframe詰め合わせAframe詰め合わせ
Aframe詰め合わせ
 
パノラマ動画VR再生のあれこれ
パノラマ動画VR再生のあれこれパノラマ動画VR再生のあれこれ
パノラマ動画VR再生のあれこれ
 
Unityのasset bundle運用実例@lordofknights
Unityのasset bundle運用実例@lordofknightsUnityのasset bundle運用実例@lordofknights
Unityのasset bundle運用実例@lordofknights
 
NorikraのJVMチューンで苦労している話
NorikraのJVMチューンで苦労している話NorikraのJVMチューンで苦労している話
NorikraのJVMチューンで苦労している話
 
Apache Antについて
Apache AntについてApache Antについて
Apache Antについて
 
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2
 

Similar to VMを改めて学んで見る

Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)Takashi Sogabe
 
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発Kazuaki Tanaka
 
たのしいNode.js
たのしいNode.jsたのしいNode.js
たのしいNode.jsishiki-takai
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825hiro345
 
mruby/c機能紹介20160329
mruby/c機能紹介20160329mruby/c機能紹介20160329
mruby/c機能紹介20160329shimane-itoc
 
Introduction to web development 1
Introduction to web development 1Introduction to web development 1
Introduction to web development 1hideaki honda
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発Kota Mizushima
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験AdvancedTechNight
 
mruby VM を調べてみた話
mruby VM を調べてみた話mruby VM を調べてみた話
mruby VM を調べてみた話kishima7
 
Great Ideas in GraalVM
Great Ideas in GraalVMGreat Ideas in GraalVM
Great Ideas in GraalVMKoichi Sakata
 
軽量Ruby『mruby』について
軽量Ruby『mruby』について軽量Ruby『mruby』について
軽量Ruby『mruby』についてRyosuke MATSUMOTO
 
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...NTT DATA Technology & Innovation
 
勉強会20140319 rspec_capybara
勉強会20140319 rspec_capybara勉強会20140319 rspec_capybara
勉強会20140319 rspec_capybaraShugo Numano
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Tokuhiro Matsuno
 

Similar to VMを改めて学んで見る (20)

Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)
 
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
 
たのしいNode.js
たのしいNode.jsたのしいNode.js
たのしいNode.js
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
mruby/c機能紹介20160329
mruby/c機能紹介20160329mruby/c機能紹介20160329
mruby/c機能紹介20160329
 
Harmoware-VIS Tutorial
Harmoware-VIS TutorialHarmoware-VIS Tutorial
Harmoware-VIS Tutorial
 
20131227_appium+rspec
20131227_appium+rspec20131227_appium+rspec
20131227_appium+rspec
 
Introduction to web development 1
Introduction to web development 1Introduction to web development 1
Introduction to web development 1
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
 
mruby VM を調べてみた話
mruby VM を調べてみた話mruby VM を調べてみた話
mruby VM を調べてみた話
 
Great Ideas in GraalVM
Great Ideas in GraalVMGreat Ideas in GraalVM
Great Ideas in GraalVM
 
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
 
Osoljp studygroup201303
Osoljp studygroup201303Osoljp studygroup201303
Osoljp studygroup201303
 
軽量Ruby『mruby』について
軽量Ruby『mruby』について軽量Ruby『mruby』について
軽量Ruby『mruby』について
 
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
 
勉強会20140319 rspec_capybara
勉強会20140319 rspec_capybara勉強会20140319 rspec_capybara
勉強会20140319 rspec_capybara
 
mruby for embedded systems
mruby for embedded systemsmruby for embedded systems
mruby for embedded systems
 
SPA×Auth0
SPA×Auth0SPA×Auth0
SPA×Auth0
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 

More from kishima7

Now is the time to create your own (m)Ruby computer
Now is the time to create your own (m)Ruby computerNow is the time to create your own (m)Ruby computer
Now is the time to create your own (m)Ruby computerkishima7
 
mrubyで作るマイコンボード
mrubyで作るマイコンボードmrubyで作るマイコンボード
mrubyで作るマイコンボードkishima7
 
自分だけのデバイスを作るお話
自分だけのデバイスを作るお話自分だけのデバイスを作るお話
自分だけのデバイスを作るお話kishima7
 
オリジナルmrubyデバイス作り
オリジナルmrubyデバイス作りオリジナルmrubyデバイス作り
オリジナルmrubyデバイス作りkishima7
 
Stairway to my Family mruby
Stairway to my Family mrubyStairway to my Family mruby
Stairway to my Family mrubykishima7
 
mruby/cで始めるM5Stack &mrubyスクリプト開発
mruby/cで始めるM5Stack &mrubyスクリプト開発mruby/cで始めるM5Stack &mrubyスクリプト開発
mruby/cで始めるM5Stack &mrubyスクリプト開発kishima7
 
Wio LTEとmruby/cでIoT
Wio LTEとmruby/cでIoTWio LTEとmruby/cでIoT
Wio LTEとmruby/cでIoTkishima7
 
Unityにmrubyを組み込んで抽選をしてみた
Unityにmrubyを組み込んで抽選をしてみたUnityにmrubyを組み込んで抽選をしてみた
Unityにmrubyを組み込んで抽選をしてみたkishima7
 
Dalvik Source Code Reading
Dalvik Source Code ReadingDalvik Source Code Reading
Dalvik Source Code Readingkishima7
 
Ruby and Android
Ruby and AndroidRuby and Android
Ruby and Androidkishima7
 
Google TV hack
Google TV hackGoogle TV hack
Google TV hackkishima7
 
くみこみからひとことReturns
くみこみからひとことReturnsくみこみからひとことReturns
くみこみからひとことReturnskishima7
 
ネット家電じゃなくて?
ネット家電じゃなくて?ネット家電じゃなくて?
ネット家電じゃなくて?kishima7
 
くみこみからひとこと
くみこみからひとことくみこみからひとこと
くみこみからひとことkishima7
 

More from kishima7 (14)

Now is the time to create your own (m)Ruby computer
Now is the time to create your own (m)Ruby computerNow is the time to create your own (m)Ruby computer
Now is the time to create your own (m)Ruby computer
 
mrubyで作るマイコンボード
mrubyで作るマイコンボードmrubyで作るマイコンボード
mrubyで作るマイコンボード
 
自分だけのデバイスを作るお話
自分だけのデバイスを作るお話自分だけのデバイスを作るお話
自分だけのデバイスを作るお話
 
オリジナルmrubyデバイス作り
オリジナルmrubyデバイス作りオリジナルmrubyデバイス作り
オリジナルmrubyデバイス作り
 
Stairway to my Family mruby
Stairway to my Family mrubyStairway to my Family mruby
Stairway to my Family mruby
 
mruby/cで始めるM5Stack &mrubyスクリプト開発
mruby/cで始めるM5Stack &mrubyスクリプト開発mruby/cで始めるM5Stack &mrubyスクリプト開発
mruby/cで始めるM5Stack &mrubyスクリプト開発
 
Wio LTEとmruby/cでIoT
Wio LTEとmruby/cでIoTWio LTEとmruby/cでIoT
Wio LTEとmruby/cでIoT
 
Unityにmrubyを組み込んで抽選をしてみた
Unityにmrubyを組み込んで抽選をしてみたUnityにmrubyを組み込んで抽選をしてみた
Unityにmrubyを組み込んで抽選をしてみた
 
Dalvik Source Code Reading
Dalvik Source Code ReadingDalvik Source Code Reading
Dalvik Source Code Reading
 
Ruby and Android
Ruby and AndroidRuby and Android
Ruby and Android
 
Google TV hack
Google TV hackGoogle TV hack
Google TV hack
 
くみこみからひとことReturns
くみこみからひとことReturnsくみこみからひとことReturns
くみこみからひとことReturns
 
ネット家電じゃなくて?
ネット家電じゃなくて?ネット家電じゃなくて?
ネット家電じゃなくて?
 
くみこみからひとこと
くみこみからひとことくみこみからひとこと
くみこみからひとこと
 

VMを改めて学んで見る