Talk:Dalvik (software)

From Wikipedia, the free encyclopedia
Jump to: navigation, search
          This article is of interest to the following WikiProjects:
WikiProject Java (Rated Start-class, Low-importance)
WikiProject icon This article is within the scope of WikiProject Java, a collaborative effort to improve the coverage of Java on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
Start-Class article Start  This article has been rated as Start-Class on the project's quality scale.
 Low  This article has been rated as Low-importance on the project's importance scale.
WikiProject Computing / Software (Rated Start-class, Low-importance)
WikiProject icon This article is within the scope of WikiProject Computing, a collaborative effort to improve the coverage of computers, computing, and information technology on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
Start-Class article Start  This article has been rated as Start-Class on the project's quality scale.
 Low  This article has been rated as Low-importance on the project's importance scale.
Taskforce icon
This article is supported by WikiProject Software (marked as Mid-importance).
Note icon
This article has been marked as needing an infobox.
WikiProject Google (Rated Start-class, Low-importance)
WikiProject icon This article is within the scope of WikiProject Google, a collaborative effort to improve the coverage of Google and related topics on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
Start-Class article Start  This article has been rated as Start-Class on the project's quality scale.
 Low  This article has been rated as Low-importance on the project's importance scale.


yanked the 'memory management' thing from:

Dan Bornstein[edit]

This is a Google employee, can you state that? Sounds like independent. —Preceding unsigned comment added by (talk) 22:12, 5 December 2008 (UTC)

Original Java VM sucks?[edit]

I'm a bit confused... Isn't the java bytecode meant to be optimised for weak hardware like mobile devices? I mean, doesn't the necessarity for an "optimiser" that turns java bytecode into something better mean, that the java VMs are really bad? 20:24, 13 November 2007 (UTC)

Mmyeah, pretty much. -- (talk) 20:06, 26 February 2008 (UTC)
You are right, plus today's ARM processors also embed a JaZelle booster dedicated to directly translate most of the bytecode into native instruction. So Google point about "it's is optimized" is the same as Steve Jobs saying "Java is slow" when you know the iPhone supports Jazelle. Steve is just looking for exclusive application (Java portability would killed its premium) on iPhone, and Google is only looking to workaround Sun royalties. Be sure that if Sun give free royalties to Google for Java usage, then they will directly jump back to real compatible Java using bytecode, retouring the translator as a JIT ;-) TestMan —Preceding unsigned comment added by (talk) 07:29, 6 April 2009 (UTC)

Everything is written in this article: "However, tests performed on ARM devices by Oracle (owner of the Java technology) in 2010 with standard non-graphical Java benchmarks on both Android 2.2 (the initial release to include a just-in-time compiler) and Java SE embedded (both based on Java SE 6) seemed to show that Android 2.2 was 2 to 3 times slower than Java SE embedded." - Why oracle need to do NON-graphical tests? Well, the Java VM is a graphical horror, which is proven again by JavaFX, which uses a lot of CPU power for the smallest animations. Because Oracle doesn't know anything about GUI performance and optimized code. So they need to do tests which prove that the SE has faster database access or array manipulation than the Android VM, instead of doing their home work. Lol (talk) 16:39, 15 October 2012 (UTC)

Graphics benchmarks must have their own category; benchmark consumers either care about graphics (games/CAD/image processing), or don't (database/servers/telco/billing systems). Re: Oracle/performance/horrors/"proven by JavaFX", well, that's flame-bait. There will be performance issues with JVM's & graphics for years to come; to be expected w/ layers of abstraction between the hardware & language. (Blame NVidia more than Oracle... plus, this is still Sun's baby, with minimal impact by Oracle one way or the other, which is actually better than expected.) As an exmaple, just look at the history/performance of Linux/X (see: wayland). — Preceding unsigned comment added by (talk) 09:07, 4 April 2013 (UTC)

More information, please?[edit]

