what's the best hosting for java web application? Amazon . com Ec2 - would be to costly (about 60$ per small instance per month) Google Application - isn't flexible in persistence and never fully support JDK
"best" for which purpose? The purpose of Amazon . com EC2 is you can scale up easily in support of purchase that which you use.
If scaling isn't an problem for you (i.e. you do not have many concurrent customers and do not expect this to alter rapidly), then your best option is most likely an online root server (provided by virtually any general hosting provider nowadays). It provides maximal versatility for any low cost, however with limited performance, also it requires you to definitely handle administration yourself.
javaservlethosting.com is fairly cheap if you use tomcat and do not use hibernate. I switched to cloud on softlayer.com once i got the data which i can't use hibernate. They've some very good deals but things are over $60.