Terracotta Virtualization Server released
It passed my first test. I downloaded it to my platform of choice (Mac OS X86), untarred it, and all the demos that they ship with it worked for me. It took WebSphere about 6 years and 6 versions to get to that point. Well, actually I don’t think WebSphere has ever worked on a Mac.
Basically you can think of TVS as a collection of very specific aspects that you can configure to apply to your code in order to simulate the native Java concurrency primitives across multiple JVMs. The advantages are that they have already written the aspects for you, they have given you a way to apply them that isn’t too invasive, and they let you build your software with normal Java semantics and APIs. It currently is only officially supporting 1.4.2 (but 1.5 still works) but I can imagine that the new concurrency APIs in 1.5 would be great targets for their engineers. They have some time though, as it appears that 1.5 uptake is going slowly.
So what do you do with this tool? Start with your program designed for a single JVM and piece by piece configure their TVS to distribute it amongst several JVMs in a transparent fashion. There are of course still gotcha’s and things you have to avoid, but they are only at version 1.1. Further down the line I expect to see increased fault tolerance, performance improvements, and more sophisticated concurrency APIs.
The one thing that we got asked about a lot at WLS that isn’t supported in a single technology in J2EE were applications that required Bulletin Board or Blackboard type functionality, i.e. a place where you can post messages and subscribe to events in a distributed fashion. That type of application is trivial to implement in a single JVM and with TVS it is easy to then distribute it amongst several systems. For more info on designing a system like that see The Pragmatic Programmer.
(Full disclosure: I know a lot of people at Terracotta, have seen the software before its release, and have advised them… I didn’t actually write any of it though :) )