First, a quick bit of history. Lisp was created in 1958, augmented in the early 70's with garbage collection. Around this time, the University of California developed a virtual machine to run Pascal p-code. Meanwhile Bell Labs (Dennis Ritchie) created B and then C, and then in 1979, C with Classes (Bjarne Stroustrup), which became C++ in 1983, gaining exceptions. So in the mid 80's, we had classes, exceptions, (multiple) inheritance, garbage collection, virtual machines and the syntax of C/C++.
In technology terms, the stage is set for Sun to create Oak (James Gosling) in 1991 leading soon to Java, publicly released in 1995. Java's success inspired Microsoft to acquire Colusa Software's OmniVM, which was used to create a first-generation fork (J++) which led to a second-generation fork (.NET and C#, Anders Hejlsberg).
And now Google have created Dalvik, branded as Android. In so doing, they alienate Sun by using Java as the programming language but not Java's libraries or VM. But their choice of Linux as a base OS and their architecture (a layer on top of layers of existing native open-source technologies) is remarkably like another open-source VM - Mono, which Google have simply ignored (as indeed has most of the press and even the blogging community in reacting to Android).
Interestingly Google have also ignored at least 12 years of evolution in middleware (the tangled web of web services standards) by returning to a CORBA-like IDL for remote invocation.
So much for history repeating itself.
Positives
- Android adds diversity and a breeding ground for new ideas to flourish in an ecology of platforms that was becoming static if not quite stagnant (and no, PHP and Ruby on Rails aren't platforms in the sense of Java, .NET and now Android)
Neutral
- it strengthens Java's position as a programming language and byte-code (but not much, because it only supports a core set of Java's APIs, which are absolutely integral to Java)
Negative
- it ignores a lot of innovation in Java, especially in the enterprise (J2EE, Jakarta, JBoss, ...) and integration (web services) space (the support for JSON is useful however)
Parting ThoughtsWhile on an abstract level I'm glad to see any new technology (especially from a company with money and a reputation at stake like Google), with Android I have to ask - why? It's has been created to give Google an operating system to bring handheld devices into it's web. But near-term devices that run Linux don't need Java Micro Edition - they can run Java Standard Edition, with it's infinity of applications, libraries and tools. So both JME and Android seem like platforms with a short shelf life.
But what do you think?
Update:I'll add a few thoughts on potential infringements on Sun's IP:
- Dalvik mirrors some core Java APIs but is not Java; giving Java a name like J++ or Dalvik doesn't change the fact that it is a close fork
- Perhaps more significantly, it duplicates certain aspects of Java that are likely to be innovative, such as:
- java.security.Permission and related support
- java.lang.annotation
- javax.crypto
- java.nio
Sun clearly have rights to compensation for IP infringement, but is this of the same order as Microsoft's infringements? Hard to say. MS paid $900 milllion to settle their IP infringements as part of a larger $1.95 billion settlement that included antitrust elements.
Google have invested somewhat in Java (at least with GWT) so that might stay Sun's hand. But it's clear that Dalvik will be their focus as users spend more time on their mobile devices, which incidentally are with you when you are with friends (when you may be social networking with absent others) or shopping (when you are in a position to act on locally-targetted advertisements). I think Sun should seek compensation for their investment in Java and loss of future income from J2ME.
You have already tagged this post. Your tags: