Co nemůžete dělat na Dalvik VM (Android je VM), který můžete v Sun VM?

hlasů
55

Vím, že můžete spustit téměř všechny Java v Dalvik je VM , které si můžete v Java VM ale omezení nejsou zcela jasné. Má někdo narazit na žádné velké úskalí? Nějaké velké knihovny potíže? Veškeré jazyky, které kompilovat Java byte kódu ( Scala , Jython atd ...) nefunguje podle očekávání?

Položena 23/10/2008 v 16:30
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
32

K dispozici je celá řada věcí, které Dalvik nebude zpracovávat ani nebude zacházet úplně stejně jako standardní Java bytecode, i když většina z nich jsou velmi pokročilé.

Nejzávažnější příkladem je runtime generace bytecode a zakázkové třídy zatížení. Řekněme, že byste chtěli vytvořit nějaký bytecode a pak použít ClassLoader jej nahrát na vás, jestli to trik funguje na běžném počítači, to je zaručeno, že nebude fungovat na Dalvik, pokud změníte generaci bytového kódu.

Které zabrání použití určitých vstřikovacích závislost rámců, nejznámější příklad je Google Guice (i když jsem si jist, že někteří lidé se na tom pracovat). Na druhou stranu AspectJ by mělo fungovat, protože používá bytového kódu instrumentace jako krok kompilace (i když nevím, jestli někdo pokusil).

Co se týče jiných JVM jazyků - vše, co nakonec překládá na standardní bytecode a nepoužívá bytového kódu přístrojového vybavení za běhu může být převeden na Dalvik a měl by fungovat. Vím, že lidé běžely Jython na Android a fungovalo to v pořádku.

Další věc, mít na paměti je, že neexistuje žádný jit . To není striktně Dalviks problém (vždy můžete sestavit jakýkoliv bytecode za běhu, pokud si přejete), ale Android nepodporuje a není pravděpodobné, aby tak učinily. V tom smyslu, zatímco microbenchmarking pro standardní Javu bylo k ničemu - komponenty měly různé runtime characterstics v testech než jako součást větších systémů - microbenchmarks pro telefony se systémem Android zcela smysl.

Odpovězeno 23/10/2008 v 21:07
zdroj uživatelem

hlasů
11

Pokud vidíte „ Dalvik Virtual Machine internals “ Google IO relaci naleznete Dalvik nepodporuje generační GC .

Takže by to mohlo snížit výkon tvorby časté a odstranění objektu. Java VM podporuje generační GC tak, že by se vykazují lepší výkon GC pro stejné situaci.

A také, Dalvik používá stopových granuality JIT namísto metody granuality SVT.

Odpovězeno 05/03/2010 v 20:06
zdroj uživatelem

hlasů
2

Další věc, která myslím, že by se zde přidává, že Dalvik zřejmě nebude pole pořadí zachovat při výpisu pole třídy pomocí odrazu API. Nyní, odraz API nedává žádné záruky na to stejně (takže v ideálním případě byste neměla záviset na tom tak jako tak), ale většina ostatních virtuálních počítačů tam venku dělat zachovat pořádek.

Odpovězeno 14/01/2012 v 17:36
zdroj uživatelem

hlasů
-1

Stačí přidat do konverzace, které nejsou určeny k oživit starou nit. Jen jsem narazil na to ve svém hledání, a chci dodat, že Jython nefunguje po vybalení z krabice s Dalvik jeden. Prostě se snaží udělat Hello World příklad přinese následující:

Odpovězeno 15/03/2014 v 05:04
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more