iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 3
1
自我挑戰組

Android API超初學!!系列 第 3

[Android API] [Day 3] Dalvik VM (1) - Java bytecode

接下來要研究的是Dalvik VM,不過再研究它之前,先來複習一下JVM。

一樣,想要用一句話來解釋一個名詞,查wiki最快了。

(JVM)一種能夠執行Java bytecode的虛擬機器。

Java可以跨平台執行,就是因為有JVM的存在。任何平台只要裝上JVM,它就能夠讀懂Java bytecode,就都可以執行Java了。

所以首要了解的就是,Java bytecode是什麼?Java編譯與執行的大致流程是如何?

Java bytecode

第一眼看到這個詞,就有個疑問:它跟一般我們說的binary code一樣嗎?

網路上有人解答 ,我截其中一部分回答如下:

Java bytecode is a binary data format (...). In that sense, Java bytecode is a special kind of binary code.

When you use the term "binary code" to mean machine instructions for a real processors architecture (like IA-32 or Sparc) then it is different. (...) It is not processor-specific.

那Java bytecode實際上長什麼樣子呢?
一樣拿wiki的範例來看:

這是我們一般較熟悉的組合語言:

mov eax, byte [ebp-4]
mov edx, byte [ebp-8]
add eax, edx
mov ecx, eax

這是Java bytecode:

0 iload_1
1 iload_2
2 iadd
3 istore_3

若要深入研究這些語法我就不用讀Android了(累),所以我就先想成,Java bytecode就是JVM專用的binary code這樣就夠了。

/images/emoticon/emoticon11.gif

今天先到這裡,明天來講Java執行流程。


上一篇
[Android API] [Day 2] Linux Kernel
下一篇
[Android API] [Day 4] Dalvik VM (2) - JVM
系列文
Android API超初學!!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言