Tuesday, November 20, 2007

The ground is shaking beneath Java

The ground is shaking beneath Java on two ends. On one end is Android, on the other X10.

As previously discussed, I'm attracted to the Harmony implementation of Java because of its Apache licensing. Android fits into this strategy nicely as it incorporates much of Harmony. Openness wins. Distributed computing and onerous licensing are inimical. Android has been released under the Apache v.2 license.

As the world moves towards multi-core, IBM's experimental concurrent programming language X10, an offshoot of Java (shy generics for now[1]), is poised for action. According to Vijay Saraswat's Report on the Experimental Language X10, Version 1.1, June 30, 2007,

X10 may be thought of as (generic) Java less concurrency, arrays and built-in types, plus places, activities, clocks, (distributed, multi-dimensional) arrays and value types. All these changes are motivated by the desire to use the new language for high-end, high-performance, high-productivity computing.
X10 is licensed under the Eclipse Public License 1.0.

Licensing, that's a go.[2] Java-based security. Shall we assume that's a go?[3] Now it's time to delve in.

I'm sure Java will come out of all this tumult strengthened, though perhaps reincarnated.

Names

I hope both of these movers and shakers do come up with better names. Android?? It's a bit embarrassing to put on your resume, like Groovy. And the name X10 makes it difficult to do Google searches due to the ubiquitous information about that other X10.

Notes
  1. Generics, that revolution with which Java shook itself, is expected anytime soon in X10's next release. Android includes generics.
  2. Maybe not. See the 4th bullet in the update and errata section at the end of Dalvik: how Google routed around Sun's IP-based licensing restrictions on Java ME.
  3. Maybe not completely with Android, but perhaps enough for working with distributed code.


Update (Nov 26, 2007): Interesting post on Android, OSGi, and classloading - OSGi on Google Android using Apache Felix