Instant JChem: Platform for Chemical Applications
By Geertjan on Aug 08, 2007
In other words, IJC is to scientists what NetBeans IDE is, in at least some respects, to developers... Especially when you look at the NetBeans Visual Web Pack (formerly known as Creator), the 'hiding of complexities' factor is very comparable to what IJC does for scientists. But, in fact, IJC is a lot more than that. Just like NetBeans IDE is built on top of an infrastructure that can be reused by other applications, IJC itself is also built on a reusable infrastructure. Now, before you think: "Ah, okay, this is another NetBeans Platform story," let's back up a bit, because this is not another NetBeans Platform story.
In short: IJC is, strictly speaking, not built on the NetBeans Platform. It is built on top of the IJC Platform. The IJC Platform consists of several different components, one of which is the NetBeans Platform. Here's a picture that sums it all up:
Interestingly, just like the NetBeans Platform, the IJC Platform can be extended too! Why would you want to extend it? For the same reasons as one would want to extend the NetBeans Platform. Either you are enhancing an application that is based on the IJC Platform (such as IJC itself, for example) or you are creating a completely new application on top of the IJC Platform. Both are possible. You can disassemble IJC because, just like NetBeans IDE, it is composed of modules. Then you can rebuild it, together with your own additions, thus forming your own new application.
And the IJC Platform provides three modules with APIs that you can reuse:
- Discovery Informatics Framework: Provides the data model and persistence tiers for applications that need to use chemical and biological data.
- Instant JChem Core: Provides the basic user interface for Instant JChem and through its API it provides the ability to extend the IJC user interface.
- UI Widget Renderers: Provides the basic set of visual components, known as widgets, which can be used in the form designer. All widgets implement APIs provided by the Instant JChem Core module and are plugged into the system using declarative XML layers. Some widgets share the rendering of data values and so make use of the UI Widget Renderers module, which contains shared renderer implementations.
And how do you get started using these three modules? Well, there's even a set of IJC API tutorials, to help you get started: