I had a glorious 11.5 hour day at work today. Indeed, nearly the entire server/network team had an 11.5 hour work day today. My boss cut out only an hour late, but he will be testing from home tonight. Our top tester worked 11.5 hours today. Our project is behind schedule. My other projects are now way behind schedule.

All because of the complexity and low quality of J2EE servers.

In today’s case, it was BEA WebLogic, and BEA’s inability to provide components that work right with IIS to forward requests to WebLogic. Specifically, the newer DLLs do not work but the older ones do. Funny how PHP, Perl, and ASP.Net can all plug in seamlessly to IIS, but no J2EE server can, isn’t it? And they plug in seamlessly to Apache too. Every J2EE server that I have been inflicted with requires itself to operate on separate ports and then jury rig the Web server to forward requests to it if you want to use your other Web server for the rest of the site. And most J2EE servers stink for non-Java server tasks.

The first time I encountered Java programming, it took a coworker about a day to set up Tomcat on my desktop, and he had done it before. Of course, code that ran on Tomcat and Apache in Windows did not work the same in iPlanet on Solaris, so it was a royal mess anyways. The last time I tried to set up Tomcat, it was on a FreeBSD server; installing Java took hours, installing Tomcat took forever, and I never did get the linkup between Apache and Tomcat working well enough for it to seamlessly put a Java application on the site without using a totally different directory for it.

I am just baffled and amazed by this. Why do J2EE servers need to be so complex? Maybe I am missing something, but I do not see why they need to be any more difficult than setting up PHP or ASP.Net. But they aren’t. They require bizarrely complex directory structure, impossible links to the Web server, funky ports, have lousy management tools, are slow, error prone, require constant maintenance, and the list of problems go on and on.

I have simply never had a positive experience with a J2EE server. As a developer trying to write for them, a develop trying to deploy to them, a developer trying to debug within one, a developer trying to set up a test environment, or a systems administrator trying to do any of those tasks, I have always walked away feeling frustrated and with the task half done. It is a wonder to me that Java has made the server side inroads that it has, simply because setting up J2EE is such a miserable experience. Even the configuration files are frequently nonsensical. I just do not understand why no one can seem to make a J2EE server with the level of polish or quality of Apache or IIS, or a J2EE environment that plugs into a Web server as easily as PHP, CGI systems, or ASP.Net. I have not used Ruby on Rails, but I bet that it is easier than J2EE too.