原文出處
http://latte.snu.ac.kr/doc/difference_kaffe.shtml
LaTTe一開始是建立於Kaffe 0.9.2的源碼上,是個自由免費的Java virtual machine.不過Java virtual machine的核心部份幾乎被改寫.包括了bytecode execution engines, garbage collector, exception manager及thread synchronization mechanism.
首先,LaTTe的執行引擎(例如:JIT compiler and the interpreter)是從頭寫起.因為,Kaffe把重點放在可移植性及支援多平台上,它有的是一個相對簡單的JIT compiler和有點慢的interpreter.相反的,LaTTe有的是用組合語言精心撰寫的JIT compiler及相當快的interpreter.此外,LaTTe可以同時使用JIT compiler及interpreter,而Kaffe只可以使用其中一個.
garbage collector對效能有很大的影響.Kaffe提供了一個老式的標記-清除的garbage collector.LaTTe也使用了標記-清除的garbage collector,但只有部分用了老方法.LaTTe的garbage collector的內部結構和Kaffe完全不同.而且實作後在LaTTe上表現的非常快.
LaTTe並沒有在轉譯method時,轉譯Java method中的exception handlers.而是當process丟出例外時才轉譯.因此,LaTTe的exception manager的作法和Kaffe不同.此外,不論例外是由已轉譯的程式碼,或是由interpreter中丟出,對LaTTe來說都是毫無影響,但對Kaffe就不然.
LaTTe使用了經過少許修改的Kaffe的user-level thread system.但是,支援Java monitors的thread synchronization mechanism是重新設計的,為的是要比Kaffe快.這個新的synchronization的設計,使得物件架構變的不同.
沒有留言:
張貼留言