One of the big problems with deployed GWT apps has always been the
impossibility of tracing JavaScript exceptions back to the Java source
code. What we need is a true equivalent of Java stack traces.
There was an effort made by the GWT team a couple years ago to solve
this problem (
https://code.google.com/p/google-web-toolkit/wiki/WebModeExceptions
), and it was a good start, but unfortunately they gave up without
producing an adequate solution. If you've ever tried to use the
compiler.emulatedStack.recordLineNumbers setting, you know that it is
badly broken: the line numbers and file names reported in the stack
traces are incorrect most of the time, while the the resulting
compiled JavaScript is 70-90% larger than the original. The way this
feature is currently implemented, the compiler puts instrumentations
in the wrong places most of the time, doesn't do enough to optimize
for code size, and does not provide enough information via symbol maps
for StackTraceDeobfuscator. On Chrome, theoretically we could use
compiler.useSourceMaps instead, but that feature is badly broken too.
I have spent the last 2 months working on this problem full time, and
I almost have the perfect solution ready. But I'm an indie developer,
and I can't really afford to go unpaid much longer, because I've
already put business aside for two months to work on this (originally
I thought it would take a week, but I kept finding more and more bugs
and tricky problems to solve, which is why I'm guessing the original
developers gave up on seeing this project through to fruition).
If I started a crowdfunding campaign to help me fund this work to
completion, would you or your employer be willing to contribute? The
original Google Atlanta team did an amazing job developing GWT for 10+
years, but those guys are all gone, and Google has not had a dedicated
team working on GWT since last summer, so I think it will be up to the
user community to fund its future development from now on.
My goal is perfect JavaScript stack traces with exact Java line
numbers, with only a 50-60% output size increase and similar
performance metrics. For browsers that support sourcemaps (only
Chrome for now), there will be no output size increase at all, because
I intend to fix all the bugs associated with the
compiler.useSourceMaps feature as well.