Java hosting is kicking my ass!
November 17th, 2005For 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.
My experience
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!
Conclusion:
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.
The alternative:
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.


I have a dedicated server which is running Resin on Windows. I set it all up myself and for 2 years all is ok. But it is pricey: USD $100 month.
My usage is minimal and I am considering other options. However maybe someone wishes to share the server with me – and the cost.
cello9@gmail.com
Robert,
I had that setup myself (Resin on windows) and it ran great for about 4-5 years.
Funny, Java (at the time) ran best on Windows. The irony.
Stefan
If you’re not wanting to have to deal with the setup/management of an unmanaged dedicated server, Kattare recently dropped the account level requirement to get a Private JVM from the Level 3 account to the Level 2 account. So you can now get a private JVM in a shared account for $19/mo. Should be more in line now with Oxxus and 4Java.
FilG, Thanks for the notes.
Regarding: http://www.coreservlets.com/Apache-Tomcat-Tutorial/
That tutorial is wonderfully in-depth and comprehensive. You must be feeling word-count shock.
I have set up Tomcat 4, 5, and 6 many times in hosted environments and at a site that gets millions of hits a day, so I will add my 2 cents…
Large sections of the tutorial can be ignored if you:
1. Skip apache web server in front of Tomcat and just run Tomcat standalone. The performance gain of the apache webserver is over-rated and over the years has become slim to non-existent. The extra configuration and separate logs of the apache web server are not worth the hassle.
I run two sites hosted at kattare.com with a standalone Tomcat without any problems. The unnamed site with millions of hits per day also uses a standalone Tomcat and it has not been proven to have any performance problems with static content (the bottleneck is always overuse of the database).
2. use one of the preconfigured Tomcats instead from coreservlets.com:
http://www.coreservlets.com/Apache-Tomcat-Tutorial/Preconfigured-Tomcat-Version.html
3. test on your local system and only deploy on the server, so use of Invoker and other debugging/reloading details can be ignored.