RSS Feed Subscribe to RSS Feed

 

Oracle Coherence

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…

Tags:

Faster JVM: JRockit

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.

Tags: ,

JavaFX Meetup

I attended another one of the excellent San Francisco JUG meetings tonight. This time the topic was Java FX and WidgetFX. Java FX is Sun’s new platform for delivering Rich Internet Applications (RIAs), competing in the same space as Adobe’s Flex and Microsoft’s Silverlight.

It is a fairly new technology with the first 1.0 release of the Desktop platform just happening last December. The Sun web site seems to show the Mobile platform as being available now too. Wen Huang from Sun talked about the planned 1.1 release, but was strangely coy when asked about the ‘TV platform’ that is also planned. He mentioned a tie in with Sony and Bluray so I guess we an expect more details on that in the near future.

Wen explained that JavaFX is built on top of Java, in that it runs on top of the Java Plugin and hence it can access to all the usual Java libraries.

Doris Chen, a Staff engineer and technology evangelist at Sun, then took over the presentation and got a little more technical. She quickly walked us through a couple of demos involving animation and videos in the form of puzzle games. It did look pretty cool. She also demonstrated how Java FX apps could be dragged out of the browser and continue to run independently, even when the browser was then closed. This is possible due to each widget running in its own Java VM, independent of the browser. I did notice those annoying Certificate security warnings popping up during the demo startup though which made me wonder… Would using JavaFX be as seamless for the end user as Flash, or would there be security, download, startup and plugin compatibility issues that applet usage sometimes involved?

Next up, Stephen Chin took over. Stephen is the co-author of a soon to be published book called Pro JavaFX book. He is also closely involved with two open source JavaFX libraries, JFXtras and WidgetFX. He walked us through a couple of code examples. The things that jumped out at me most about JavaFX were

  • the declarative construct used for creating objects, which I am not too familiar with (similar to the Scala approach maybe?)
  • extensive use of a ‘bind’ operator which seems to ensure that variable value changes get reflected in the UI
  • JavaFX doesn’t seem to throw many exceptions, instead it tries to handle them as gracefully as possible
  • It is a Functional language: Functions are first class entities that can be assigned to variables, passed in and returned from functions

The class finished with Stephen walking us through some hands on examples, using NetBeans (Update: see my comment at the end of this article on the JavaFX Eclipse plugin) and both WidgetFX and JFXtras.

Overall, I thought the presentations were very good and provided a great overview, and some of the details, of JavaFX. For me personally though, none of the projects I am currently working on have a requirement for ‘rich’, multimedia type content, but it would be nice to create a few more mundane desktop type JavaFX GUIs to see how it fares compared to the Swing GUIs I have created in the past.

I do have some concerns about how to integrate JavaFX GUIs with the web tier and backend. Doris Chen tonight mentioned JSON integration, but there were less details on how JavaFX would integrate with model-2 MVC libraries like Spring MVC or Struts. I will definitely watch the JavaFX space closely to see how widely accepted it becomes, but I am also interested in learning more about other Java GUI technologies that I haven’t had too much exposure to yet, such as JSF and Facelets. Perhaps in another JUG meetup soon…

Tags: , , ,

Mylyn

I’ve started using Mylyn. It is a “task-focused interface for Eclipse that reduces information overload and makes multi-tasking easy”. Its objective is to improve productivity by reducing searching, scrolling, and navigation.

What does that mean? Basically, it allows you to access your bug tracker from inside Eclipse and then for each task/bug you are working on, it remembers what files you have been using most. The result is that when you switch back to a task you were working on before, the important and most relevant files you were using will be reopened and so at any given time, the files you need are close to hand.

The ‘tasks’, in my case, are defects/enhancements assigned to me in Trac (or specifically DevJaVu), but it has integration with Bugzilla, JIRA and others.

It’s not exactly ground breaking or revolutionary, but it is definitely useful (although the integration/synchronisation with Trac does seem to be a bit flaky, but maybe that is an issue with DevJaVu).
Next up, I would like to start making more use of the change set support.

Tags: , , ,

Workflow Management: JBoss’s JBPM

The project I’m currently working on had a requirement for a workflow engine to manage the various process flow options for an order management system. For example, an order can be created, modified, submitted etc and we need to be able to persist and retrieve the process at any stage as we wait for human involvement to move to the next stage. I have been evaluating JBoss’s JBPM. It seems to meet our requirements but has been very difficult to get up and running. Overall it has been a frustrating process so far. The main JBoss JBPM site is at here and theServerSide has a good article on using it with Spring/Hibernate integration.

Tags: , , , , , , ,