I'm planning to deploy a Web application which I want to expose to all people on internet. I can buy a domain name, and redirect it to a public host which hosts my J2EE application. Whom should I choose for hosting my web app? What are my hosting options? I want good performance for better user experience. And price is definitely a concern.
You won't be able to find J2EE web hosting easily. They're a function of (price*scalability*functionality) and usually just not worth it.
On the other hand, you could pick up a VPS like linode, slicehost, or prgmr and set up your own server. That'd be the best choice for price in my opinion, a prmr instance will only run you a few bucks a month, but you have to know your way around a *nix box to set yourself up.
I also found that the availability of Tomcat hosting was limited last time I checked. I'm using Amazon AWS now as it's affordable and easy to scale up and out if needed. They're offing a basic micro instance with 1 processor, 640MB of RAM and 10GB disk space free for one year when you sign up as a new customer. This should be enough to get started then their pricing after that's very competitive and you can switch servers on and off as needed with only an hours notice.