As an aside to the Java-to-C# thing, I've been doing a crap-ton of Javascript recently, and I'm afraid my initial fears have been confirmed: it's major shortcoming is its lack of static checking or analysis. I'm not sure if it's a terminal problem yet, but I suspect it might be. If good tools become available which shore up this capability then it might be OK. But the tools that exist (though cool and show promise) just don't do enough.