Java-Centric Grid Computing: Ibis 1.0 Released
rvannieuwpoort writes "Ibis 1.0 has been released. Ibis is a flexible and efficient Java-based programming environment for Grid computing. Ibis improves Java's serialization and RMI performance up to a factor of 10. It also extends Java with a range of communication paradigms, including group communication, divide-and-conquer and collective communication. An additional nice feature of Ibis is that it can communicate through firewalls, without opening ports, using TCP. Ibis is free software (BSD-style license). It runs on any platform that has a Java 1.4 or higher JVM."
No, Sun has its own grid computing product that I'm sure it would rather support.
Actually, object allocation isn't bad at all in Java. More to the point, object allocation and GC in Java is now faster than heap-based object allocation and deallocation in C++. Can't beat that stack allocation tho.
In toy programs you may be right, but for programs with 10s or 100s of megs of heap data in active use GC is far slower than malloc/free allocation. Why? The garbage collector touches most memory pages and completely defeats the CPU's L2 cache. Main memory is around 100 times slower to access than L2 cache. Java programs with large churning heaps are slower due to the fact that they hit slow main memory more than an equivalent malloc/free memory scheme.
It is also worth mentioning that Java can generate array accessing code that is as efficient as Fortran because its arrays (also) never alias each other. C array code has to be conservative and is slower - its pointers and arrays can alias each other under certain circumstances and the code generated has to be conservative to take that into account - i.e., array elements have to be loaded from memory each time if another array is modified.
As for client-server, you do need a registry somewhere to bootstrap the system, but it is perfectly possible for every agent to have a registry.
As for "expressiveness", I'm not sure what they mean by this. You can pass any serializable object, and exceptions come back over the wire. That seems pretty expressive to me.
Just because something isn't handed to you in the java libraries doesn't mean you can't do it.
-- ac at home