From the phone to the cloud, where will developers look for a unified, unencumbered platform?
What are the implications of Oracle's lawsuit on the future of robust multi-targeted virtual machines in the software universe? This is a question I've been asking myself over the past few weeks. The vast majority of software written today runs on one of a few runtime environments - the JVM (Java's runtime), the CLR (.NET's runtime), Dalvik (Android's runtime), AVM (Flash / Flex runtime) or one of the JVM-like Javascript engines in newer browsers. Popular scripting languages like Ruby, Python and the crop of new and reincarnated functional languages can be compiled / interpreted on the JVM and CLR. In today's world, languages and runtimes have become decoupled. Because only a few virtual machines have proven robust, scalable and suitable to be targeted by multiple languages, everyone is gravitating toward them. This is especially true of environments that are unified from the handset to the desktop to the server. The loss of one, either from neglect by its steward(s) or a lack of confidence in the open source and / or commercial communities is significant.
How does Oracle's lawsuit play into this? As I explained in a previous post, the suit claims, among other things, that Dalvik, Android's VM, violates multiple Oracle patents and that Google has violated licensing terms for JME (JSE and JEE are under GPLv2) that prohibit replacing the JVM. Although most of the allegations specifically target JME, its damage will be far reaching because, right or wrong, the perception is that Oracle and the Java technology stack are intertwined, and that the company that acquired Sun would take over as the steward of the platform. Further, developers want a unified platform from mobile devices to the server. If JME is taken out of the picture, it diminishes the appeal of JSE and JEE for many organizations. You can use a different technology stack on the client and server but, having done a lot of this, I can testify to the fact its never as nice as having, for example, Java (the platform, not necessarily the language) on both ends or .NET on both ends.
Creating a virtual machine that is robust, high performance, scalable, works from the phone to the server, and is suitable for targeting by multiple languages is hard. You have to worry about memory management, concurrency, just-in-time and adaptive compilation, generational garbage collection and many, many other things best handled by PhDs who specialize in that particular area. Sun and Microsoft have spent tens of millions and many man-years developing and tuning their virtual machines. This is why languages like Ruby and Python are increasingly being used on top of the JVM and CRL. Many new languages such as Groovy, Clojure and Stab are built on top of this foundation.
It seems as though the software world needs a new, unencumbered technology stack including a virtual machine and standard library that can be targeted by multiple languages and works well from the phone to the desktop to the server (obviously the mobile environment would be scaled down.) It would require non-restrictive licensing and strong backing by, ideally, multiple companies with significant resources and expertise in VMs and frameworks. Perhaps one of Google's platform efforts will blossom into this. Maybe Parrot will finally take off. Perhaps a government will fund the effort. I know the latter sounds odd, but that is how we got the internet. :-) It will be very interesting to see where this goes in the next few years.
Comment
© 2024 Created by Daniel Leuck. Powered by
You need to be a member of TechHui to add comments!
Join TechHui