« PHP and JSP: scale is a red herring | Main | Refactoring to efficiency »

The problem that Java Isolates solve

Let's call it the "PHP Problem" (though the "LAMP Problem" would do as well). That is, Java and the JVM are not ideal for building applications which are fault tolerant, robust and will scale horizontally*. Threads, threadlocal storage, synchronization barriers, XA, classloaders and the security model are not the best mechanisms** we could have for building the apps we need to build, which are fault tolerant, robust and scale horizontally. The right mechanism is the Process. Pete Soper, one the folks working on Java Isolates calls the issues these mechanisms leave us with the "middleware blues":

The middleware blues are what I think of as composite dissatisfaction with class loader tricks and the constant tension between security, communication and weight (memory, cpu, etc). The tricks have gone so far that it's hard to maintain the view that Java is a strongly typed language:it can be almost impossibly hard to disambiguate object references in some cases! So I would have sought confirmation of the strong desire for a real solution inthe form of a third abstraction: Java processes. It's now pretty clear that it will be easier to add this abstraction than to go on forever, stretching the class loader charter and chasing security and performance characteristics that become ever more expensive.

Pete explains what Isolates bring to the table:

JSR-121 is about fitting a process abstraction called "Isolates" into Java. Isolates provide a third building block that is designed in Java terms, leveraging the type safety guarantees of the language into isolation that does not mandate either the heavy weight or slow communication of a VM while offering strong and obvious security guarantees. Isolates offer an alternative to the next generation of class loading tricks and allow system designers to achieve satisfaction with middleware and special applications where real isolation is critical but resources are limited. Isolates also enable infrastructure upgrades over the long haul in an orderly and well thought out manner.

Isolates are slated for Java 1.6.

* Java != Jini
** I use the word 'mechanism' carefully; the right abstraction would be a service/resource

[sordid: amon tobin]

July 3, 2004 01:12 PM