I never liked the phrase ‘enterprise ready’ software, it has a tendency to be used in situations where it shouldn’t. A software component doesn’t have to be ‘enterprise ready’ on it’s own, the solution should be though. In fact, a single component shouldn’t be ‘enterprise ready’, as this would generally suggest it’s a monolithic brick which will never be part of an ‘enterprise ready’ solution. SAP Java application server has a long standing history of having a modular architecture, with declarative dependencies and on-demand loading. However, the time has come to go one step further, and move to OSGi.
Why OSGi? Let’s first have a look at what OSGi has to offer. First of all, OSGi is more or less a de facto industry standard for modularization, and the specification, which has now matured over roughly a ten year period, provides an extensive and flexible environment for achieving just that. Its focus on clear and explicit dependency tracking, as well as service orientation encourages the construction of components which have a low coupling and high cohesion, which are the corner stones of a modular design.
SAP NetWeaver currently occupies roughly 1500 developers in seven locations, daily builds ranging well into the eight digit range in lines of code, and thousands of components are being managed within a single JVM. Needless to say, low coupling and well defined APIs and SLAs is crucial in order to maintain a stable system.
Equinox is the OSGi framework implementation provided by Eclipse, and has since become the framework reference implementation. As it turns out, Equinox was a fairly obvious choice. Eclipse has an architecture so modular, it’s sometimes a bit scary to see, all the intricate configurations of plug-ins all working together to provide a consistent experience throughout the entire session. The architecture, traditionally based on the extension registry, standardizes the way extensions are written, and with the notion of extension points in plain view, authors are inspired to write pluggable components, rather than just plugged components, creating entire trees of plug-ins. Consequently, the systems is comprised of a huge pile of plug-ins, i.e. a very high (since the OSGi adoption) bundle count stopped being the exception, with a ‘normal’ Java-development Eclipse installation approaching a thousand bundles out of the box. This experience with high bundle count shows, as the general focus on on-demand handling is something that gives equinox a slight edge over other frameworks when dealing with large amounts of bundles. One example of this is the file system access, where no files or directories are created unless needed, severely reducing bulk bundle installation time. Equinox also appears to have a linear performance with respect to the number of bundles, which cannot be said for some other implementations. In an enterprise server solution, how you deal with a large database of components is crucial, and for SAP the number of bundles is likely to increase substantially.
Eclipse has, or is (depending on how look at it) one of the strongest Java-based communities today, where we’re already diving in with the commitment to the Web Tools Platform and Memory Analyzer Tool. We’re also basing the SAP NetWeaver Developer Studio on Eclipse, giving us yet another reason for investing into Eclipse and Equinox. But we’re looking for more, not only are we looking forward to leveraging the combined power of the Equinox team, but as well be an intricate part on the road towards making Equinox an even bigger player on the Java server market, by investing into areas such as even higher bundle counts, and scoping.
Does all this mean Equinox is ‘enterprise ready’? Well, no, and it shouldn’t, really. But will we, with Equinox, be able to build an enterprise ready solution with all the benefits a truly modularized environment can offer? I think so.
So what does the future hold for us? It’s hard to say really. Obviously, we will be looking into bringing the Java EE and OSGi models into one and the same runtime, and somehow eventually going full circle with SCA. One not so obvious area though, is the investigation into provisioning solutions, where we’re excited to look closer into the OSGi Bundle Repository and joining forces with Equinox p2.