top | item 8582760

(no title)

ShabbyDoo | 11 years ago

For Google, ART seems bigger than just Android. Consider the degree to which their infrastructure depends on the Oracle JVM and the associated strategic risk. As one datapoint, recall the Oracle vs. Google Java lawsuit. How much additional ART development effort is required for correct execution of non-AWT (Abstract Windowing Toolkit) Java applications (essentially, headless server processes)? I know the Java/JVM ecosystem well, but I have not done any Android development. Surely, Google wants control over the destiny of its core software stack.

The article doesn't mention one seemingly huge benefit of JIT compilation: profile-guided optimization:

http://www.slideshare.net/ZeroTurnaround/vladimir-ivanovjvmj...

Perhaps the baby has been thrown out with the bathwater?

Little is mentioned about how ART compares to the JVM. For example, does ART perform escape analysis? Not all object allocations are equally bad. The Sun JVM can figure out which objects may be allocated on TLABs (Thread Local Allocation Buffers) - an optimization which reduces the burden placed on the garbage collector because TLAB-resident objects may be deallocated as the stack is popped. [Please fact-check me as I'm merely a long-time Java developer vs. an expert on JVM internals]

discuss

order

izacus|11 years ago

I agree that this article is rather superficial, but you have to take into account, that Android was running Dalvik VM, not standard JVM.

Dalvik was rather primitive and extremely slow in comparison to whichever JVM you choose on the desktop today.

pjmlp|11 years ago

Well, OpenJDK is getting AOT compilation as well (planned for 9). In addition to JIT.

The SubstrateVM is the AOT compiler for Graal.

And many commercial JVMs do offer AOT compilation.

Also, .NET has had AOT/JIT since the very beginning. And now static compilation is coming as well.

logicchains|11 years ago

> Well, OpenJDK is getting AOT compilation as well (planned for 9). In addition to JIT.

On ARM? Last time I checked, OpenJDK doesn't even have JIT compilation on ARM, it just interprets the bytecode.