So. Why?
With the java GPL licensing from SUN and the patent exception _ONLY_ for non mobile versions. The Mobile JVM still has separate licensing requirements. Claiming yourself to be JAVA means you have to fulfill a standards compatibility test by SUN.
Google released Dalvik under an Apache license, thereby not granting patent protection to sub licensees. Google did not go with JVM for android because of the Java-Mobile licensing issues.
Next up, by filing suit now against Google and prolonging the court case, they can fire against the handset developers for more licensing costs. ( Remember the 1.x bn $ cashflow that SUN got from Microsoft in the Java deal in the past? Look for numbers like that. )
If Google fold, Oracle can then aim for all handset distributors, basically fragmenting and ruining the Android market. If Google fight, Oracle can show the cash for lawsuit defense vs. the small cost of buying a license to the handset developers, and do SCO style attacks by sending invoices to the hardware manufacturers. It's the same Lawfirms and Lawyers, so that's a valid assumption to go on.
Google had the chance to buy SUN but decided not to, And now it's coming in to haunt them... Badly. So, It's a mess of patents and licensing. The copyright claims will be interesting, but it seems as if Oracle has decided to kill off Java as an open platform. Looks as if Python is the way now?
So, techincally, Google can start modifying the JVM under GPL License and push that as a Dalvik replacement, Maybe. Otherwise, write a .class => .pyc recompiler, inspired by Jython?
Other than that, I'm not too sure what to make of this. Oracle wants money to recap the purchase, the question is if this is a sane strategy for them? They will gut the Java market, however, it's been on steady decline as they failed to keep it sexy. Even symbian is moving away from it. Most probably because of compability issues, slowness and failed licensing problems. Java is no longer a prime factor on the *nix side, after Oracle killing off the SUN Solaris customers by attempting to gut them for cash.
Dalvik can always be modified some more, push out some updates and make it even more unlike the JVM, thereby going around the patents. No doubt, this has already been done in some cases.
Google countersuing Oracle is another interesting concept.
Now, I wonder when someone will invoke the dead ghost of SCO Unix, along with the IBM lawsuits?
So, Oracle brought in the Big Guns. MoFo and David Boies in their lawsuit against Google for android.
Now, I don't really like patents, however, I'll take some time to read what I understand here and explain a few clarifications re. the lawsuits.
Back in 1997 Sun filed a suit against Microsoft, which they won. This is _NOT_ the same as what is going on right now. Back then, it was contract breach, about Microsoft calling their "Java" "Java 1.1" while not implementing the standard completely, thereby destroying the value of "java" and breaking their agreement.
This is a pure patent trolling from Oracles side. I see mentions about copyright inside the complaint, but no real numbers anywhere as to what, that'll have to be worked on separately, as Google _are_ shipping java development tools.
On to the development. Dalvik is a VM, it runs binary blobs in a virtual machine. However, Dalvik lacks it's own compiler, and only works by re-encoding Java classes in the Java Byte Format into the Dalvik Byte Format.
This means, to develop for Dalvik, you need to first make a normal, compileable, java-program using the official java compiler. This is then transformed into Dalvik runtime code. Please note that this is quite important in this case. The Dalvik tools do not compile or transform the source code, that is left to the _classical_ java tools to do.
So, onwards. "Method and system for performing static initialization" Claims as #1 that it "compiling the source code containing the array" .... Well, This isn't done by Dalvik at all. However, I have not read the rest of how Dalvik does it ( Does it initialize the arrays and "play execute" them as the patent claims? I don't know, but let's just leave it that google do not use their own compiler for Dalvik.
Next up, Method and apparatus for pre-processing and packaging class files
computer usable medium having computer readable program code embodied therein for pre-processing class files, said computer program product comprising:
computer readable program code configured to cause a computer to determine a plurality of duplicated elements in a plurality of class files;
computer readable program code configured to cause a computer to form a shared table comprising said plurality of duplicated elements;
computer readable program code configured to cause a computer to remove said duplicated elements from said plurality of class files to obtain a plurality of reduced class files; and
computer readable program code configured to cause a computer to form a multi-class file comprising said plurality of reduced class files and said shared table.
Basically, de-duplication in the compiling process of javac. Which, as we know from above, Goog/Android lets javac do by itself... I doubt this will be a problem. Maybe because you can combine multiple .class files into a single dalvik Executable?
Controlling access to a resource This probably requires more insight into how the Dalvik VM functions. However it requires hardware cooperation in certain ways that I cannot tell on how it would work.
Protection domains to provide security in a computer system Basically tagging sourcecode with a code to reference which domain it will be ran in. Uncertain if it will apply due to lacking a source stage for the Dalvik system.... Also, same questions as on previous one apply for me, I don't know if it creates runtime domains and how it manages the keying and sourcing of such codes. ( Mentioning source of codes and source code in the same sentence makes my head hurt)
Interpreting functions utilizing a hybrid of virtual and native machine Might be interesting. Offloading VM instructions into native to increase speed. From 2002, I wonder if this is really that unique. Maybe because it mentions specifically "wherein the virtual machine instruction are Java virtual machine instructions" Hmmm. It's basically the improved JIT-compiler, transforming JVM instructions into others, rearranging pointers, executing the new ones. Eventually replacing some JVM instructions with "real" ones.
System and method for dynamic preloading of classes through memory space cloning of a master runtime system process Cloning a process without using COW... By cloning the whole JVM in address space? or doing it with COW. Details about the JVM galore, I wonder what dalvik does.
Hmm, Overall, quite a lot of them are specific to how Java's VM works, (stack based VM) vs. Dalvik's Register Based VM.
How Google routed around SUn's IP-based licensing restrictions on Java ME" might also be interesting