With GWT, we can write code in Java and have it translated to JavaScript code.
With Script#, we can write code in C# and have it translated to JavaScript code.
It sounds GWT and Script# will save web developers from suffering javascript pains. Then, why these tools haven't been dominant? Why still people dedicated to write javascript code?
Multiple reasons, and which one is most important differs from developer to deverloper. Here are two:
- Because JavaScript is a more nice/flexible/powerful/(insert adjective of choice here) language than Java/C#
- People don't trust the output generated by GWT/Script#
I can speak for only GWT, but here's the things that I think are holding it back:
- compile time (GWT takes a long time to compile, javascript changes are instant)
- learning new language (a lot of web developers don't know how to code java)
- FUD over leaky abstractions and compiler. People fear a compiler making javascript for them and the leaky abstractions thing. Both are just FUD in my opinion, but that's doesn't make it any less of a reason.
- people often don't understand where and how to use GWT and are put off by it because they try to wedge it into the wrong holes.
- There's a perception that GWT was created to allow back end developers to code javascript, but it's not the case at all.
- The whole idea of using VerticalPanels, HorizontalPanels, FlowPanels and FlexTables is foreign to people who have already learned how to lay things out in HTML.
- Google is bad at marketing. No offence GWT guys, but if it was marketed/showed off a bit better it would have taken off like hotcakes
- Lack of great widget libraries for GWT. The widgets that come with it by default are good, but we need a bit more. Libraries like GWT-ext aren't helping in my opinion, because they are just attempts to wrap javascript libraries in GWT, and don't take advantage of the power of coding in Java.
- Steep learning curve for web developers, because it's framework is more Swing like than HTML like.
I still use it in my day to day coding, but I've long accepted that it's not about to take off.
For UI development, working in JavaScript is significantly less painful that Java. Would you use a framework which translated assembler to Java to write your Java apps?
Most of the 'pain' with JavaScript was due to browser incompatibilities, which has changed due to large JavaScript libraries (eg dojo), and improvements in the browsers themselves.
Because of Leaky abstractions and because Javascript is a much more elegant and suitable language for ui than Java or C#.