Java hosting is kicking my ass!
February 17, 2005
For the last 6 years I’ve had total control over my deployment environment (running my own servers,) and never had a problem with Java.
Recently I moved to commercial 3rd party hosting, where I had a private JVM but no control over my server set up. To make a long story short, I have now been dealing with Java deployment hell … Java is not playing nice.
After 6 years of enjoying the comforts of having my own server, for whatever reasons, I moved to 3rd party hosting. What took me by surprise was how hard it was to find a suitable Java hosting company. I went through 4 before I found a company that actually was able to do the job properly.
One of the big selling points of Java has been the write once and run everywhere theory – sounds great and apparently people have had a lot of success with this … but my experience has been something else.
A couple of tips:
- If you can, deploy on your own servers: Java is much easier to handle when you control the box.
- Never go with Java hosting that shares the JVM.
Without a private JVM, you cannot restart the server (Tomcat, Resin etc) and so updating classes and property files are a pain. And since you are sharing the JVM, anybody’s code might take your app down.
Anecdote: With the first host, when I uploaded my simple POJO based application (that had been working on my servers for a couple years with no problems) I took down the whole bloody server! Strange that this still happened despite the fact I had had the same configuration?
Anyway, they gave my ass the boot and I had to move on to my next victim!
Java is brittle in a shared environment, hard to configure and problematic – it sucks. I think this is a symptom of the Java community’s need to over-engineer everything and shows how Java is no longer suitable for small and medium size application development.
Right now I would go with PHP because it is easy, fast and everywhere. It’s not the perfect language but it makes building web applications really easy compared to Java.