Can we have more information on this VM; for example:

  • the number and size or registers,
  • whether addresses and data values are distinguished, for example by having dedicated registers for each,
  • addressing modes,
  • number of stacks,
  • security checks at runtime,
  • whether or not the VM has, or is intended to have later, a JIT compiler which can compile into native code,
  • whether there is any provision for supporting type-based theorem proving for security assertions, for example to prove whether storage operations can be performed without bounds-checking?
  • can it do super-clever things like closures and spaghetti stacks, or is it pretty much a dead-ahead old-fashioned intcode implementation that models a conventional CPU?

-- The Anome 12:19, 14 November 2007 (UTC)

I just added a new Architecture paragraph. There are answers to some of these questions. Hervegirod (talk) 08:56, 8 June 2008 (UTC)
I'd like the article to state what this VM is licensed under. I assume apache. I ask because this whitepaper: suggested: " As such, any phone that would customize the libraries found in this layer, add libraries or remove them altogether would no longer be able to brand itself as an Android phone. Furthermore, under this same pledge, its license to the proprietary Dalvik virtual machine found at the core of the Android platform would be considered null and void. " Which I don't believe to be accurate. Mathiastck (talk) 13:59, 6 April 2009 (UTC)

Can anyone clarify what exactly the VM does with the bytecode if it does not JIT-compile it? Does it only interpret and make calls into the kernel or libraries then? (talk) 20:12, 17 April 2009 (UTC)

Copyright violation[edit]

This page uses copyrighted material from [1]. -- (talk) 20:04, 26 February 2008 (UTC)

Thanks for the hint; I've removed the quotes. Make this article quite broken, though.--Oneiros (talk) 00:46, 23 November 2008 (UTC)

Dalvik is not Java[edit]

I see that it is written in the header that "Dalvik is the virtual machine which runs the Java platform". But Dalvik is not Java. It uses only a subset of the standard APIs, doesn't even resemble normal JVM and doesn't run Java bytecode. People are constantly getting confused that Android is based on Java. It isn't. And I think it's better to stress it right in the header. HotXRock (talk) 16:49, 23 April 2010 (UTC)

Dalvik is some kind of proprietary Java which is probably used by google to render any advantages of java converning platform-independence mute. It's google-Java or Java in disguise, but it's not really something different (merely different coding and packaging). -- (talk) 15:52, 16 August 2010 (UTC)
Wait, ok, so what I'm understanding is that it's not a Java VM for a number of reasons. One of which is that it doesn't execute Java bytecode in .class-formatted files. But doesn't it only run programs originally written in Java? Couldn't we say something in the opening paragraph about how it's Java-based or Java-derivative or whatever? I know we don't want to confuse people and continue the incorrect phrasing of its relationship to Java but if this article had explicitly explained it (especially early on) I would've understood the basics of Dalvik long ago. --Qwerty0 (talk) 03:50, 4 October 2010 (UTC)
Note, partially to self: Just found reference confirming that Dalvik programs are Java programs that've been converted to .dex format: --Qwerty0 (talk) 04:13, 4 October 2010 (UTC)

I think it helps to distinguish between Java (a high-level language + class library), and the Java VM (which runs underlying bytecode). The Java compiler converts Java into bytecode. But there's nothing sacred there. There are many VMs these days --- Java VM, Microsoft's CLR, the "new" VM for perl6/python, VM's inside of web browsers, etc. In principle, any language can be translated into any bytecode for any VM. And that happens --- for example, IKVM can be used to translate Java into CLR bytecode, allowing it to run in the same VM as C#, VB.NET, etc.

Dalvik is a VM. It is no more linked to Java than x86 is linked to C++.

For that reason, this article is incredibly confusing. The first paragraph explains that Dalvik is a VM --- which really has nothing to do with a high-level language like Java, C++, C#, Python, etc. And then out of the blue, the rest of the article talks about Java, with no context.

