I posted previously about the new Sun certification exam announced at Java One, but there weren’t many details at the time. However, I found this blog post which points to Sun’s web site where they announce and give details of the new Sun Java Programmer Plus Certification. Apparently is will launch on July 22. No word on when the old SCJP will be retired, but I suspect it will be soon. Sun say that they will “provide a public notification of at least 90 days in advance of any exam retirement”.

I had the chance today to attend a presentation at Oracle about their Coherence product. Basically, Coherence is a data caching tool. More specifically, it is an in-memory data grid solution that allows you to scale applications by partitioning data in memory across multiple servers. Servers can be easily added for better performance and can of course deal with servers going down (planned or unplanned) with no loss of data.

All in all, I have to say that it all looked like a very neat application. It is similar to Gigaspaces, but I suspect that since it is backed by Oracle, it is better supported.

The big question is, would I actually use it in a project? The answer is, if the project required access to a large amount of data and response times, scalability, availability and reliability were all critical requirements, then it would certainly be on the list of possible components. I can think of several real-time, mission critical trading applications that I have worked on in the past where Coherence could have been a useful tool.

One question I had was whether or not Coherence could be used with Hibernate, and in particular if it could be introduced to an existing application. After all, most performance problems don’t arise until well into the development of an application; Often when too much design and coding has been done to do a fundamental redesign.

For example, I am working on a Java/Spring/Hibernate web based application with a small but rapidly growing user base. If, in the future, performance becomes an issue, could Coherence be introduced to provide all the benefits that the folks at Oracle were talking about today? Could we introduce Coherence in to the architecture without fundamentally changing the data access mechanism (which lets face it, is not really an option at any stage other than the design or very early development)?

I think the answer is yes, but with caveats. The solution lies in using Coherence as Hibernate Level 2 Cache. The caveat is that this approach does not bring the same benefits as using Coherence as the primary data source in an application, like you would if you were using Coherence as an original, founding member of your architecture.

However, as the Oracle docs say, Hibernate is ‘the optimal choice for accessing data held in a relational database where performance is not the dominant factor’. So I guess if performace is likely to be an issue, it is best to think about it as early as possible, i.e. before picking the database technologies…

At a training event I attended in Oracle today, they mentioned the JRockit JVM, which I hadn’t came across before. It is a JVM implementation from Oracle (BEA Systems) that provides improved performance and reduced, more consistent garbage collections times. It also comes with a Management Console, which visualizes garbage-collection and allows you to monitor memory, heap and CPU usage and other metrics.

It does all this by overriding some of the Sun classes, in packages such as java.io and java.lang, with more preformant versions.

All very neat and I would really like to start using it – but a Mac version isn’t available. Eerrgh. Guess I’ll be sticking with Sun’s implementation.