Making life simpler: the Java EE Operating System
One of the biggest challenge for companies with Java EE based products is dealing with installation issues...
Granted, Enterprise Class applications are much more involved than the "shrink wrapped" applications that we install on our PCs... but it should be possible for a company to package up a Java EE application so that it can be reliably installed on any Java app-server without a lot of headaches. Sadly, that does not seem to be the case... each app-server is a little different, and all those little differences result in a lot of support costs.
One popular solution to the installation problem is to embed a Java app-server in the product itself... Instead of installing an application on a pre-existing app-server, the product installer includes an app-server. This avoids all the hassles of dealing with an "unknown" app server... but you must admit that this solution is kind of bizarre in some respects: Installing an app-server per application has got to be in some way an immorally over-engineered solution... it's almost like shipping an application with its own Operating System.
I suppose that a scaled-down embeddable app-server might be a good idea, but a better idea might be to abandon the current app-server-installed-on-your-OS model and go all the way to a Java Enterprise Operating System.
Earlier this year I suggested that the multitude of Java EE implementations is a bad thing... but now I think I didn't go far enough... Why not just build an OS that is a Java EE app-server?
This may seem reminiscent of claims that a Web Browser is part of the Operating System... but hear me out.
The truth is that write once run anywhere isn't a very important consideration for Enterprise Applications. In most companies, when a new Enterprise Application is deployed, a new server (or pair of servers) is purchased to host the new application. Why not purchase that server with a Java Enterprise OS pre-installed instead of going through the hassle of installing an app-server on top of an OS?
Back in the 1980's, before Windows became dominant, there were many competing GUI environments... and whenever you wrote a GUI application you had to make a bet. You had to bet that the customers who wanted your application would also want that GUI environment.
The dominance of Windows "solved" that problem... The GUI environment "became" the OS. Product developers could count on the OS to provide the GUI features that were needed, and the number of quality GUI product offerings soared.
Bring that same concept forward to today and assume that someone builds an Operating System that is tailored to provide the services necessary to host a Java Enterprise Application... The Java app-server "becomes" the OS. Something like Red Hat Linux plus JBoss, or Solaris plus Glass Fish, but tailored to throw out everything extraneous and polished to really "feel" like Java Enterprise Applications are native applications.
In spirit, the idea of a Java Enterprise Operating System (JEOS) is a close relative of JDOS... the original intent was to build a "pure Java" environment for executing Java applications. The main difference is that the focus would be on supporting web-based applications and services, with little to no interest in supporting desktop applications.
Of course, a JEOS won't solve any installation problems unless it captures market share (on servers) approaching the marker share of Windows on PCs. I'll admit that's not much of a likelihood... but who knows? If JEOS reduced the installation and maintenance costs associated with Enterprise applications, it might just catch on.
The moral of this blog entry, if there is one, is that we don't need new technology to simplify the installation and maintenance (care and feeding) of Enterprise software. What we need are better combinations of existing technologies... better packaging of existing features can take mundane products and make them shine (compare a Mac to a PC if you doubt this). There is a beauty to a finely tailored product that is self-evident, and there's no technical reason to keep us from tailoring a beutiful platform for hosting Java EE applications.
(For more of my ramblings... check out my other blog)