It's nice to see the pendulum swing back to static analysis of your code. If you want static code analysis, GWT is very stable and all the issues worked out, which there will be in a 1.0 release. GWT's UIBinder is one 2.0 feature that cleans up your code quite a bit while keeping static code analysis. The compiler will error when Java code refers to UIBinder's HTML markup that doesn't exist.
When a piece of data come in, store it everywhere you need it. This might be aggregated tables (if you don't use indexed views) or whatever you may need. If you have background processes like ETL, you'll use a lot of your hardware for processing at the expense of queries.
Avoid ETL. You've got one shot to store your data everywhere.
I've been following NaCl, and it worries me that the compiled code only works on a particular version of Chrome. NaCl 0.5 only works with Chrome 14, 0.4 works with Chrome 13, etc.
Downtime comes from people. The more people involved, the more downtime you'll have.
Two weakest points of Java are:
1) Date/Time objects
as compared to C#/.Net -- having worked professionally in both. No langauge is going to fix these two.
(Though you can use Joda for date/time handling.)