Brian's Waste of Time

Fri, 28 Nov 2003

Production Operating Systems for Java Apps

Classically if someone asked me what operating system to deploy a Java app on I would say Linux, without a doubt, unless you need more than two gigs of ram. The tougher problem became what distribution to use: SuSE, Redhat, Debian, etc. In addition to features of the OS, from a distribution I want a few things:

  1. Stability and Reliability -- The distribution must be consitently stable and reliable. If a patch comes out I don't want to have to work to get it to work.
  2. PostgreSQL needs to build without heroic efforts.
  3. Jikes needs to build without heroic efforts.
  4. It shouldn't ram a crippled Java down your throat.
  5. Quality is more important than politics.
  6. I don't care about paid support.
  7. I don't want to have to upgrade the system regularly to continue to get patches.

Free-beer is preferable to expensive-beer if it works as well (or better) so the first considerations are SuSE Pro, Redhat (non-enterprise), Debian, Slack, and the assortment of minor distros like Gentoo. SuSE Pro is only two years of updates from SuSE, scratch. Redhat free-beer is one year, scratch. Debian has political issues but can remain in consideration. Gentoo is not reliable enough (yet). Slack is worth considering but I like package managers (unlike Steve). Back to Debian. It is a squirrely distro and its politics bug me, but... it is probably worth considering.

The next step is the expensive-beer distros. Redhat had a shoe in for this previously with their ES line. They were dirt cheap and if you didn't care about support, were legally free-beer. They screwed the proverbial pooch with version 3 though by not shipping a lot of standard things, not shipping a lot of fairly standard libraries (openssl anyone? -- the old openssl-devel requires an SRPM build now), not shipping (and BREAKING the SRPM's) database servers, etc. Using ES 3 feels like work and dll hell to me. SuSE Enterprise is expensive, very expensive, too expensive for anyone but a large company. If you run a large company's servers let me know what it is like. I cannot afford it to try it out =/ I like SuSE and suspect it is pretty good.

Thinking about this problem for a while I have come back around to FreeBSD -- my hands-down recommendation for any non-Java deployment. I have been running staging servers on the bootstrapped 1.4 JDK and they have been running great. The ports libraries have some issues with Java in that a number of the core pieces (Tomcat, Ant, etc) require the 1.2 JDK, but that is an easy workaround and if the systems seem to work right just a couple patches back to the ports maintainers to clean it up some. I haven't benchmarked applications yet -- and I need to in order to make sure there is no serious performance hit (I am used to thinking of Java running on FreeBSD using linux compat mode, which it doesn't now, but it is still a source tree originally written for Linux and patched to work on BSD).

3 writebacks [/tech] permanent link