As far as I can tell, the lawsuit between Oracle and Google is based on patents (six, to be exact), not copyrights. No one is claiming that Google copied any copyrighted portion of Java or Java-related technology. In fact, the lawsuit has nothing with Java per se, and everything to do with VM technology. All of the claimed patent infringements are at the VM level, not the language or library level. Oracle would probably have just as good (or bad) a lawsuit against every VM maker out there --- Google Chrome, Mozilla, Perl, .NET, etc.

I think the article should emphasize that the reason Java is relevant here is because Google has opted for a model in which Java source code is compiled to Dalvik VM code, to be run on Android. Although it wouldn't have changed whatever patent issues might (or might not) be there, my guess Oracle probably would not be suing Google if they'd decided on a platform of C#+Dalvik instead. This lawsuit makes about as much sense as suing Microsoft because Java cod is sometimes compiled to the .NET CLR using IKVM (I've done it). —Preceding unsigned comment added by (talk) 22:18, 21 October 2010 (UTC)

To be clear Java source code is not compiled to Dalvik, it is compiled to Java bytecode and then it is converted by other tools into Dalvik bytecode. However, Dalvik VM itself has nothing to do with Java bytecode, conversion happens before the program is installed to devices. HotXRock (talk) 12:19, 24 October 2010 (UTC)
Ok so I've (very belatedly) revised the opening paragraph to reflect the consensus we've arrived at (as well as to be more clear and straightforward). It references only the Java programming language, distinguishes Dalvik from the JVM, and explicitly specifies the point HotXRock brought up about .java > .class > .dex.
I agree, it was kind of absurd to not mention Java there at all, then start talking about it out of nowhere for the rest of the article.
--Qwerty0 (talk) 11:23, 28 September 2011 (UTC)

Architecture sentence is not a sentence.[edit]

The last sentence of the second paragraph of the Architecture section is not a sentence. I'm not sure what it's trying to say, but someone should revise it. —Preceding unsigned comment added by (talk) 19:06, 31 July 2010 (UTC)

Dalvik's license[edit]

It would be good to have some explicit discussion of Dalvik's license in the article. The infobox says it's apache2-licensed. But in the context of the Oracle controversy, there's been discussion about whether the Dalvik VM is in fact open-source at all. Would be grateful for some clarification --mcld (talk) 11:19, 16 August 2010 (UTC)

OK, started a section --mcld (talk) 12:03, 16 August 2010 (UTC)

SCOracle graphic[edit]

This graphic is prejudicial. SCO wanted to charge for linux licenses using what was easily questionable copyright ownership. There is no dispute that Oracle bought Sun in total and thus owns the java copyrights. Thus Oracle should not be framed in the same light as SCO. —Preceding unsigned comment added by Bilton1 (talkcontribs) 02:11, 27 August 2010 (UTC)

I agree. SCO inherently is not responsible or a party for the Oracle/Google controversy. This graphic should be removed. (talk) 04:28, 27 August 2010 (UTC)

Reference to Boies, Schiller & Flexner[edit]

I think this reference is more of a lame attempt at SEO for the Wikipedia entry about that law firm than helpful (or needed) information in the context of Dalvik. Note that the linked Wikipedia entry for said firm has multiple issues, among others: "It is written like an advertisement". Surprise, surprise. I'd suggest removing this reference as long as the many issues of the linked entry aren't solved. (talk) 14:17, 12 October 2010 (UTC)

Open source ?[edit]

How is this open source ? Where can I download the source ?! —Preceding unsigned comment added by (talk) 10:43, 11 April 2011 (UTC)

