D.C.資訊交流網-[綜合論壇]-關閉註冊's Archiver

mahler14 發表於 2007-9-5 01:23

Java 的公開秘密

大家都知道Java會將原始碼編譯成類別檔然後交由JVM來執行。
但是事實上JVM並非以直譯的方式來執行類別檔,至少在JDK1.2版之後,JVM的實做引入JIT編譯器。

透過JIT編譯器,Java的類別檔不是由JVM執行,而是將其再次編譯成為作業系統上的組合語言碼才執行。

這使得Java的效能整體而言比C++還要快,
這讓我相當訝異,Java在虛擬呼叫、物件創始等速度相當快,
C++則是在Control Flow的執行上略甚一籌。

.NET 的編譯器所編譯出來的MSIL檔就是一種類別檔,
只是微軟不想要這麼稱呼,不過.NET Runtime很聰明直接就採用JIT技術,
將不同語言所編譯出來的MSIL,再轉換成為目的作業系統的組合語言。

不論MSIL或是類別檔,現在看來應該都算是種中繼檔,
反正他們的功能只是再被編譯一次而已。

tonychen0116 發表於 2007-9-13 18:41

good........................

andy(MM) 發表於 2007-9-13 19:43

有些高深,不太明白,再好好学习学习,谢谢楼主兄弟!

lmy46 發表於 2007-9-14 08:31

原來有雙重編譯
不再是以前直接從bytecode過來
謝謝分享

james1234 發表於 2007-9-20 00:13

但是在圖形化介面上(swing)仍是算慢的,還是有改進空間囉

lovevke 發表於 2007-9-24 16:43

哦,这样,看的不是很明白,还需要学习啊,不过java整体上肯定是比较慢一点的啦,
谢谢楼主辅导,我还需慢慢的理解一下

milk1177 發表於 2007-9-25 19:32

真的很專業
可以多說一點

滅絕大師 發表於 2007-10-2 21:39

Thank you

Thank you for you share

happycamper 發表於 2007-10-9 12:53

great,
thanks for sharing

wangbadan 發表於 2007-10-10 17:12

写的满专业的, 不过如果可以解释什么是JVM & JIT 会更好。 谢谢。

良守 發表於 2007-10-12 05:30

原來還可以用這個方法   謝謝大大交我們

wastant 發表於 2007-10-12 15:32

學習中!
問個小問題:
變動式的網址後綴碼是否由JAVA所控制?

flair123 發表於 2007-10-12 18:52

寫的滿好的...剛好最近在學習jsp

gq_bai 發表於 2008-7-23 12:32

写的太简练了,好多术语不明白
知识面还是欠缺呀

19125072 發表於 2008-7-29 04:05

我在这个领域还属于小白...

tamadeb 發表於 2008-8-6 05:42

受教了~謝謝

可是再說多一點,再深入一點嗎?

c_c_lai 發表於 2009-3-22 07:47

在JDK1.2版之後,JVM的實做引入JIT編譯器將其再次編譯成為作業系統上的組合語言碼才執行,亦即JVM並非以直譯的方式來執行類別檔,難怪這使得Java的效能整體而言比C++還要快!且又不失原本之可攜性與相容性。

aoc9 發表於 2009-11-11 15:17

java的执行效率到底怎么样?

gameking 發表於 2010-3-5 02:02

明白明白, 學會了!

mahler14 發表於 2010-3-7 02:30

JVM 是 Java Virtual Machine,負責執行Java位元組碼的環境,可以是軟體或是硬體。
JIT是Just In Time 編譯器,用來在執行進行即時的程式碼優化,讓系統跑快一點。

頁: [1] 2

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.