The Source for Java Technology Collaboration
User: Password:



John Reynolds

John Reynolds's Blog

Making life simpler: the Java EE Operating System

Posted by johnreynolds on June 26, 2007 at 04:28 PM | Comments (5)


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)


Bookmark blog post: del.icio.us del.icio.us Digg Digg DZone DZone Furl Furl Reddit Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment

  • so here's the thing, if you could combine what you're suggesting with the VM appliance concept I think you have something. Suppose you could have a JEOS system based on Glassfish and running on a Xen modified Linux kernel. Then you could package that up and have a drop in app server environment without the unnecessary OS overhead and you could do it today. The same thing could be done for VMware, and if our company is any indication of where the Fortune 500 is going, VMware is already firmly established in the data center.

    It still wouldn't solve the problem you stated of not being able to package up JEE apps in a portable way, but you could put your JEE app onto of a VM and/or Xen appliance and then it would be 'easier' to install it.

    Posted by: kslater on June 27, 2007 at 06:40 AM

  • actually, we do that where I work. The only features that actually worked without quirks and bugs on the appservers we were using were 'install-application', 'start-application' and 'stop-application'. We thought, hey, isn't that the same as operating systems do?

    The recipe goes like this:

    a) choose an webapp container that you can start programmatically from your own main method (like jetty).
    b) write a main method that starts the container and adds datasources and your webapps to it.
    c) use maven-appassembler-plugin to assemble the stuff with dependencies, start/stop-scripts etc to a zip file.
    d) copy the zip file to you server.
    e) unzip and run the 'startapp' script.


    Yes, it's that simple. Unless someone have convinced you to use EJBs, in which case you are helplessly stuck.

    Tip: everything can be a webapp. There is no requirement to actually have web pages :-)

    Posted by: eirikma on June 27, 2007 at 07:30 AM

  • Oh, I forgot, the appassembler plugin will create the start/sop-scripts. You don't have to do that yourself. All you have to do is to create the main-method. It's like programming "hello-world" in CS-101 again.

    Posted by: eirikma on June 27, 2007 at 07:32 AM

  • This post appears to be highlighting an interesting usecase for the JNode operating system., which is as pure Java as possible and is largely based on openjdk.

    Posted by: levis on June 27, 2007 at 09:18 AM

  • Thank you for the pointer to JNode... That might be very interesting to experiment with.

    --JohnR

    Posted by: johnreynolds on June 27, 2007 at 01:11 PM



Only logged in users may post comments. Login Here.


Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds