If you want your web site to be more interactive, you can use some of the many "scripting" languages: - perl, PHP, python, and so on to create "dynamic" pages. Often these work using a technology called "CGI" (Common Gateway Interface). Each time such a dynamic page is requested, the server finds the script, starts the program to run it, runs the script, and sends the output back to the person who requested the page. This can be cumbersome and slow, but there is a better solution. Some servers understand the idea of loading code just once at the start, and running it directly to generate pages. This approach is usually much faster (there is no need to read a file and load an interpreter for every request) and has the huge benefit of being "stateful". A stateful application is one which remembers what has happened before. A stateless application is one where each request happens on its own and knows nothing about what has gone before.
As a Java developer, I prefer to write my web applications using Java. Running Java web applications on a development machine at home is easy. Finding a hosting provider on the internet that offers the right combination of features and price, and who actually know what they are talking about is strangely hard. Every week I have people ask me if I know a good way of putting Java on the web, so here is a selection of the providers I have found, with detailled comments where I am personally familiar with them.
I'll try to keep this list as up-to-date as I can, but the internet is always a moving target. If you have any other suggestions for adding to the list, or if you spot anything which is glaringly out of date, please let me know.
The list below is in three sections:
- Regular Java hosting, shared with other users
- Private JVM on a shared machine
- Complete "dedicated" machine to yourself
Regular Java hosting, shared with other users
|Lunar Pages||Server: Resin Space: 3000MB Bandwidth: 40GB Cost: $9.95|
Lunar Pages offer a nice balance of power, features, cost and support. I like them, and I know several other people who are also very happy with them. The price is great - Lunar Pages position themselves in the very competetive "general hosting" market, and need to keep the price keen to get business. That makes it a great deal for us Java web application developers. The basic "shuttle" account is $7.95/month, and offers 3000MB of storage, 40GB of bandwidth (a huge amount, you are really unlikely to exceed it) and all the trimmings such as PHP, Python, perl, MySQL, loads of POP email boxes etc. etc.
The trick is that for just $2 extra a month they offer about the best Java service you can get without having your own Java Virtual Machine or your own server. They use Resin, my favourite servlet container, which is fast, robust, standards-compliant, and powerful. In particular, Resin is very good at recognizing and deploying uploaded war files. You can run multiple web applications on a single account simply by uploading pre-packages web application files. Of course, you can just upload some JSPs if that's all you need, but all the power is there waiting for when you want it. This is an important distinction. Most of the Tomcat-based shared accounts from other hosts just give a single pre-expanded web application directory to put a few JSPs in, and pre-pacakged war files simply won't work.
In general their service seems to just work. They have a bulletin board for questions and support, which seems to get regular attention from the system admins. I've not had to contact them much by other means, but whenever I have, the reply has been quick and knowledgeable.
My only minor complaint is that Lunar Pages don't make a big fuss about Java on their front page, and you have to make sure to check the $2/month "JSP/Servlet" option when you sign up. I have this feeling that they haven't realized just how cost-effective multi-application Resin hosting for under $10/month really is. I suggest you snap one up before everyone else notices.
|CWI Hosting||Server: Resin Space: 1500MB Bandwidth: 30GB Cost: $30.00|
|If you need more power than Lunar Pages have to offer, then CWI Hosting offer Resin hosting with a bit more space and bandwidth, but of course it costs a bit more money. Their main product is the "power plan" (1500MB/30GB/$30) which includes the Java support, but they also offer a 500MB/15GB "starter" service for $15 with optional Java support for an extra $5.|
|Javaservlethosting.com||Server: Tomcat Space: 100MB Bandwidth: 4GB Cost: $14.00|
|Javaservlethosting.com specialise in just Java hosting. If you want a basic shared Tomcat account that's just what they offer. Don't expect to be able to do general Java development with them, though. They only offer a Java Runtime Environment instead of the full development kit with compiler, debugger and so on. They don't have much on-line support, and as far as I can tell, they only support a single, pre-expanded web application. If you want to deploy pre-built war files, check with them before buying.|
|Javapie||Server: Tomcat Space: 100MB Bandwidth: 2GB Cost: $9.95|
|Another choice for basic single-application Tomcat hosting is Javapie. Their web site appears a bit amateur, though.|
Private JVM on a shared machine
|SuppleHost||Server: Tomcat Space: 256MB Bandwidth: 10GB Cost: $18|
If you really feel you need a private Java Virtual Machine (JVM) so you can stop and start your servlet/JSP container whenever you like, probably the cheapest and most effective hosting provider is SuppleHost. There's always a tradeoff, though. It costs a bit more each month than a shared-VM provider such as Lunar Pages, and you get less storage, less bandwidth and fewer other features, but you do have that final control. You also get a Tomcat servlet/JSP container, which is not so good at detecting and reloading web applications as Resin, but may be more familiar if you have it at home.
SuppleHost offer a few cheaper hosting offerings, but they don't offer Java. Only the "platinum" account (at $18/month) and the "e-commerce" account (at $33/month) include the Java servlet/JSP container.
In my mind the biggest problem with the SuppleHost service is that they place quite strict limits on the amount of memory available to your private JVM. For obvious reasons they don't want a whole bunch of customers fighting for the memory on their hosting machines, so they cap each JVM at 32MB. I recommend that if you use this service, you should make sure that you thoroughly test your applications with restricted memory, because it's a significant extra charge if you find you need more, later. bear in mind, though, that this restriction gives you full control of that 32MB. No other user can have any of it. If you are considering a "private JVM" service from any provider, don't just assume you get gigabytes to play with. Make sure you ask how much memory you get and who else has access to it, before you part with your cash.
|KGB Internet||Server: Tomcat Space: 200MB Bandwidth: 1GB Cost: $20 CDN|
|I've not used KGB Internet myself, but they have been recommended to me, so they are probably worth checking out. Note that these days 1GB of bandwidth is quite small. It's OK for tinkering, but if your site becomes reasonably popular, or you provide a few large downloads, you can easily exceed that.|
|Arachsys||Server: Tomcat Space: varies Bandwidth: varies Cost: varies|
|Arachsys are hardly a big player, but I have been a customer for several years now. They provide a private JVM runing Tomcat, but the connection to the front-end Apache server is not especially well configured, so not all information gets through to the Java code. They don't have a fixed pricing structure, so you will need to negotiate, but bear in mind that they don't offer much by way of bandwidth, so I tend to use their server solely for experimental projects where I need to mess around with the system. For deploying live applications I go somewhere with more power, such as Lunar Pages, above, or to a dedicated server, below.|
|Kattare||Server: Tomcat Space: 100MB Bandwidth: 2GB Cost: $29|
|Global Servers||Server: Tomcat Space: 5GB Bandwidth: 50GB Cost: $49|
Complete "dedicated" machine to yourself
|One and One||Server: Tomcat Space: 40GB Bandwidth: 10GB Cost: 29 GBP (approx $50)|
If you would prefer complete control over your machine, with all the memory and disk space to yourself, you need what is known as a "dedicated" server. There are hundreds of providers offering dedicated servers, but if you want to run Java and you don't have a lot of system administration experience, I suggest you should mainly consider ones who offer Java servlet and JSP "built in".
One and One offer great prices and service to UK customers at the moment, and they plan to launch a similar service in the USA soon. Their dedicated server prices are among the lowest I have seen: a whole computer with a 2GHz CPU, 256MB RAM, 40GB drive, a full Linux installation and a powerful and friendly web control panel to manage multiple domains, multiple customers, multiple servers ... With a setup like this you can run your own hosting business.
I have an account with One and One, which I use to build and manage static web sites for local customers, and I have found their reliability and support to be excellent. I especially like the way they actively encourage you to serve multiple domains from your account, at no extra cost. With a lot of other providers you have to buy a whole new account if you want to add another domain.
|Powerraq / uk2.net||Server: Any Space: 40GB Bandwidth: 40GB Cost: 29 GBP (approx $50)|
|If you know what you are doing, can install and configure your owne software, and are happy to do your own system administration, you can get a slightly better deal from somewhere such as uk2.net. They offer a 2.4GHz CPU with 512MB RAM, 40GB drive, and 512GB/year bandwidth (just over 40GB/month). Bear in mind that to get thie price you need to pay for three years up front, and that commitment may not be for everyone.|
|Memset||Server: Any Space: 2GB Bandwidth: 20GB Cost: 19 GBP (approx $32)|
|A possible alternative to a fully dedicated server is a "miniserver" such as the ones offered by Memset. What you get is a "slice" of a full machine. You have 64MB RAM to play with, and "root" access to configure your "miniserver" as you wish. There are 32 users per machine, so you only get 1/32 of the CPU power and network throughput, but it's still quite a low cost way of getting more control than a regular shared machine. Bear in mind that you will need to install, configure, and maintain all your own software, though.|