It is open source because it is released under the Apache 2 license. You can download it here . -- Q Chris (talk) 12:27, 11 April 2011 (UTC)
Thanks, but your link leads to a 404 ! —Preceding unsigned comment added by (talk) 13:17, 11 April 2011 (UTC)
Fixed it (thanks) -- Q Chris (talk) 14:14, 11 April 2011 (UTC)
Thanks for fixing it, but the SVN command only got me a bunch of tools: profiler, benchmarks, Guice.. ! Where is the VM's code ? —Preceding unsigned comment added by (talk) 12:43, 12 April 2011 (UTC)
Sorry I really don't know. I think the whole of android is available at so it could be in there somewhere. -- Q Chris (talk) 13:11, 12 April 2011 (UTC)
Well, the article is wrong. Dalvik is not open source. On the GIT repository, there is a "dalvikvm" folder at root, but it only contains a command-line parser/launcher of the VM. If it was open source, Florian Mueller wouldn't sue Google ! Source code of the foundation of the OS (the VM) is not available. The article should be fixed. Also, the lawsuit for violation of the GPL should be mentioned !
There's another directory called "vm" that has a lot more stuff in it. Maybe you could calm down and look there before making any more complaints. (talk) 10:43, 13 April 2011 (UTC)
Could you give us the path please? -- Q Chris (talk) 11:05, 13 April 2011 (UTC)
Following a discussion on helpdesk it is here:;a=tree;f=vm;h=ea98b66e4f4b04e158d0f77ff0d25eab344a9489;hb=HEAD -- Q Chris (talk) 13:18, 13 April 2011 (UTC)
Thank you Chris. Now I can believe. Still, the GPL violation allegations should be mentioned in the article. —Preceding unsigned comment added by (talk) 13:40, 29 April 2011 (UTC)


Does Dalvik make use of the Jazelle instruction set for acceleration (also, is it possible and/or beneficial to do so)? Arny (talk) 10:59, 11 July 2011 (UTC)

I did not find any source about that, and also I don't think it's the case, because Jazelle is based on the existing JVM instruction set. Plus Jazelle is closed source technology by ARM, it would seem really strange that Google would have used this technology for their own Virtual machine. Hervegirod (talk) 13:49, 8 May 2012 (UTC)


The sentence which mention the Oracle benchmarks compared to Java 6 on ARM is often removed on the basis that it is (obviously) biased. Last time by someone who did not even put any comment on why he did it. AFAIK it's the only benchmark which can be found about the performance of Dalvik.

Of course it is by definition biased, because it's from Oracle, however the benchmark where performed with standard Java benchmarks converted to the Dalvik format (Cafeine and Scimark), and the hardware, configuration and how it was performed, and how to reproduced it, is explained in the post, so it's not just a "we are better than them" scenario. As Q Chris wrote, "though this is probably not an unbiased source it would be better to include a refutation or show clear bias than just remove it". I could not find any other benchmark (even from Google), allowing to compare Android's JVM to others; And sadly the Shootout doe only run it's benchmarks on standard Linux distributions, so there's no way we would see one Android's Java for it soon.

However is I see no reason why it should be blatantly false, given that developing a VM with good performance is really hard work, and the standard Java JVM has a much longer history than Android JVM. Hervegirod (talk) 14:01, 8 May 2012 (UTC)

I agree it should stand unless there is some specific evidence that it is biased. Even in this case it would be better to keep it and add the refutation or completing benchmark. Even though it uses standard benchmarks that doesn't necessarily mean that it isn't biased, for example it's possible that they ran thirty benchmarks and picked the only ones that show Dalvik in a bad light.
Also it would be nice to have a more up to date benchmark, as both platforms have moved on since then. -- Q Chris (talk) 14:29, 8 May 2012 (UTC)
I found academic benchmarks (2012) which show exactly the same factor between HotSpot and Dalvik. I did not found more recent academic results, but there are recent benches where you can execute the same code by Dalvik and through JNI (C), and the factor is approximately 30 to 100. Hervegirod (talk) 14:11, 23 March 2014 (UTC)

DMY date format?[edit]

Meant to change and wrote summary "Ugly mess of date formats. Only DMY used in main text, however appropriate MDY (WP:STRONGNAT) or YMD used elsewhere." However in second thought DMY might be correct not just because of first use but because of WP:STRONGANT. Dalvik is named after Dalvík in Iceland, a DMY country.. :) Change others? comp.arch (talk) 14:27, 24 March 2014 (UTC)