iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 4
0
自我挑戰組

Android API超初學!!系列 第 4

[Android API] [Day 4] Dalvik VM (2) - JVM

  • 分享至 

  • xImage
  •  

昨天非常簡略的講了Java bytecode,今天來研究Java編譯和執行的流程。 (啊到底哪時候可以開始學Android API啦!!)

以C語言為例,它的編譯過程如下圖:
https://ithelp.ithome.com.tw/upload/images/20181015/20112439u01Kipniwt.jpg

C因為compile time做了一堆事,所以runtime的時候執行檔直接就可以跑啦,很快速。但Java就不一樣了,請看下圖:

https://ithelp.ithome.com.tw/upload/images/20181015/20112439fkkbavE1wC.jpg

編譯細節不是重點所以省略,從圖明顯可看出,Java在runtime的時候做了很多事情,而且都是需要透過JVM這個小幫手才可成功執行。

所以來下個結論吧,這個網站的結論簡單明瞭,我翻譯成中文分享一下:

造成Java執行速度慢的主要兩個原因:

  1. Dynamic Linking: 因為Java每次執行程式都要重做一次linking (C/C++在compile time就做完linking了)
  2. Run-time Interpreter: runtime還需要直譯bytecode,所以Java可以說是編譯+直譯混合的語言

今天的學習就到這邊,下次見~


上一篇
[Android API] [Day 3] Dalvik VM (1) - Java bytecode
下一篇
[Android API] [Day 5] Dalvik VM (3) - DVM/ART
系列文
Android API超初學!!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言