Oracle sued Android for patent infringements related to java. The news is old, but there is still a lot of misconceptions floating around. The biggest of them is around Android’s java support. Code for Android can be written in java language, compiled into a class-like (dex) format and run on Android’s Dalvik VM. So you code in java, run it on a VM. Sounds great so far. But is that java? No.

Java is not just the programming language. An equally, if not more, important part of java is the virtual machine. The VM is what gives java it’s strength, well captured in its punchline “write once, run anywhere”. Code written for Android’s Dalvik will not run on any other JavaME VM. Vice versa, code written for JavaME wont run on Android. Google had its own valid reasons not to go with JavaME. But at the end of the day, it is not justified to call what Android has as java-support.

Microsoft once tried to come up with a windows-only version of java, and Sun sued Microsoft successfully. Even if Android were to remove the dex format and run class format on its VM, bringing in a VM that is not compatible with the standards would only split the java community.

If Google admits that Android doesn’t support java, will it solve the problem? Not really. The beef of the lawsuit is patent infringements related to java VM. You see, the patented IPs are free to use as long as your VM is a fully compatible java VM. Its either a full implementation or nothing. Has there been any patent violations? Lets wait and see.